LogiWiki logi_wiki http://logi.wiki/index.php/Main_Page MediaWiki 1.40.0 case-sensitive Media Special Talk User User talk LogiWiki LogiWiki talk File File talk MediaWiki MediaWiki talk Template Template talk Help Help talk Category Category talk Campaign Campaign talk Module Module talk Gadget Gadget talk Gadget definition Gadget definition talk Shiny Shiny talk Main Page 0 63 7686 7680 2024-08-30T01:00:51Z CBax 996 /* Welcome to Logi.Wiki */ 7686 wikitext text/x-wiki =='''Welcome to Logi.Wiki'''== This site is dedicated to sharing known good information about logic board repair. Please post only information that is proven. If you find anything incorrect please edit or leave notes so it can be corrected. Feel free to contribute, this is a group effort. You can use the “discussion” or talk pages to discuss changes to the current info or ask questions. <br> == '''We now have a Discord! Please [https://repo.doslabelectronics.com/misc/logicord.html click here] for the invite link.''' == <strong><span style="color:red">If you need any help</span></strong>, contact @cbax on discord or visit the [https://doslabelectronics.com/contact DosLab Electronics contact form]. [https://www.facebook.com/profile.php?id=100082550894310 David Roberts] is also available on Facebook, you can tag him in the [https://www.facebook.com/groups/MacBookLogicBoardRepair MacBook Repair Community] group. PLEASE SEND ME ANY FEEDBACK OR SUGGESTIONS YOU HAVE TO MAKE WIKI BETTER! <br /> =='''Categories'''== {| class="wikitable sortable" style="width:100%;" |- style="vertical-align:top;" | style="width:33%;border:none;" |{{#categorytree:Mac|depth=0}} | style="width:33%;border:none;" |{{#categorytree:iPhone|depth=0}} | style="width:33%;border:none;" |{{#categorytree:iPad|mode=all|depth=0}} |- style="vertical-align:top;" | style="width:33%;border:none;" |{{#categorytree:Troubleshooting_Guide|mode=all|depth=0}} | style="width:33%;border:none;" |{{#categorytree:Game_Consoles|mode=all|depth=0}} | style="width:33%;border:none;" | |} =='''All pages'''== {{Special:AllPages}} =='''Recent Contributions'''== {{Special:RecentChanges|limit=15|days=7}} =='''Top Users'''== {{Special:ContributionScores/10/180}} ==Special Thanks== Special thanks to Jonathan Zufi for his [http://iconicbook.com Iconic Book]! Its a cover to cover treasure for any Apple lover. [[File:Iconic Book 1.jpg|800x800px]] 9xcgefc15bj7xfq90lpturci3j1sacq 1 TODO 0 694 3153 2930 2020-10-10T15:19:06Z Chrisb 1 /* Chris */ 3153 wikitext text/x-wiki ==Martin== #security audit #robots.txt file (https://www.mediawiki.org/wiki/Manual:Robots.txt) (https://en.wikipedia.org/robots.txt) needs to be done after short URLs https://support.google.com/webmasters/answer/6062598?hl=en #setup sitemap on schedule #JSON-LD #contributors page with link-backs ==Chris== #Iconic book #1 year cookies #Sync crontab #More MySQL tuning https://www.linode.com/docs/databases/mysql/how-to-optimize-mysql-performance-using-mysqltuner/ #IP and hostname at bottom #Gluster #SQL replication #Allow Overrides /var/www in script (copy Apache conf?) #Short URLs in testVM #Visible to group [[Visible to group::Shiny]] not [[Visible to::whitelist]] (images and created pages) pke19eo2ufr1z2619hmp5q650zqvzoq 820-00165 Boot Up Diagram 0 330 807 2020-03-25T22:11:37Z Chrisb 1 Chrisb moved page [[820-00165 Boot Up Diagram]] to [[G3 to S3 State for Ivy Bridge Haswell and Broadwell]]: Expanded scope 807 wikitext text/x-wiki #REDIRECT [[G3 to S3 State for Ivy Bridge Haswell and Broadwell]] 08azksrnfuv7867icn6i532uicqwrts 820-00165 Pulsing 0 2 6200 5476 2021-10-23T01:25:33Z Vlad 520 added a case I had today with pulsing voltages every 5 seconds on 820-00165 I had today. Might be helpful 6200 wikitext text/x-wiki Pulsing every 2 seconds is typically SPI ROM communication issue. Pulsing once or twice can be sensor issue, try SMC bypass and double check charger circuit current sensing (resistance between pin 17/18 and 27/28 of U7100). There can also be an issue with some power rails such as a short to ground on S3/S0 rail. One thing that can happen is the DDR voltage regulator boost test point gets eaten away, that will cause single but longer spike. There are a few other things such as issue with U1950 and PCH HSIO switch. Don't remember the exact symptoms they cause though. So yeah, can be a lot of things. Inspect very carefully the board for any corrosion, broken traces or test points… And never forget J6100. (no need to destroy it everytime, but at least inspect and clean it) Probably power cycling when U1930 is on the board. (if U1930 is not on the board, the CPU will not start so SPI ROM won't matter) Usually communication issue with SPI ROM If you have an oscilloscope you can check for activity on BIOS CS# pin also 2ms is no communications around 200ms is success. There should be intermittent bursts after that. ME: 8.2v on an Air PPBUS means no SMC right? I've got a board that was supposedly liquid damaged by the end user. Board is really dirty but no signs of corrosion anywhere. I have no green light on charger. I'm tracking through the amazing 00165 diagram. I have 3.42 at SMBUS_SMC_5_G3_SDA and SCL. SMC_RESET_L is 3.3 What am I missing in the SMBUS 5 comm? Junk under SMC or bad SMC? Also of note, SDA and SCL stay high. There is no clock or data that I can see. no SYSCLK_CLK25M_SB either. I'm not sure when that comes in. "Junk under SMC or bad SMC?" → most likely Thanks. 25Mhz is when the PCH wakes up? On this board it doesn't even matter as it's only used for some peripherals. The PCH has its own 24MHz crystal (that does matter in S0 state) '''Louis Rossmann''': CPU_VCCST_PWRGD area being low would cause 500 ma then 24 ma, spiking three times, then dead. '''Piernov''': Check if CPU VCore pulses too. If it doesn't, check for a pulse on ALL_SYS_PWRGD and PM_PCH_SYS_PWROK. If CPU VCore pulses, you most likely have an issue with SPI ROM, or SPI resistors and traces (or stuff on J6100).<br />If CPU VCore and PM_PCH_SYS_PWROK don't pulse, but ALL_SYS_PWRGD does, you have an issue with U1950 circuit. ==Case== ===Pulsing once / Quarter fan spin / Full S0=== Board turns on to a full S0 state then shutdown. Might occasionally turn on, works in SMC-Bypass mode. Was discussed many times on Rossmann' forum no solution known until recently. Reason: SMC is attempting to start but then aborting and shutting itself down. If PP3V3_S5_AVREF_SMC is not present, SMC shits itself and shuts down. PP3V3_S5_AVREF_SMC Line should be 3.3V when on with MOhms to ground when off. Resolution: Look for crap on U5110-pin 8, C5020, C5021, C5125, and C5126 - anything connecting PP3V3_S5_AREF_SMC to ground (GND_SMC_AVSS). Also, be sure all traces coming out of the SMC look okay and that no test points have been dissolved - test continuity on either side to double check anything that looks questionable. If SMC reset works, U5110 is probably okay and does not need to be replaced, but it's not a difficult chip to swap from a donor. Finally, there could be crap under SMC. [[Diode mode BGA continuity check|Continuity to SMC]] pin can be checked in diode mode if you remove U5110. Be sure to test the other items listed here before doing something drastic like reflowing your SMC. ===Pulsing twice=== '''Nobluesky''': 820-00165-A. Refurb Apple.<br /> Green->Orange, no reaction pwrbutton. Oscillates twice between 300-500mA, then 2-3 times 15-22 then settles at 22mA<br /> Pin 4 bios solder starved. Pin 9&10 U7501 dirty<br /> CPU_VCORE res to gnd 17.8 Ohms. No short between PPBUS and VCORE (12M)<br /> '''piernov''': If it goes up to 500mA then CPU VCore should at least come up at some point (so SLP_S4# necessarily comes up as well). Try SMC bypass.<br /> '''Nobluesky''': fan starts twice for 1s with 5s pause inbetween. Subsequent presses generate one 1s spin, not two. VCORE turns on for a split second.<br /> '''piernov''': Check charging circuit current sensing<br /> '''Nobluesky''': R7121 & R7122 are 10.6 10.4 Ohms. No broken path. No short. R7152 0.4 and R7151 2.9 Ohms. Not the ISL.<br /> Missing enable on pin4 and S4_PWR_EN.<br /> '''piernov''': you're not missing S4 since CPU VCore comes up.<br /> '''Nobluesky''': What makes Vcore and rails come down again... Checking for shorts again on S4, maybe I missed something.<br /> '''neola''': current sense I might say<br /> '''piernov''': Yes, current sensing can cause that. And some other stuff such as an event happening on a power rail later in the power sequence. Maybe even EFI.<br /> '''neola''': SMC_PBUS_VSENSE is a signal you might want to look at<br /> '''piernov''': PPBUS_G3H and PPDCIN_G3H voltage sensing should be disabled when starting in SMC bypass mode (although I'm not 100% sure of that)<br /> '''Nobluesky''': Seeing it doesn't come on with SMC bypass, the issue is deeper. Gonna get a dirty SPI rom<br /> '''piernov''': You can check the usual signals at the end of the power sequence like SYSPWROK, VCCST_PGOOD, PLTRST#… And the PCH HSIO rail, IIRC it doesn't have a power good signal associated with it but can be causing issues.<br /> '''Nobluesky''': PLT_RESET_L "blinking" on too.<br /> '''Nobluesky''': Known good EFI, no change. No fan spin. With SMC bypass, quarter fan spin two times. All subsequent presses on power button give another quarter fan spin. As a reminder, EFI CS pin looks like this (and stays up afterwards, there is no more communication after that, so I trucated it).<br> [[File:CS pin 820-00165.jpg|thumb]] '''piernov''': @Paul L Daniels fixed his with the USC.<br> '''ChrisB''': Did you check all SPI resistors @Nobluesky?  Traces?<br> '''Nobluesky''': SPI resistors all good. Traces too of course. I swapped U6101 already.<br> '''piernov''': Or an issue on one of the SPI ROM line when trying to work in Quad SPI mode maybe.<br> '''Nobluesky''': Okay, not the SMC.<br> '''ChrisB''': Maybe PCH issue.  It was basically bootlooping as soon as the PCH got power right?<br> '''Nobluesky''': Yes. === '''Pulsing every five seconds''' === Had a case with all voltages pulsing every 5 seconds. In my case it was failed R1275<br /> [[Category:Mac]] [[Category:MacBook]] [[Category:MacBook Air]] 82tg2a7xj1m0sjpnyev7o37sbxq138h 820-00165 RAMCFG straps right configurations 0 2267 7092 7091 2024-04-29T23:02:28Z MaxShevelev 1008 7092 wikitext text/x-wiki As many people may noticed, the RAMCFG straps configuration provided with Apple schematics is not 100% correct. I've attempted to collect the right configurations taken from the real 820-00165-A boards that I have on hand. {| class="wikitable" |+ !Vendor !Size !CFG0 !CFG1 !CFG2 !CFG3 |- | | |<small>R2053:L<br>R1611:H</small> |<small>R2052:L<br>R1635:H</small> |<small>R2051:L<br>R1636:H</small> |<small>R2050:L<br>R1631:H</small> |- |Hynix |4Gb |'''L''' |'''L''' |'''L''' |'''L''' |- |Hynix |8Gb |'''H''' |'''L''' |'''L''' |'''H''' |- |Samsung |4Gb |'''L''' |'''H''' |'''L''' |'''L''' |- |Samsung |8Gb | | | | |- |Elpida |4Gb | | | | |- |Elpida |8Gb |'''H''' |'''H''' |'''H''' |'''L''' |- |Micron |4Gb | | | | |- |Micron |8Gb |'''H''' |'''H''' |'''L''' |'''H''' |- |Hynix |16Gb | | | | |- |Samsung |16Gb | | | | |- |Elpida |16Gb | | | | |- |Micron |16Gb | | | | |} Please contribute to fill in the missing data. 0le21z1f1vp761r2flzyo1z0u2pvels 820-00928 no image on lcd 0 1935 5735 5733 2021-04-12T14:27:45Z Chrisb 1 5735 wikitext text/x-wiki '''<big>THIS PAGE IS INCOMPLETE. THERE ARE MANY TROUBLESHOOTING STEPS TO ELIMINATE OTHER POSSIBLE ISSUES. THIS IS ONLY ONE POSSIBLE CAUSE OF NO IMAGE ON LCD.</big>''' Board boot with chime sound but nothing on internal lcd. Disconnect lcd to force external display, image ok on external display. Change MUX chip U9850 ( nxp 6142e ), all good. [[Category:Mac]] nj5axrnm98gg3quyp45uooiv16p6md2 820-01055 Keyboard and Trackpad 0 2004 6214 6213 2021-11-10T23:05:38Z Nobluesky 182 typo fix #2 6214 wikitext text/x-wiki ==MacBook Air Retina 13" 2020 - 820-01055== The MacBook Air Retina 13" 2020 with board number 820-01055 has the T2 Chip. I've made a new discovery about serialisation. A 820-01055 came to me water damaged, no sign of life. I opened the board and saw that the trackpad got pretty wet. A lot of corrosion on the connector, the flex cable was burned and some chips on the trackpad looked ugly. The MacBook works as long as I unplug the trackpad/keyboard flex. I changed the trackpad for a new one, I bought a new flex cable, the MacBook works but... I can't : Press Q (A for Qwerty keyboard), D, all the Function keys. So I bought a new keyboard... took everything out of the case and changed it with the new one => Same problem. Asking on the Discord someone gave me a clue : There is a T2 chip on this model so there must be some serialisation.... So I took off the ST32F103B6 chip from the original trackpad - WARNING : it's an underfilled chip be careful. I took off the same chip from the new trackpad and put the Original ST32F103B6 on the New trackpad - WARNING : Protect everything around this chip with kapton tape and be careful. Then I got a working MacBook Air with working keyboard and trackpad. One last thing I wanted to try is the daughter board 820-02005-A. This board get the connection for keyboard, keyboard backlight, and trackpad link. This board also has two chips for keystrokes and some others related to keyboard. When I put a new daughter board on this MacBook, I lost the FN keys... ===In Conclusion=== MacBook Air 13" 2020 (820-01055) have some T2 serialisation on keyboard and trackpad : You can change just the keyboard without issues. You can't just change the trackpad, nor the daughter board. If you need to change the trackpad, you need to have with you the original ST32F103B6 chip that came from the original trackpad. If you need to change the daughter board, you need to have with you the 4BRT chip that came from the original daughter board. For the moment I don't know if there is a way to dump some chips in order to reprogram them more easily because swapping ST32F103B6 is dangerous. liowlkpaewo48n2oxv8h0d99r2m5mbg 820-01055 Power On Sequence 0 598 5308 1247 2020-12-07T14:22:58Z Chrisb 1 Changed redirect target from [[T2 and CD3215 Power on Sequence]] to [[T2 and CD3217 Power on Sequence]] 5308 wikitext text/x-wiki #REDIRECT [[T2 and CD3217 Power on Sequence]] 886kc6m30vtc32z6n63hstdsq19uipe 820-01598 Power on Sequence 0 620 5307 1282 2020-12-07T14:22:37Z Chrisb 1 Changed redirect target from [[T2 and CD3215 Power on Sequence]] to [[T2 and CD3217 Power on Sequence]] 5307 wikitext text/x-wiki #REDIRECT [[T2 and CD3217 Power on Sequence]] 886kc6m30vtc32z6n63hstdsq19uipe 820-2850 0 1812 5315 5312 2020-12-08T23:54:23Z Chrisb 1 Redirected page to [[A1286/A1297 Common Issues#2010]] 5315 wikitext text/x-wiki #REDIRECT [[A1286/A1297 Common Issues#2010]]<br /> 1wys7ywbs1c9uih7y2og2ot2evlu56g 820-3115 Common Issues 0 9 529 9 2020-02-02T11:07:19Z Piernov 10 Category Mac MacBook MacBook Pro 529 wikitext text/x-wiki One beep every 5 seconds Check RAM and slot first!! Hi, check and compare pch smbus connections R5201/R5200 diode mode, continuity and resistors value. Anything on the SMbus may cause the one beep error. More often the led backlight. If diode mode is low try removing R9753/R9757 and see if diode mode on smbus come back to normal value. [[Category:Mac]] [[Category:MacBook]] [[Category:MacBook Pro]] dyss98soap5q0a0hha8uojav08rehf1 820-3437-B With Multiple Sensor Issues 0 2080 6306 6216 2021-12-15T14:12:12Z Chrisb 1 Chrisb moved page [[820-3437-B multiple sensor issues]] to [[820-3437-B With Multiple Sensor Issues]] without leaving a redirect: Title Formatting 6216 wikitext text/x-wiki '''The problem:-''' 70% CPU usage when idle, machine slow, need to hold power button for power up, however, sometimes the system still fails to power. ASD faulting sensors (IC0R, ID0R, IM3C, ISDC, PB1R, PC0R, PDTR, PPBR, PSDC, VC1C, VCS0, VP0R). Device takes 0.06MAh. '''Issues found/fixed:-''' PBUS_S0_VSENSE missing - Q5500 Pin 3 via severely corroded. Ran jumper to R5503 Pin 1 to restore, issues persist. C5021 turned into 1Ω. Capacitor replaced, issues resolved, and ASD passed diagnostics. [[Category:Mac]] [[Category:MacBook]] [[Category:MacBook Air]] 34ejmuuisxmjclv3wh62cpm38ae58c0 A1237 HDD/SSD 0 1826 5425 2021-01-03T15:49:53Z Piernov 10 Created page with "The MacBook Air Original (Early 2008) A1237 uses 1.8" IDE drives with ZIF connector as a storage device. The HDD are slow, not reliable and start getting expensive as working..." 5425 wikitext text/x-wiki The MacBook Air Original (Early 2008) A1237 uses 1.8" IDE drives with ZIF connector as a storage device. The HDD are slow, not reliable and start getting expensive as working ones go rarer. There are some 1.8" IDE SSD available on Aliexpress, but they are still expensive for what they are (more than $50 for 64GB). One solution could be to use an mSATA to IDE ZIF adapter board, but unfortunately this does not work. They use JMicron JM20330 controller, and it does not seem to be recognized at all on the MacBook Air Original. Another solution is to use an SD card inside an SD to CF adapter, and plug that adapter into a CF to 1.8" IDE ZIF adapter and this actually works. Both adapter should cost less than $12 in total, and then you can get a good SDXC 64GB card for less than $18, so you get 64GB of Flash storage for less than $30. Note that the MacBook Air Late 2008/Mid 2009 A1304 uses SATA drives so this method will not work. <youtube>AOGhTUJiUz4</youtube> 7dryjrunsev9ulzuzwlpog7robuopxr A1278 Common Issues 0 96 530 189 2020-02-02T11:07:40Z Piernov 10 Category Mac MacBook MacBook Pro 530 wikitext text/x-wiki == 2009 == == 2010 == == 2011 == == 2012 == HDD cable has a high failure rate, substitute a 2011 cable. RAM slot closest to KB fails from mechanical stresses and causes intermittent RAM issues. [[Category:Mac]] [[Category:MacBook]] [[Category:MacBook Pro]] jovbr5u3f4185yatp1fsmxxj1sikccd A1286/A1297 Common Issues 0 95 6938 6937 2023-09-28T09:14:39Z Alex6337 28 Restructured page to have main common issues and less common issues. 6938 wikitext text/x-wiki == Common Issues == === 2008-2009 === * '''820-2330, 820-2390, 820-2532, and 820-2610''' ** C7771 loses capacitance and lowers the voltage. This can cause green light but no power or some random instabilities. It can cause no power with only 0.3V on the MCP standby rail, but could also cause some random instabilities ** 820-2523 and 820-2533 are not affected === 2010 === * '''820-2850''' ** C9560 loses capacitance and lowers the voltage. This can cause intermittent crashing especially when switching graphics processors. It can also cause no video. ** '''820-2849 is not affected by this problem.''' === 2011 === * '''820-2914, 820-2915''' ** AMD GPU fails due to thermal issues. Bypassing is the only way to fix. Check [[Demux]] page for more info. === 2012 === * '''820-3330''' == Less Common Issues == === 2008-2009 === * To be completed === 2010 === * '''820-2850''' ** '''Intermittent green lines''' on black background, '''and pink lines''' on white backgrounds (menu backgrounds). Problem with GMUX soldering (U9600 - LFXP2-5E Microcontroller), probably due to a drop. '''MUST BE CONFIRMED''' by pressing on U9600 with your finger. The problem varies with pression on the chip (disappear and reappear with pression on the chip). *** Reflow did not work. Reballing is required. *** Video of @piernov showing the problem : https://www.youtube.com/watch?v=TrtilbAfmy8&ab_channel=piernov *** 820-2849 could be affected too... (after all, it's the same chip...) === 2011 === * '''820-2914, 820-2915''' ** To be completed === 2012 === * '''820-3330''' ** To be completed <br /> [[Category:Mac]] [[Category:MacBook]] [[Category:MacBook Pro]] 6uuiup162m5n4pd5k99xoeakqvs62ag A1286 Common Issues 0 100 212 2019-11-23T14:57:32Z Chrisb 1 Chrisb moved page [[A1286 Common Issues]] to [[A1286/A1297 Common Issues]]: Including similar issues with 17" MBP 212 wikitext text/x-wiki #REDIRECT [[A1286/A1297 Common Issues]] 812kskn46u562uv8zhpecw1rkob9xmi A1311/A1312 Inverter 0 46 1351 532 2020-06-16T20:26:50Z Chrisb 1 1351 wikitext text/x-wiki (NEEDS REVISION, using oscilloscope without an isolation transformer) Failing inverters seem to have more than a 3v amplitude on the input and output rails of the inverter. Input on a good inverter is steady at 12.4V with less than 2V amplitude. Output may vary with model and brightness. 2010 A1312 was measured at 40V. A1311 2009 V267-701<br> 1x 35V 270uF 8mm x 16mm x 4mm<br> 2x 100V 33uF 8mm x 12mm x 4mm<br><br> A1311 2011 V267-707<br> 1x 25v 270uF 8mm x 16mm x 4mm<br> 2x 100V 33uF 8mm x 12mm x 4mm<br><br> A1312 2009 V267-601<br> 2x 35V 270uF 8mm x 16mm x 4mm<br> 2x 63V 120uF 8mm x 19mm x 4mm<br><br> A1312 2010 V267-602<br> 2x 35V 270uF 8mm x 16mm x 4mm<br> 2x 63V 120uF 8mm x 19mm x 4mm<br><br> A1312 2011 V267<br> 2x 35V 470 uF 10mm x 16mm x 5mm<br> 3x 100V 47 uF 10mm x 13mm x 5mm For all the input caps use 35V 470uF low ESR caps. [https://www.mouser.com/ProductDetail/661-EKZH350E471MJ16S Mouser link]<br> for the output caps use either 63V 120uF or 100V 47uF low ESR caps depending on the original output V requirements [https://www.mouser.com/ProductDetail/661-EKYB630E121MH20D Mouser 63V link] [https://www.mouser.com/ProductDetail/661-EKYA101E470MJC5S Mouser 100V link] [[Category:Mac]] [[Category:iMac]] p9xabmvke4s3ecye8evm2k85f6x6ghv A1311/A1312 Power Supply 0 658 5203 1352 2020-11-06T15:54:50Z Piernov 10 Category Mac,iMac 5203 wikitext text/x-wiki The unibody iMacs have an AC power supply that can fail due to heat over time. If you scope the 12V output you will see quite a bit of noise and ripple. Be sure to use a digital ground, the chassis ground might give unexpected results. Also be sure to scope with the screen connected, the additional load of the screen causes some of the instability. This instability can cause the disappear backlight to go out intermittently or total. You may also see bulging caps. There are two types of power supplies. TBD: list caps needed for both PS [[Category:Mac]] [[Category:iMac]] t951lr7lwlqaqbugsyx81qcc6894v0q A1347 2010-2012 common issues 0 1342 5549 2972 2021-02-07T17:45:21Z Chrisb 1 5549 wikitext text/x-wiki == Shorted Tantalum Polymer Capacitors == Tantalum Polymer Capacitors on the 5V rails can become short. These capacitors are for USB 5v line. if they become short then the mac mini will not turn on. remember capacitors polarity. check the green circled caps for short. the value of the cap is 150UF, 6.3v, Case B2. https://uk.farnell.com/panasonic/6tpg150mzg/cap-150uf-6-3v-tant-polymer/dp/2982731 === '''2010 820-2577''' === [[File:mac mini 2010.jpg|center|thumb]] === '''2011 820-3059''' === [[File:mac mini 2011 5v.jpg|thumb|center]] === '''2012 820-3228''' === [[File:macmini 2012 cap.jpg|thumb|center]] == '''Quarter Fan spin.'''  == === ''No water damage.'' === In most cases a quarter fan spin on in this year is a corrupted EFI chip. You will need to dump the proper bios of the year and model into the Mac Mini. De-Soldering the original Bios chip and reprogramming it will help resolve the issue. (be sure to follow the guide on [[/EFI#EFI ME Cleaning|cleaning the ME region]]) [[Category:Mac mini]] 7dtg7ijiojg49v4xj0dc9kgr9wobz24 A1347 2010-2014 Power Supply Voltage Test 0 1337 2956 2944 2020-10-04T20:13:24Z Chrisb 1 2956 wikitext text/x-wiki <br />Mac Mini Power supply rarely dies. A technician should test the power supply before ordering a new replacement power supply. A working power supply will show 11.90 to 12v on a multimeter. [[File:a1347 power supply 01.jpg|center|thumb]] [[File:a1347 power supply 02.jpg|center|thumb]] [[Category:Mac mini]] 2tt9a18mf2lemr24zwfdaz3mpg9f3wv A1347 SATA/SDD Flex Cable 0 1871 5536 5535 2021-02-02T19:59:17Z Alan.l 19 Alan.l moved page [[A1347 compatible Parts]] to [[A1347 SATA/SDD Flex Cable]] 5535 wikitext text/x-wiki [[File:NbecTDBRsudat45Z2.jpg|center|frameless|700x700px]] '''2014''' 821-1501-A : Upper bay SATA Flex Cable 821-00010-A : Lower Bay SSD Flex Cable '''2012''' 821-1501-A : Upper bay SATA Flex Cable 821-1500-A : Lower Bay SATA Flex Cable '''2011''' 821-1346-A : Lower Bay SATA Flex Cable 821-1347-A : Upper bay SATA Flex Cable 54-2119-02-BP (OWC) : Upper bay SATA Flex Cable '''2010''' 821-0894-A : Lower Bay SATA Flex Cable [[Category:Mac mini]] gitwxb6jebyl6fewthxv2uk4rftakem A1347 compatible Parts 0 1875 5537 2021-02-02T19:59:17Z Alan.l 19 Alan.l moved page [[A1347 compatible Parts]] to [[A1347 SATA/SDD Flex Cable]] 5537 wikitext text/x-wiki #REDIRECT [[A1347 SATA/SDD Flex Cable]] s2gskvm9x8x2k3halvnl9r1q0hs5pzp A1398 Common issues 0 4 7120 7082 2024-06-07T17:06:54Z Francis 4 /* M2012-E2013 (820-3332) */ 7120 wikitext text/x-wiki ==Mid 2012-Early 2013 (820-3332)== The MacBook Pro may appear to turn off. The fans will still spin and caps lock will still work. The internal and external displays will cut off at the same time. The external display will cut off with the internal disconnected. You may be able to reproduce the issues by tapping on the logic board The cause is that the GPU is losing power due to flexing and brittle solder around U8900 (GPU Buck converter). Solder U8900 with an iron and leaded solder. Triple check all joints under a scope. ==Late 2013-Mid 2014 (820-3662, 820-3787)== Screen off with computer on, or crashing: Sounds like the FDMF6808 chips are failing and causing black screening. You can try fixing this by replacing all 3 of them with NEW FDMF6708 or FDMF3030 chips from a reputable source like Mouser or Digikey. Possible software fix linked [https://www.reddit.com/r/mac/comments/9pyort/apple_macbook_pro_sudden_crash_fix_for_models/ here] '''If you have dedicated graphics on your board then the above fix has a pretty low success rate.''' If you have internal graphics, aka no separate graphics chip on your board then the above fix success rate is very good. ([https://boards.rossmanngroup.com/threads/820-3787-cpu-fets-what-are-the-number-of-the-pieces-to-replace.56630/#post-56640 source]) Additional notes : Symptoms are very unlikely to be a screen or screen cable issue. If you’re not getting image when this happens, then it’s not related to backlight either. Very very small chance it’s a GPU/CPU issue unless the fail is major. The FDMF chips issue arises from the board flexing. The chips tend to fail and cause the device to not wake from sleep/randomly shut down due to CPU VCore dropping out. Machine will stay on but basically never wake from sleep at times. If you’ve never messed with microsoldering before, I would recommend sending it to someone who has experience fixing this issue. If you have done board repair, then this repair is a little tedious so you want to make sure you get GOOD chips as the ones claimed to be new in China often end up being sanded down garbage to look new. ==2015 dedicated graphics (820-00163, 820-00426)== '''These boards absolutely require a good charged battery to fully boot into macOS.''' As usual it's not uncommon to get 2 or 3 bad batteries in a row so make sure you are using a known good one, one that for sure works with others 15" 2015 DG boards. With a bad battery or no battery, the machine will reboot during or at the end of macOS boot. In this case disconnecting the touchpad often allows it to boot fully since it causes throttling and lowers the overall power consumption of the machine. ==Additional insight from Tim @TCRS Circuit regarding dedicated GPU L2013-2015 and also U8900== The question was : Do you still have good success rate with mosfets on dedicated GPUs A1398?<br> <youtube>F11FKJf422A</youtube> [[Category:Mac]] [[Category:MacBook]] [[Category:MacBook Pro]] cvlxz0m8k4fh6ibgdo6j5rw5t6st6at A1418/A1419 Power Supply 0 82 534 177 2020-02-02T11:09:00Z Piernov 10 Category Mac iMac 534 wikitext text/x-wiki == A1418 == == A1419 == All graphs with display off and iMac on. Please note that the 12V rail can appear stable when these power supplies are failing. Pulsing on pin 1 and pin 3 being high seem to be signs of the power supply failing.<br> <br> 12V<br> [[File:A1419 12V Good.png|thumb|A1419 P 12V Good]] [[File:A1419 12V Shutting Down.png|thumb|A1419 12V Shutting Down]] Pin 1: PWR_BTN_R (Pulled up to PP3V42_G3H)<br> [[File:A1419 Power Pin 1 Good.png|thumb|A1419 Power Pin 1 Good]] [[File:A1419 Power Pin 1 Shutting Down.png|thumb|A1419 Power Pin 1 Shutting Down]] Pin 2: Ground<br> Pin 3: SMC_ACDC_ID_R (Pulled up to PP3V3_S0)<br> [[File:A1419 Power Pin 3 Good.png|thumb|A1419 Power Pin 3 Good]] [[File:A1419 Power Pin 3 Shutting Down.png|thumb|A1419 Power Pin 3 Shutting Down]] Pin 4: TSNS_ACDC_N<br> [[File:A1419 Power Pin 4 Good.png|thumb|A1419 Power Pin 4 Good]] [[File:A1419 Power Pin 4 Shutting Down.png|thumb|A1419 Power Pin 4 Shutting Down]] Pin 5: TSNS_ACDC_N<br> [[File:A1419 Power Pin 5 Good.png|thumb|A1419 Power Pin 5 Good]] [[File:A1419 Power Pin 5 Shutting Down.png|thumb|A1419 Power Pin 5 Shutting Down]] Pin 6: Ground<br> Pin 7: BURSTMODE_EN_R_L (Pulled up to PP3V3_S4)<br> [[File:A1419 Power Pin 7 Good.png|thumb|A1419 Power Pin 7 Good]] [[File:A1419 Power Pin 7 Shutting Down.png|thumb|A1419 Power Pin 7 Shutting Down]] [[Category:Mac]] [[Category:iMac]] 3wfldc6e3ooz5xmd4z0dqccrcbymn2y A1466 RAMCFG straps right configurations 0 2268 7059 2024-03-05T17:02:50Z MaxShevelev 1008 MaxShevelev moved page [[A1466 RAMCFG straps right configurations]] to [[820-00165 RAMCFG straps right configurations]]: Misspelled title 7059 wikitext text/x-wiki #REDIRECT [[820-00165 RAMCFG straps right configurations]] cpslq7uygg8s3c8lvgmt2qd0fw734es A1466 RAMCFG straps right configurations. 0 2266 7055 7052 2024-03-05T16:48:52Z MaxShevelev 1008 Blanked the page 7055 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 A1502 Common Issues 0 1426 3140 3139 2020-10-09T02:42:38Z Chrisb 1 3140 wikitext text/x-wiki == Flickering Display == Liquid will often corrode the [[PP3V42_G3H]] probe point near the hall sensor on the board. It will cause the screen to fade in and out as it is tripping the SMC_LID circuit. Since this point always has power it will corrode away. Instead of removing the sensor board and running a jumper wire underneath, you can run a wire from the trace to the capacitor on the sensor board as shown: [[File:A1502 Sleep Sensor 1.png|800x800px]] [[File:A1502 Sleep Sensor 2.png|800x800px]] == No Keyboard and/or Trackpad not working. == This can include the power button not turning on the MacBook Pro. The Trackpad cable often goes bad due to the bend in the cable. It can have no outward appearance of wear. Replace the cable and it will often solve the keyboard and/or trackpad not working. p8oz4wbp4cyatyqj1zixobhbgpkob1u A1706/A1708 TConn Backlight Pinout (FlexGate) 0 622 6786 6605 2023-03-17T00:31:47Z Pedro147 26 Rossmann typo - Louis hates that :) 6786 wikitext text/x-wiki [[File:Backlight Flex Failure.jpg|thumb|Flexgate on a MacBook Pro 2016|link=https://logi.wiki/index.php/File:Backlight_Flex_Failure.jpg]][[File:Flexgate with microscopy.png|none|thumb|800x800px|Flexgate on backlight side]] [[File:TCON Testpoints.png|none|thumb|600x600px|There are many testpoints behind wide flex cable including feedback. these are especially useful when you troubleshoot display after replacing connector. ]] [[File:A1706-1708 Backlight Pinout.jpg|800x800px]] [[File:A1706 A1708 Backlight Flex Pinout.jpg|800x800px]] <br /> [[File:Camera Flex.jpg|800x800px|Internals of the Camera flex]] =====NOTE *===== - Here is a very useful video by Phuket My Mac (Julien) on this FlexGate repair https://www.youtube.com/watch?v=JLrKuK7IK3I *- This type of repair might be used as a temporary solution or as a cheap alternative to display replacement with restricted warranty. If done unproperly it might cause short circuit on the backlight line which will damage the logicboard. For obvious reasons we as repair community recommend to educate customer about replacement program and to help them with free-of-charge replacement. It is known that many devices which are not listed in Apple Replacement Programm are still being serviced which clearly proves that highly likely there is "under the table" replacement programm for all flexgate-affected devices and each particular case is regulated by Apple Genius/his manager. Reliabilty of any sort of flexgate repair is higly questionable for two reasons: 1. even if done properly, soldered cable will be moved every day and it will break eventually, or insulation will be worn off and backlight power might be shorted to ground or to feedback lines causing more damage than just displa replacement. No repair store can really perform 1000-2000 automated bends to check if this method lasts long enough, reliable and safe to perform. 2. There are 4 cables between LCD assembly and T-Con. All of them are prone to fail. You cant repair every single one of them. If backlight fails - Camera cable is next one to fail. You fix the camera cable and the next candidate is data cable, both of them, in random manner (see 2018-2019 macbook flexgate "pink lines" issue) - Here is a more permenent solution offered by La Clinica de la Manzana (Joseph) on this FlexGate repair <br><br><youtube>https://youtu.be/a2QSHlcMfxw</youtube><br> ===Pink bars issue=== [[File:Macbook Pinkbars (Flexgate).png|none|frame|Pinkbars Flexgate might be caused by physical damage on flex cable, possibly caused by dust or sand on display edge.(Photos sourced from Louis Rossmann's Discord #mac-repair, user WGACA#3685)]] <br /> ===Testing and repair equipment=== [https://aliexpress.com/item/1005001860231489.html Tcon Test cable] [[File:Working tcon Testcable (Intel only).png|none|frame|Working tcon Testcable (Intel only) PN 921-00738-02]] [https://aliexpress.com/item/33017803880.html? Backlight + Camera cable repair kit] <br /> qjw1qzbehr5vnfypiin0qrzano7h362 A1707 Boot Up Sequence 0 209 612 2020-02-02T17:30:39Z Chrisb 1 Chrisb moved page [[A1707 Boot Up Sequence]] to [[CD3215 Bootup Sequence]] 612 wikitext text/x-wiki #REDIRECT [[CD3215 Bootup Sequence]] ji6gs76et6gmqdag5hzg7x8tkc4651e A1708 SSD 0 1820 5848 5847 2021-05-18T16:26:35Z Chrisb 1 5848 wikitext text/x-wiki #REDIRECT [[ Apple SSD connectors and adapters list#Gen.5%20OEM%20Compatibility]]First you should check if the machine is affected by https://support.apple.com/13-inch-macbook-pro-solid-state-drive-service About compatibility between 2016/2017: https://beetstech.com/blog/apple-proprietary-ssd-ultimate-guide-to-specs-and-upgrades <nowiki>After extensive testing with every Gen. 5A drive we could get our hands on, it appears that 128GB SSDs with part numbers beginning with 656-0074 and 256GB SSDs with part numbers beginning with 656-0076 are only compatible with the model A1708 laptops from the Mid 2017 release.</nowiki> Note that the SSD_BOOT_L/SSD_PWR_EN_L circuit is different between 820-00875 (2016) and 820-00840 (2017). Only the schematics for 820-00875 is available, in this one U8640/R8645 are populated while R8641/R8642 are not. On the 820-00840 it's the opposite. [[Category:Mac]] [[Category:MacBook]] [[Category:MacBook Pro]] hysdoorlkfgkl1voxxd2d5co4n3i5bu A1993 2018-2020 Power Supply Voltage Test 0 1340 2955 2943 2020-10-04T20:13:02Z Chrisb 1 2955 wikitext text/x-wiki Mac Mini Power supply rarely dies. A technician should test the power supply before ordering a new replacement power supply. A working power supply will show 11.90 to 12v on a multimeter. [[File:A1993 Power Supply Voltage Test 01.jpg|thumb|center]] [[File:A1993 Power Supply Voltage Test 02.jpg|thumb|center]] [[Category:Mac mini]] i4dxp82cyjz0hppg8kvjhs02r04krgc ACMT 0 726 1553 2020-08-28T16:45:15Z Chrisb 1 Created page with "This is a helpful training guide to assist with passing your Apple Certified Mac Technician exam. Much of this information is directly from the training courses offered. Kee..." 1553 wikitext text/x-wiki This is a helpful training guide to assist with passing your Apple Certified Mac Technician exam. Much of this information is directly from the training courses offered. Keep in mind, this information is based off of the ACMT 2018/2019 training and is updated annually in some cases through Apple. We will try our best to update this as needed. If you see any errors, please let us know. Happy training! =='''ESD - Electro Static Discharge'''== ESD - When two objects made of dissimilar materials rub against each other, excess electrical charge (static electricity) builds up on one object and simultaneously is removed from the other object.  Over time, this friction causes some objects to have electrostatic charge relative to surrounding objects. When this charge finds a means of equalizing, it will do so. In some cases, it discharges to ground.  In other cases, it might discharge to an ungrounded object with a different charge level. Examples - Shoes rubbing against carpet when walking. Getting out of a car with fabric car seats. A person’s body against the air as that person moves. Experiences: A shock emitted when touching a door knob or other metal object. A shock or crackling of static electricity when removing clothing from a dryer. A shock emitted when touching another person with a lower static charge. ESD as low as 10 volts can damage integrated circuits such as logic boards.  In contrast, you will only feel a static shock if it is in the range of thousands of volts.  You can be damaging the equipment you work on without know it. ESD damage is difficult to identify because a microscopic part of the integrated circuit is usually impacted by the discharge.  It might affect the component immediately or it might show itself only as an intermittent failure at a later time. Myths: *Wireless “grounding” work - not true - must be hard-wire grounded. *They are no longer an issue.  Components are now too well shielded to be an issue.   *RAM and logic boards are only components not shielded.   Some tools claim to be ESD compliant - but are not. ===Precautions=== #'''Handle all components by edges -''' non-conductive edges, avoid touching any edge connectors on any circuit boards and assemblies, avoid touching or handling any components on the surfaces of these boards and assemblies. Never handle or pick up any circuit board by its components such as heat sink.  Hard drives and optical drives are included. Avoid touching gold contacts or gold springs inside of the iPhone. #Ground yourself - ground yourself and the equipment you are working on to an earth or building ground.  Use grounded conductive workbench mat and a grounding wrist strap, and ground the equipment to the mat. #Make sure you are not grounded when you work on plugged-in equipment or when you are working with or around an energized power supply or logic board. #Do not place components on metal surfaces such as filing cabinet or the outside of a metal-shielded ESD storage bag.  Always place unshielded components on a grounded ESD mat. Metal surfaces can hold a static charge that will damage sensitive electronic parts.   #Do not touch anyone who is working on ESD-sensitive circuits or circuit boards of any kind. If you touch that person, there is a potential risk of your electrostatic discharge running through the tech to the components. #Use ESD storage bags - transportation, storage, and handling of boards and assemblies with circuit boards on them.  The best type of bags to use have a metallic coating on the outside that will block any exterior static charges. When you are ready to leave your bench and take a board to a storage place, put the component in a static-shielding bag.  Leave all Apple replacement modules in their ESD-safe packaging until you need them. Do not open up a service part’s packaging until you are grounded at your ESD-compliant workstation. Otherwise you risk rendering the part DOA. If the ESD bag you are using has any holes or worn areas, get rid of it and use a new one.  Punctured surfaces lose the ability to block ESD. When sending Known Bad Boards back to Apple, always use the packing that came with the replacement part to prevent further damage. #Avoid synthetic materials such as polyester, plastic, vinyl - can retain a static charge that are not dissipated by simple connection to ground.  Do not wear synthetic fabrics or bring such items as foam coffee cups into the work area. Packing foam from shipments should NOT be left in the work area. #Regulate humidity - maintain a relative humidity of 70-90% in your work area.  This lessens static charges but is NOT a replacement for properly grounded work area. #Use additional protection - An ionized air generator helps neutralize the charge with surrounds nonconductors.  An ionized air generator is not a replacement because it cannot provide total protection against ESD damage. Static charges frequently cause ESD damage before the neutralizing process of the ionized air generator eliminates the charge.   #Clean ESD mats regularly - at least once a week, best practice is daily.  Use a cleaner designed specifically for ESD mats or the mats will not ground equipment placed on them. ===ESD Compliant Work Station=== #Conductive workbench and ground cord - provides a safe place on which to set sensitive components and equipment.  Consists of these elements: Layer of conductive mesh sandwiched between rubber layers, 1 megohm resister in grounding connector on mat, “soapy” film on surface of mat allows charge to drain away.  (Cleaners for ESD mats restore the “soapy” film - do not use solvent cleaners on ESD mats) #Wrist strap with a built in 1-megohm resister and ground cord - grounds you allowing you to safely touch static-sensitive components without discharging static electricity into them.  Alternately a heel strap may be used. #Static-safe storage bags - place them in static-safe bags as they are removed.  These bags prevent build up of static electricity on the component itself. Also protects the component from being touched by someone who is not properly grounded. #Ground polarity tester - verifies proper grounding of power outlets.   ====Setting up compliant work area:==== #Remove all synthetic materials from work area - retain charges that is not readily dissipated - includes foamed plastics, polyester clothing, and vinyl. #Verify that you have a properly grounded electrical supply - user polarity checker on the a/c outlet you will be using to ground the workstation and tech.  Follow instructions included with tester to interpret the results. #Attach workbench mat to ground.  Once polarity checker results are good, set up ESD workbench mat by attaching it to the ground of your electrical outlet.   #Connect ESD wrist strap (or use ESD heel strap) - connect to the ESD mat or separate grounded connector.  Check instructions that came with ESD equipment for proper use. When wearing the wrist strap, you must be sure the metal section of the strap interior is touching your skin. #Heel strap - if using you will need a grounded floor mat in front of your workbench.  This mat is used along with the ESD mat on top of the workbench. The setup details depend on the specific products used.   Once the work area is properly set up, equipment is grounded by the ESD mat or shielding in an ESD static bag. The technician is grounded by an ESD wrist strap or a heel strap combined with a grounded floor mat. Additional ESD compliant tools are black stick, ESD tweezers, capton tape, ESD small parts organizer box, screwdrivers, etc. ===Key Points=== *Static electric charge is generated by everyday activities such as walking or getting in and out of a car. *Electrostatic discharge occurs when objects or people with a high electric charge touches a non-grounded object. *The amount of voltage it takes to damage an integrated circuit is below human perception (as little as 10 volts). *ESD damage can cause immediate issues or intermittent failure at a later time. *You should be aware of common ESD myths and how to address them with other techs. *Practice the 10 Apple ESD prevention guidelines. *Before servicing a product, create an ESD-compliant workstation. <br /> ==Safety First== Apple’s definition of a safety issue:  anything customers report that includes a safety keyword such as fire or injury.  Apple products have potential for cutting, overheating, electrical shock, or fire.   If a customer claims that an Apple product caused personal injury and/.or property damage, you should always document this as a safety issue, even if mistaken or misrepresent issues as safety issues. Important to recognize and report safety issues quickly and efficiently - equally important to describe the device’s condition and sequence of events/actions that led to event.  Detailed documentation helps establish a pattern of events that may lead to product design changes in the future and rewrite documentation and support solutions to address potential issues.  Clear records establish accountability and prevents customer from making damage claims based on denial. If an unsafe device is returned to the warehouse rather than processed as a safety issue, some customers may claim Apple tried to destroy evidence or ignored a safety issue.   ==='''Safety keywords:'''=== Certain key words your customer may use when describing an issue should alert you to a potential safety issue. It is important to be on alert for these descriptions during your interactions. Here are some examples: {| class="wikitable" | *Acid *Allergy, Allergic* *Bleed *Bump, Bumps, Bumpy* *Burn *Cut *Fire, Flame *Hive, Hives* *Irritation, Irritated* | *Itch, Itching, Itchy* *Leak *Liquid *Melt *Rash* *Reaction* *Red, Redness* *Sharp | *Shock *Soft (As in "The plastic case feels soft.") *Sore, Sores, Soreness* *Smoke *Spark *Splotches, Splotchy* *Swell, Swelling, Swollen* |} Words marked with an asterisk (*) are associated with skin irritation. If you hear these words, or if your own inspection reveals that the device or product may be unsafe, be cautious and treat this issue as a safety issue.  If you think there may be a product safety issue follow the required 3 actions: *Document the reported issue clearly and using the objective terms as a safety issue in GSX *Create a GSX Safety Escalation *In response to your escalation, Apple will provide direction on how to proceed.   Use the right vocal tone, body language and word choice when interaction with a safety issue. ====Key Points==== *A safety issue is anything a customer reports that contains key safety words or injury.   *It is important to document safety issues with enough detail to allow for careful examination and potential design and documentation changes. *It is important to listen to key safety words when a customer reports an issue and to document and escalate safety issues. *Position safety issues with customers in a professional yet collaborative way. ===Embedded Battery Safety=== '''[https://apple.com/batteries apple.com/batteries]''' Embedded batteries are in portable computers and devices.  Design allows for thinner and lighter designs while maintaining battery life.   Cell packs - parts of a battery that are recharged, hold energy, and provide power to the portable computer or device.  Cell packs could be punctured or damaged during repair or testing because they are not shielded by a protective enclosure or cover. Case Assemblies with battery - some portable macs, built into the case assembly (bottom or top).  Replacing a defective battery in these will require replacing entire case assembly. Never attempt to separate or remove the battery on built in.   If you notice something unusual (odor, swelling, discoloration, deformity, overheating), disconnect and stop using the battery.  Follow the safety guidelines in this training course. Use care when handling the battery or case assembly with built in.  Damage to battery may result in an unexpected, undesired event such as thermal event.  Always work on embedded batteries at a workstation that has properly set up.   *Do not subject lithium batteries or lithium battery-powered devices to high levels of force. (may deform, cause mechanical short, or break protection circuit built in to battery - may result in overheating or thermal runaway) *Do not puncture, strike or crush lithium batteries or lithium battery powered devices.  Avoid breaking the battery cell wall or containment structure. *Do not expose to high temps.   *Do not expose to liquids *Use non-conductive tools (use only those that are made from, or covered with, a non-conductive material only). *Properly connect the battery in the device, charger, or testing equipment.  Batteries have specified and marked postive/negative terminals. Wrong connection will cause it to charge incorrectly, abnormal chemical reactions leading to leakage, overheating, or thermal runaway.  Do not force if it does not fit. *Be sure to recharge the battery with the specified battery charger and a/c adapter.   *Do not recharge batteries where the temp may become high *Discharge battery only in an approved device.  (May damage the battery, reduce life expectancy, or cause event.  Can be discharged at a temp range between -20 C to 60 C. Outside of this temp may affect optimal battery performance and reduce life expectancy) *Do not short circuit the battery.  Do not carry or store with metal objects - may short positive/negative terminals resulting in event. *Do not directly solder batteries.  Heat will melt the insulator, damaging the exhaust valve and the protection mechanism leading to event. *Do not disassemble or modify.  Lithium batteries have a gas exhaust vent and built in protection mechanism to prevent accidents.  The protection circuit module provided with battery packs is not to be used as a shut-off switch. *Remove batteries from a device that will not be used for an extended period of time.  Discharge battery to about 50%. Battery state-of-charge should be no less than 50% prior to long-term storage.  If you plan too tore for longer than 6 months, charge to 50% every 6 months. If voltage goes too low during storage, battery may require at least 20 mins of charging with adapter before use.   *Do not use batteries that work only for an extremely short period of time.  Lithium batteries have finite life spans.   *If something unusual is noticed, stop using battery.  Unusual odor, overheats, vents, sparks, is discolored, deformed or reacts unusually in any way during use, recharging or storage, remove it from device or battery charger and discontinue use. *Do not force a battery into a box.   *Store batteries in original protective cases.  Place only one lithium battery in each box. *Minimize box stacking (stacking on top of each other). ==='''Workstation Setup'''=== Must meet the following criteria - non-flammable ESD compliant work bench, 2 ft or .6m away from paper/combustable materials, within 20 ft or 6.1m of fireproof safety cabinet.  8-10 cups of clean, dry untreated sand in a quick pour container within arm’s reach, ideally located in area with adequate ventilation. Safety lgasses, lens cleaning wipes, ESD bags, cut resistant gloves, nitrile gloves, heat resistant gloves, brush/dustpan, trashcan.  Details found in article OP685. Use battery protective cover whenever opening mac. Immediately disconnect device battery. No metal objects around soft cells of batteries. (Clay or dirt are not recommended) Use only Apple approved tools to remove/replace batteries or case assemblies containing batteries.  Required tools vary from product to product.   Battery covers on portables - prevents unintended contact with the battery surface from items such as loose parts, tools, and screws.  Attach protective cover immediately after opening the computer (removing the bottom case), before beginning battery removal, prior to installing a replacement battery, when preparing to package a battery for shipment.  Some computer models covers are equipped with tabs, adhesive, magnetic or plastic clips to secure to battery. Protect the exposed cells at all times. Use the correct battery cover for the product. Never use the wrong cover, worn, torn, or damaged covers.  Cover part numbers are in GSX. Only remove immediately before installing computers bottom case. (Make sure to inspect battery for any damage/debris, pay attention to any dents, dots, or scratches as these may cause thermal events with prolonged battery use).  Covers can be reused as long as free of dust, dirt, and damage. ===Verify cosmetic condition=== of the cells when performing service on 2010 and later MBA, 2015 and later MB 12”, all MBP with retina displays.  Be sure there is sufficient lighting in the area. View battery from about one foot away. Avoid accidental damage to cell packs when measuring cosmetic issues.   If dents or dots exceed these guidelines on MacBook Air (Late 2010 and later) and all MacBook Pro with Retina display computers, replace the battery/case assembly with battery. Dents/Dots {| class="wikitable" |Diameter |Total Number of Dents/Dots |- |Less than or equal to 0.5mm |<nowiki>-</nowiki> |- |Greater than 0.5mm,equal to or lesser than 1.0mm |10 or less |- |Greater than 1.0mm,equal to or lesser than 1.5mm |6 or less |- |Greater than 1.5mm,equal to or lesser than 2.0mm |3 or less |} Depth of any dent or dot should not be greater than half the diameter of the dent or imprint.  (ex. Dent 1mm wide should not exceed .5mm deep) Scratches {| class="wikitable" |Diameter |Total Number of Scratches |- |Less than or equal to 15mm |5 or less |- |Greater than 15mm, equal to or lesser than 30mm |3 or less |- |Greater than 30mm, equal to or lesser than 40mm |2 or less |} If scratches exceed these guidelines, replace the battery/case assembly with battery. <br /> ===Swollen battery=== Expanded enclosure - device’s enclosure has separated/bulging/split apart due to expanded/swollen battery.  Device may still turn on and work as expected. Not usually a safety concern. Swelling may indicate end-of-life for older batteries or batteries with very few remaining charging cycles.  Electrolyte has been fully consumed and no liquid remains inside the pouch. The gas present in the swollen pouch is likely carbon dioxide (an inert gas).   <br /> ===Thermal runaway -=== cell appears to be suddenly and quickly swelling in real time.   Do not over tighten screws when replacing a battery.  Turn until finger tight. Over tightening may cause irreparable damage to battery pack.   <br /> *Do not reuse or reinstall a loose battery or battery that has been removed.   *Do not pry battery if tabs break *Stop if there is any resistance removing the battery. *Replace entire phone if battery is dented, punctured, swollen or otherwise damaged.   Never attempt to transport or ship a battery or case assembly with battery without battery cover.  Reuse the battery cover that ws included with new battery when returning to apple. Always use tape to seal boxes never staples.   Only properly trained personnel should handle hot batteries, venting batteries, leakage event, or thermal event. <br /> ===Hot batteries=== - when battery temp rises above 60C or 140F.  Clear work bench of any materials/debris. Unplug computer’s power adapater (battery should immediately start to cool).  Put on heat resistant gloves/safety glasses. Pick up battery/case assembly, and place in fire proof safety cabinet for at least 2 hours.  If not easily removed, place entire unit in cabinet. If battery does not cool significantly in 2 hours, increased likelihood of thermal event. <br /> ===Venting batteries=== swollen or damaged batteries have greater likelihood.  Gases may have an organic-like odor (similar to anti freeze) and may irritating to mucous membranes and respiratory system.  May or may not be an expelling noise. Do not attempt to handle a venting battery. Leave it on the bench and evacuate for 15 mins.  Note any unusual odors upon reentering room. If odors are strong or irritating in any way leave for another 15 mins. If no odors, put on nitrile or latex gloves and safety glasses.  Prepare a disposal bag such as ESD or Ziploc). Clear work bench. Unplug power adapter. Place battery or entire case assembly in bag and seal bag. Put the bag containing battery in yellow fire-proof safety cabinet and notify management. <br /> ===Leakage Event=== - no more than a few drops of free liquid contained in embedded cells.  Usually likely excess liquid came from another source when seen. Regardless of source - immediately eliminate any ignition source or debris near/around leaking battery/device.  Clear work bench. Prepare a resealable plastic bag (DO NOT USE ESD). Put on nitric gloves and safety glasses. Pick up battery/case assembly and place in bag. Place in fire-proof safe temporarily.  Wipe down affected area with water. Use an ESD mat cleaning solution on affected area. Notify management.   <br /> ===Thermal Event=== - Batteries with charge below 25% are unable to produce.  Battery begins to smoke, emit sparks or soot, hear hissing or popping sounds.  Smother immediately with plenty of clean, dry sand, dumped all at once. Never water or fire extinguisher.  The faster you pour sand, the faster the thermal runaway will stop. If you cannot dump the sand right away, the reaction is self-limiting and should be done in 30 seconds or so.  Cell may continue to emit smoke for another minute or two afterwards. Leave room for 30 minutes or let cell rest for 30 mins. Once the reaction has been smothered and battery has cooled, put on heat resistant gloves and safety glasses.  Remove the product and any debris from sand. Place items in cabinet for at least 2 hours min. Report any injuries or ill feelings. Sweep up sand and pour back in dispenser for reuse. Add more sand if necessary. Wipe down affected area with water.  Use ESD mat cleaning solution on affected area. Dispose of damaged battery/device and any debris removed from sand according to usual waste/recycling protocols. Do not ship. Order more sand from vendor. Notify management. ===Practice Questions=== Question 1: If you notice something unusual, discoloration, deformity, or overheating of a battery, what is the first precaution to take? Your answer: Disconnect and stop using the battery. Correct. Question 2: When servicing portable computers or iOS devices with embedded batteries, what should be your primary concern? Your answer: Your own safety and the safety of those around you Correct. Question 3: Which of the following describes a proper workstation on which to service devices with embedded batteries? (SELECT THREE) Your answer: ESD safe and non-flammable work bench, 8-10 cups of sand in quick pour container within arm's reach and At least 2 feet (0.6m) away from paper and or other combustible materials Correct., Correct. and Correct. Question 4: Which of the following is used to prevent items such as loose parts, tools, and screws from unintended contact with the actual battery surface on a portable computer? Your answer: Battery cover Correct. Question 5: When a battery’s temperature rises above its safe operating temperature (60° C/140° F), it can be potentially hazardous. If this were to occur, which of the following steps should a technician take after clearing the workbench of any materials or debris? Your answer: Put on heat-resistant gloves and safety glasses. Correct. Question 6: If you notice a battery is venting gases (not thermal runaway), or if you notice unusual odors coming from the battery or device, which step should you take first? Your answer: Leave it on the bench and evacuate the room for 15 minutes. Correct. Question 7: After opening a device, you see a few drops of liquid around an embedded battery. You clear the work bench of any materials and debris and put on both nitrile gloves and safety glasses. What should you do next? Your answer: Pick up the battery and place it in a resealable, plastic disposal bag (such as Ziploc®). Correct. Question 8: What is the most effective means of stopping a battery that is undergoing thermal runaway? Your answer: Smother it immediately with plenty of clean, dry sand, dumped all at once. Correct. Question 9: In the event that electrolyte from a leaking embedded battery makes contact with your skin, which of the following first aid procedures should you take? Your answer: Flush skin with cool running water. Correct. ===Key Points=== *Embedded batteries are used in many Apple products and require special tools/handling *Always use correct safety tools and ensure workstation meets requirements. *Use the Apple-approved tools described in service guide to remove/replace batteries *Verify the cosmetic condition of battery cells *Use great care and correct techniques when removing/replacing *Know the correct specific response and equipment to address specific battery scenarios. ==Service Fundamentals== ==='''Asking Questions'''=== *Four probing skill steps: Position, Permission, Probe, Check for understanding Position - the skill of explaining what you want to do and why.  Helps the customer understand why they should provide you with the info you are requesting. Permission - You wait for the customer to give you consent before starting to ask questions.  Might be non-verbal (nod) or verbal (“Yes”) *Is that Ok? *May I go ahead? *Will that work? *Is that alright? Probe is a question or other request for information.  Types are either open probes or closed probes. Open probes encourage to respond freely, closed probes limit response to yes/no/specific answer. Check for Understanding - Verify understanding by reflecting or rephrasing (not repeating) what the customer said. Position, Permission and Probe "With your agreement (permission), I would like to ask you a couple of questions so that I can understand your Apple Watch issue (position)." "I see you have brought your iPhone for repair today (position). May I ask you a few questions to begin with so I can fully understand the issue? (permission)" {| class="wikitable" |'''Open Probes''' |'''Closed Probes''' |- |How are you backing up now? |Which AirPod is not working? |- |Why is that important to you? |Did it work yesterday? |- |Describe the sound it made. |What version of iOS is running? |- |What kinds of things do you use your Mac for? |When did you last restart the device? |- |What did you do next? |Were you on the Internet at the time? |} ====Key Points==== *Reflection is not repeating - use phrases such as let me understand, what I’m hearing is, Did I get that right? *Repeating exactly what customer says is frustrating. ====Key Points #2==== *Position your question, ask permission to ask it, probe politely for the best information. *Use open questions to encourage customer to respond freely *Use closed questions to gain specific information *Use reflecting skills to check your understanding ==='''Interpersonal Skills'''=== Body Language = words/vocal tones are power communication tools.  You are already communicating nonverbally before even speaking. Your attitude and personality may be judged before customer even meets you.  It is your responsibility to keep an open mind when it comes to reading customer body language. Avoid assumptions. (No arms crossed, no eye contact, facing away from customer when speaking, making facial expressions) Accurately documenting what customer is explaining without customer thinking you are texting on an iPad or doing other work on a computer.  Position what you are doing so customers understand that they still have your full attention. Ex. I am going to take some notes as you describe them if that is ok.  You still have my full attention. Pay attention to facial expressions - look for smiles, frowns, furrowed brows.  Be mindful of your own expressions.   Asking “Does that make sense” may force a yes and make customer afraid of sounding foolish.  Instead say “How does that feel?” Allows customer to participate on a human level and freedom to express concerns. Word value - Spoken words may have a specific meaning but tone, body language, inflection can change the value or the way the customer interprets your words.   Denotation and Connotation - Denotation refers to literal meaning of a work.  Connotation refers to the idea or feeling of a word based on context or experiences.  Ex. Crash - immediately draws negative feelings (car crash, crashing Mac) based on previous experiences with the word.  Using the word “crash” implies physically broken, data loss, and expensive repairs. Instead, use “The application is having a hard time opening itself” or “The app is not behaving as expected and is unresponsive.” Intonation - not what you say but the way you say it.   Warm Welcome - One chance to make a first impression.  Apple calls this the “Warm Welcome.” Interpersonal skills are most important here because they set the tone for the remainder of interaction. Give full attention, use customers name, and use open/inviting body language. Prioritize the customer over the issue when beginning an interaction. Fond Farewell - Make sure customers leaves with positive and lasting final impression.  Make sure issue is resolved, invite them to return for other services, offer ownership opportunities when appropriate, finish notes either before farewell or after they leave, use customer name to help maintain rapport.   Over the phone - loses the advantage of face to face interaction and reading body language.  Answer the phone call with a smile. Pace speech - briskly enough to be confident but slow enough to be understood.  Too slow - boring, bored. Too fast - nervous, impatient. Do not interrupt what the caller is saying. Reflect your understanding back to customer.   *Find a quiet location with minimal distractions to make customer calls.  Pause music if needed. *Always conduct yourself as if customer is in the repair areas.   *Prepare with a script in case you have to leave a voicemail.  Make sure messages are clear, concise and complete. *Avoid calling customers early in the morning or late at night. *Announce to other employees that you are about to make a call and keep distractions to a minimum. ====Key Points==== *You are already communicating nonverbally before you even speak to a customer *Tone or pitch of voice can change the connotation *You get only one chance to make a first impression using a Warm Welcome *A Fond Farewell involves making sure the issue is resolved.  Invite for additional services and offer ownership opportunities when appropriate. *Be mindful of pacing, not interrupting, recapping and having a smile in your voice when on the phone. ==='''Providing Solutions'''=== Telling a customer their device needs repair may make them distressed because - you failed to meet their expectations (may have expected replacement over repair), may be reluctant to part with device, may be reluctant to pay for repairs. Position repair so that the customer understands the issue and partners with you in finding a solution.  Stay positive and focus on outcome of repair. Choose words carefully. A good repair recommendation always provides some way forward. “Stop Words” hijack a conversation - they shift customer focus to defensive side.  Avoid using words such as damaged, failed, warning, abuse, you have (accusatory) or misuse.   Best Practices for recommending new products instead of repairing. *Start with a limited number of options *ONLY FOR APPLE CERT PURPOSES - NOT SHINY!! A recommendation for a new product, upgrade, or extra service is often the best solution for the customer if the service goal is providing the best possible solution for the customers need………….. *The key to having your suggestions accepted is positioning - how you phrase your recommendation.  Be empathetic, agreeable, and supportive.   *Put yourself in the customer’s shoes.  They expected a quick fix with loa or no cost.   *Present the new solution as an opportunity.  The focus moves from the cost and concentrates on enhanced performance, new features, etc. *Setting expectations at check-ins is important.  Should be part of the relationship not a shock. Additionally, let customers know as soon as possible if repair costs are expensive or complex.  Prepare them with I am not sure this can be repaired, this is not looking hopeful, generally this much water damage is quite serious, etc. When to refuse service *A device that has been modified by an unauthorized service provider using non-Apple parts. *A device with non-covered accidental damage. *A device with no serial number *A legacy device we are no longer servicing *A customer has misperceptions about the products and services offered. When refusing service, explain why and offer options.  Never simply shut them down. ====Key Points==== *Avoid using stop words or phrases. *Be empathetic, agreeable, and supportive when offering recommendations *Explain why and immediately say what you CAN do when positioning refusals. ==='''Educational Opportunities'''=== Cornerstones of Adult learning *Training is a partnership - collaborate with the training, add opinions, participate *Learn only what they do - learn by performing the task. *Think like a student - have true empathy.  That’s right! *Lead learning out - do not give information as if they know nothing, do not insult intelligence.  Respect, ask leading questions which lead to correct conclusions.   Lead Learning out - *Leverages prior knowledge or skills already in place *Building on top of the foundation that the learner supplies and allowing them to be a member of the partnership. *Asking smart questions that the learner can answer correctly so they feel part of process and true collaborator. *Goes hand in hand with asking the learner to be an active participant and responsible for their own learning. *Does not involve interrogation, intimidation. *Helps make connections *Deepens the student’s role in the learning partnership *Asks for students input first and validate if correct. *If the student is likely to get the answer correct, asking is more powerful than telling. Best Practices *Do not do what the student should do *Sit next to but not uncomfortably close to student *The word “there” has no meaning to the student.  Use anchors like it’s next to, is above, it is the bright red box, etc. *Do not say “no” or “wrong” Instead use “Try again.” *Do not use “just” as it implies the task is too easy, demeaning to customer.   *Divide screen real estate into nine “ marker” sections.  Top left, dead center, bottom center etc. Use analogies to better explain.   Assess the customers level of technical competence *Use probing skills - avoids over simplifying or talking down *Use clear simple language - do not use complex words when you do not have to *Explain features and their benefits *What, why, and next steps. Correcting a customer - Use the phrase “Turns out” - corrects without blaming or making look foolish.  Avoid the words no, wrong. Other good ones - As it happens…, What really happens, I can see how you would think that but as it turns out….. ====Key Points==== *Lead learning out mean leveraging knowledge or skills already in place. *Let the customer handle device while you instruct *Do not use complicated technical terms or terms that are over-simplified. *Use appropriate phrases for letting a customer know they are wrong. *Use analogies to better explain a concept ==='''Partnering with the customer'''=== Under-promise but over-deliver - be completely honest even is afraid the truth will upset the customer.  Set realistic expectations. Disappointment definition is expectations not met. Make the customer a collaborator, not adversary. Use neutral, non-inflammatory language.  Set generous margins in terms of time and effectiveness. If a part arrives sooner than you had set expectation for, you are the hero. Use conservative language to set expectations.  Ex. Can, may, might, possible, likely, unlikely, maybe. Do not use promise, on my honor, never fails, guaranteed, always, never. Empathy is the ability to understand and share feelings of another.  Not to pity. Builds rapport. Three steps - Acknowledge their point of view, align and let them know you are on their side, assure to let them know you are willing to fix the problem and take care of concerns. Feel, felt, found.  Use in your statements, I can understand how you feel, I felt a lot of pressure when that happened to me, I found that this helped tremendously. Avoid saying I know how you feel and instead say I understand how you feel. Apologizing -It is appropriate to apologize if there was a misunderstanding about a situation or the customer is having a difficult time.  Do not apologize for the business, the technology, or your manager.   Try replacing an apology with an appreciation - thank you for your patience, thanks for giving us a second chance, thanks for taking the time out of your day to come in. Inflammatory phrases that can upset a customer - avoiding responsibility, refusals, getting confrontational, being inappropriately positive. Avoiding responsibility examples not to say - I am not authorizes to override the cost of the replacement, ringing you out is not my job as I am a technician - find someone on the sales floor, that is not how it works - if you give me a 128GB phone, I have to replace it with another 128 not a 256. Refusals examples not to say - Unfortunately, you did not get AppleCare+, I cannot make an exception for your accidental damage, I did not say we would not charge you, I said we would replace the device not how much it cost. Getting confrontational examples not to say - you need to calm down before I get security involved, I bet you are frustrated (if the customer did not say he was frustrated this could allow him to be), You are wrong - your iPhone only has one speaker on the bottom, STOP SHOUTING (yelling to customer).  If you find you are unable to maintain composure ask to step away from the situation and gather your thoughts. Inappropriately positive examples not to say - Your phone shattered, great, we can get that fixed today.  Liquid damage, awesome, we have options for your. In other words, being overly excited that you know the solution without showing empathy for the customers emotions first.   Emotionally Hijacked customers - when customer has emotions that are out of your control.  You can use all of the available empathy skills, but the customer was upset before you even began the interaction.  May be unrelated - personal loss, worried about being late, got in an accident on way over, etc. Cannot help but channel their emotions to the issue in front of them.  Can make you feel personally attacked.   *Stay calm, speak more quietly than the customer and remember to breathe. *Show genuine empathy and keep reinforcing you are there to help them. *Try to find a way to say you’re right and so endorse the customer. *Describe how the specific behavior is affecting you and your ability to continue the conversation. (only used in extreme situations) *Propose an approach that refocuses the discussion.   Five Step Approach in Action: *Speak Calmly *Acknowledge issue *Align *Empathy and ask to address behavior (language, attitude, etc.) *Permission to ask questions and suggest a resolution, ask for approval. If personal safety is a factor, make the customer aware you would like to include manager in conversation.  Partner with the manager, take a break after incident to refocus. Emotional scenes are stressful and should not be dismissed. ====Key Points==== *Cautious words and phrases help set accurate customer expectations. *Empathy is key to customer satisfaction as it helps you align with the customer and helps avoid conflict with the customer. *Acknowledge, align, and assure to demonstrate empathy. *Use apologies appropriately. *Five step anger method - stay calm, show genuine empathy, try to find a way to say you’re right, describe how the specific behavior is affecting you, propose an approach that refocuses the discussion. ==='''Documenting Customer Interactions'''=== Case notes - remarks and recommendations techs make during troubleshooting.  Describe what the customer said, any tests performed and their results, observations made during a physical examination.  May also include a suggested resolution. Good notes are essential because: *Accurately detail device issues to the customer *Direct the next tech who works on the repair *Build a permanent and complete customer repair history *Apple engineers use the data to improve products and customer service. *Act as legal documents Apple repair centers can only see the Work Authorization portion of a repair case.  If the initial notes are poor, the repair center may have a difficult time reproducing the issue or validating the customers concern.  Ultimately leads to repeat repairs, repeat visits, and decrease in satisfaction. Negatively affect Turnaround Time (TAT) and Customer Satisfaction (CSAT). Poor case notes do not accurately describe the issue, are not helpful for the next tech, can cause repetition of troubleshooting and wasted time, can lead to contacting the customer for clarification.   Good notes include: *What info did the customer supply? *What did customer see, hear, smell? *Has the customer ever seen this happen before? *How was the issue verified? *Tests ran and results *What info did the device itself supply? *What resolution was reached or recommendation? *Write full descriptions and use declarative phrases. Clear, concise case notes: *Stick to facts and are objective. *Use “customer reports” when quoting customer *Use neutral terms when describing emotional elements *Clear, declarative statements *List troubleshooting steps and results using Action/Result format *Find a balance between including complete details yet make entries easy to read. *Avoid all but standard acronyms, emojis, abbreviations, and tech jargon. *Document cosmetic condition using objective descriptions/measurements while avoiding subjective terms such as good, fine, perfect condition, normal wear/tear. *Set up next tech for success *Professional, avoid inappropriate language *Tell a story with beginning, middle, end *Provide answers that make sense and do not lead to more questions *Proofread notes before saving, avoid typos. ====Key Points==== *Clear concise notes are essential because they accurately detail device issues to customer, direct the next tech, build permanent and complete repair history, engineers use data to improve, act as legal documents. *Complete case notes negatively affect TAT and CSAT. *Effective notes describe completely the interaction and your subsequent actions. ==='''Resource Fundamentals'''=== Excel as a tech by using all available Apple resources *Resource usage allows you to provide informed and procedurally correct solutions to customers *Resource documents are updated regularly so it is better to look up relevant information than it is to memorize it. *Using resources helps you work smarter, not harder *Using resources provides a model for customers to resolve their own issues. Apple Support Site ('''[https://support.apple.com support.apple.com]''') *How-to articles *Tech specifications *Support Communities *User manuals *Downloads *Troubleshooting articles *Service and repair options Global Service Exchange (GSX) - key service resource available only to Apple authorized techs currently employed at Apple Authorized Service Facilities.  Used by Apple internal support groups, AASP, carrier technicians, self-servicing accounts (SSA), and other groups of techs who service Apple products. *Internal versions of public articles *Standard Operating Procedures articles *Visual and Mechanical Inspection (VMI) guides *Service Guides *Integrated Troubleshooting charts *Service Videos *Escalations ====Key Points==== *Apple Support site is powerful customer facing resource *Apple support articles are available to both techs and customer, are a valuable resource when searching for troubleshooting and installation instructions. *GSX is key service resource *GSX contains confidential support articles and service info, only techs are able to assess. ==Introduction to Service Guides== ==='''Global Service Exchange'''=== - GSX - web-based system used by AASPs, wireless carriers, self-service businesses, and education customers.  Used for creating repairs, ordering service inventory, using tech/operational procedures, researching repair history, and requesting reimbursement from Apple for warranty repairs.   Service Guide Troubleshooting section - provides high-level info that includes - links to specific VMI guide to determine warranty coverage (iOS and Mac), Micro-Inspection procedure to determine modifications (iOS), common software troubleshooting procedures (iOS), general troubleshooting including troubleshooting theory (Mac), quick check procedures including resetting NVRAM and SMC (Mac), recovering lost firmware password (Mac). Symptom charts - isolate unlikely causes, apply quick checks, follow deep dive flow charts. Quick Check - quick, non-invasive checks prior to Deep Dive. Deep Dive - flow chart guides through systematic troubleshooting steps to find issue and corrective actions to take.  Based on the Yes/No answer to questions. Usually taken once the device has been checked in. Take Apart - designed to help tech repair/replace parts within a unit.  Organized by part, starting with external housing and working towards logic board and other internal parts.  Beginning of this section - find general info about the product such as cable types, tool requirements, procedure notes. First Steps - should be performed before repair has begun.  In some cases will include other part removal such as bottom cover removal before beginning repair.  Always complete First Steps before beginning repair.   Tools - listed in Take Apart - required tools for specific repair in question.   Steps for removal/reassembly Follow exactly.  Reassembly steps may not be provided and would need to follow in reverse order.   Views - designed to help you identify parts, screws, and physical location of component.  Most include exploded view of all parts and screw chart. ===Key Points=== *Always use the latest Service Guide when servicing a given device. *The Quick Check and Deep Dive sections help techs troubleshoot devices efficiently and accurately. *Be sure to follow the First Steps section before attempting to complete the repair in question. ==Apple ID== Apple ID is user name that can be used for everything customers do with Apple in macOS, iOS, watchOS, and tvOS.  Customer uses an email address to create an account for an Apple Service they create their Apple ID. Same ID lets them access Apple’s other services. Created from '''[https://appleid.apple.com appleid.apple.com]''' or when setting up a new device or when sign into iTunes or iCloud for the first time. Needed to create an Apple ID: *A valid email address (serves as user name) *A strong password *Three security questions and answers (verify identity, reset the password) *Date of birth ==='''Support References'''=== If an Apple ID is created through the iTunes Store, iBooks Store, or App Store, credit card information may be needed. See Apple Support article, [https://support.apple.com/HT204034 HT204034 - Create or use your Apple ID without a payment method] for alternate payment methods. Other available resources are: *[https://apple.com/support/appleid apple.com/support/appleid] *[http://support.apple.com/HT204053 HT204053 - Sign in with your Apple ID on a new device] *[http://support.apple.com/HT203993 HT203993 - Create and start using an Apple ID] To [https://support.apple.com/en-us/HT204316 use an Apple ID with a service such as iTunes, iBooks, App store, or the Mac app store], sign-in is required. The examples below show you how to sign into iTunes in macOS and iOS. ==='''How do you manage your Apple ID?'''=== Because Apple ID is used across all devices and services, it is important to keep the account information up to date. By signing in to My Apple ID, customers can: *'''Update Apple ID email address''' to make sure it is an address in use frequently *'''Change the password''' to help maintain account security *'''Reset security questions''' to make sure they are easy to remember but hard for others to guess *'''Add a rescue email address''' to help reset security questions if they are ever forgotten *'''Add additional email addresses''' to make it easier to communicate and share *'''View and edit devices''' associated with this Apple ID *'''Edit payment details''' for this Apple ID ==='''What if you forget your Apple ID?'''=== If you have forgotten your Apple ID username or password, go to iforgot.apple.com for recovery options. ==='''Support References'''=== Apple Support has numerous articles focused on Apple ID. The following Support Articles contain additional information on managing or troubleshooting Apple ID issues: *[https://support.apple.com/explore/managing-apple-id Managing your Apple ID] *[http://support.apple.com/HT202667 HT202667 - Change your Apple ID] *[http://support.apple.com/HT201354 HT201354 - If you forgot your Apple ID] *[http://support.apple.com/HT201356 HT201356 - About your Apple ID email addresses] *[http://support.apple.com/HT204071 HT204071 - What to do after you change your Apple ID email address or password] ==='''Two-step verification'''=== [http://support.apple.com/HT204152 Two-step verification] is an additional security feature for Apple ID that requires using a trusted device for identity verification. *The first step is to enter the Apple ID and password. *The second step is to enter a verification code that is sent to a trusted device. Two-step verification is configured at appleid.apple.com in the Security section. ==='''Two-factor authentication'''=== [http://support.apple.com/HT204915 Two-factor authentication] is similar in approach to two-step verification. It is a security feature for Apple ID that also requires customers to verify their identity using a trusted device. However, two-factor authentication provides a more streamlined approach than two-step verification. It also has different system requirements, one of which is a Mac running El Capitan or later and iTunes 12.3 or later. If two-factor authentication is [http://support.apple.com/HT205075 available for an Apple ID], it can be configured in iCloud Preferences. Best Practice While troubleshooting, you may isolate a user’s issue to his or her Apple ID. You should help users resolve issues with their existing Apple IDs, instead of creating new ones. Creating a new Apple ID for a user who already has one can confuse the user and cause the creation of multiple iTunes and App Store accounts. You can quickly and easily find answers to Apple ID questions using Apple's Support website, [http://support.apple.com/apple-id support.apple.com/apple-id]. ===What iOS features require an Apple ID?=== *App, iTunes, and iBooks Stores *Apple Music *Apple Pay *Game Center *iCloud *iMessage *Find My Friends *Find My iPhone ===What services do customers use that would indicate that they already have an Apple ID?=== *Apple Developer programs *Apple Music *Apple Online Store *Apple Retail services and programs *Apple Store app *Apple Support Communities *Apple TV *App Store *Find My Friends *Find My iPhone *Game Center *iBooks Store *iCloud *iMessage *iTunes Genius *iTunes Home Sharing *iTunes Match *iTunes Radio *iTunes Store *iTunes U *Jobs at Apple *Mac App Store *My Apple ID ===Key Points=== *Apple IDs created for iTunes, iCloud and with new device setup can be used with all Apple services. *Apple IDs can be set up without a payment method. *You must sign in with an Apple ID to use some Apple services. *It is recommended to use one Apple ID for all Apple services. *It is supported to use one Apple ID for iCloud services and a separate one for iTunes. *Use appleid.apple.com to manage your Apple ID. *Use iforgot.apple.com to reset a forgotten password, unlock your account, or recover an Apple ID. *Two-step and two-factor authentication are available to add an extra layer of security for your Apple ID. ==iOS Fundamentals== ===Helpful Links=== *[https://www.apple.com/ios/ios-11/ iOS] *[https://support.apple.com/explore/new-to-iphone New to iPhone] *[https://support.apple.com/HT200290 Creating folders] *[https://support.apple.com/HT201285 Using Search] *[https://support.apple.com/HT202070 Switch Apps] *[https://support.apple.com/HT201398 Force Quit] *[https://support.apple.com/en-us/HT204091 Setting up Bluetooth accessories] *[https://support.apple.com/en-us/HT201436 Voicemail capabilities] *[https://support.apple.com/en-us/HT204321 Setting up Do Not Disturb] ===Messages App=== In the Messages app , you can exchange text messages using SMS and MMS through your cellular service on iPhone, and with other iOS devices and Mac computers using [https://support.apple.com/en-us/HT201287 iMessage]. iMessage is an Apple service that sends messages over Wi-Fi or cellular connections to other iOS devices (with iOS 5 or later) and Mac computers (with OS X 10.8 or later). These messages don’t count against your messaging plan. Messages sent via iMessage can include photos, videos, and other info. You can see when other people are typing, and send read receipts to let them know when you’ve read their messages. For security, messages sent via iMessage are encrypted before they’re sent. *[https://support.apple.com/en-us/HT201925 Customize iMessage Notifications] ====Memoji==== Memoji is a new form of Animoji, and makes communicating with friends and family even more fun on iPhone models with Face ID. You can personalize your Memoji in Messages, and add Animoji, filters, text, and stickers to photos and videos with new camera effects for Messages and FaceTime. For more information on creating and using Memoji: *[https://support.apple.com/HT208986 HT208986 - Create and use Memoji on iPhone X or iPad Pro] *[https://support.apple.com/HT208190 HT208190 - Use Animoji on your iPhone X or iPad Pro] *[https://support.apple.com/en-us/HT201287 Use Messages on your iPhone, iPad, or iPod touch] *[https://support.apple.com/en-us/HT206894 Use message effects with iMessage on your iPhone, iPad, and iPod touch] *[https://support.apple.com/en-us/HT207525 How to use Auto-Correction and predictive text on your iPhone, iPad, or iPod touch] <br /> ===FaceTime App=== {| class="wikitable" |in the FaceTime app , make video or audio calls to friends and family, whether they’re using an iOS device or a Mac. With the front-facing camera, you can talk face-to-face; switch to the rear camera to share what you see around you. With iOS 12.1.4 and later, Group FaceTime makes it easy to chat with multiple people at the same time. You can start a Group FaceTime right from the FaceTime app or from a group conversation in the Messages app. The tile of the person speaking gets larger automatically, so you’ll never lose track of the conversation. Note: FaceTime, or some FaceTime features, may not be available in all regions. |} Use FaceTime with your iPhone, iPad, or iPod touch ===Wallet=== {| class="wikitable" |With [https://support.apple.com/HT204003 Wallet], you can keep your credit, debit, and prepaid cards, store cards, boarding passes, movie tickets, coupons, rewards cards, student ID cards, and more in one place. With Wallet, you can use passes on your iPhone to check in for flights, get and redeem rewards, get in to movies, or redeem coupons. Passes can include useful information like the balance on your coffee card, your coupon’s expiration date, your seat number for a concert, and more. Students at some universities in the United States can use student ID cards on iPhone and Apple Watch. |} ===Control Center=== {| class="wikitable" |While your device is locked, [https://support.apple.com/HT202769 Control Center] gives access to the camera, calculator, AirPlay, and control/playback of currently playing audio. In addition to those features, brightness, locking the screen in portrait orientation, turning wireless services on or off, and turning on AirDrop are also available. Turn off access to Control Center in apps or on the Lock screen by going to Settings > Control Center. '''Open Control Center''' Swipe up from the bottom edge of any screen. On iPhone X or later or iPad with iOS 12 or later, swipe down from the upper-right corner of the screen. '''Close Control Center'''  Tap the top of the screen or press the Home button. On iPhone X or later, swipe up from the bottom of the screen or tap the screen. |} ===Notifications=== Notifications help you keep track of what’s new—they let you know if you missed a call, if the date of an event moved, and more. You can customize your notification settings so you see only what’s important to you. View and respond to notifications on the iPhone Lock screen or in Notification Center. iPhone displays notifications as they arrive, but if you don’t read one right away, it’s saved in Notification Center so you can check it later. To see your notifications in Notification Center, swipe down from the top center of any screen, then scroll up to see older notifications. To close Notification Center, swipe up. When you have multiple notifications, they’re grouped by app, which makes them easier to view and manage. Notifications from some apps may also be grouped by organizing features within the app, such as by topic or thread. Grouped notifications appear as small stacks, with the most recent notification on top. Do any of the following: *To expand a group of notifications to see them individually, tap the group. To close the group again, tap Show Less. *To view a notification, tap it. *To view and respond to a notification or group of notifications, swipe it right, then tap Open. On [https://support.apple.com/guide/iphone/aside/iph945ccc462/12.0/ios/12.0 models with 3D Touch], press deeply on a notification to view and respond. Support Reference Refer to the [https://support.apple.com/guide/iphone/view-and-respond-to-notifications-iph6534c01bc/ios iOS User Guide] for additional information how to dismiss, clear, and manage notifications. ===Siri=== Your personal virtual assistant—[https://support.apple.com/HT204389 Siri] is a quick way to get things done by talking to your device. Ask Siri to translate a phrase, set a timer, find a location, report on the weather, and more. The more you use Siri, the better it knows what you need. To use Siri, iPhone must be connected to the Internet and cellular charges may apply. ====Siri Shortcuts==== Siri Shortcuts enable any app to work with Siri so you can get things done faster. You can customize Shortcuts by creating a simple voice command to kick off a task, or use the new Shortcuts app to carry out a series of actions from different apps with just a tap or voice command. You can create new Shortcuts using iOS 12 Siri & Search settings or using the Shortcuts app. ====Support References==== For more information on creating and using Siri and Siri Shortcuts: *[https://www.apple.com/ios/siri/ iOS - Siri - Apple] *[https://support.apple.com/HT204389 HT204389 - Use Siri on all your Apple devices] *[https://support.apple.com/HT209055 HT209055 - Use Siri Shortcuts and suggestions] *[https://support.apple.com/HT208309 HT208309 - Use the Shortcuts app on your iPhone or iPad] *[https://support.apple.com/en-us/HT204389 Use Siri on all your Apple devices] *[https://www.apple.com/ios/feature-availability/#siri-sports iOS Feature Availability] *[https://support.apple.com/HT202639 Wifi] *[https://support.apple.com/HT204091 Bluetooth] *[https://support.apple.com/HT204023 Personal Hotspot] *[https://support.apple.com/HT200285 Wallpaper] *[https://support.apple.com/HT207955 Sounds] *[https://support.apple.com/HT204031 Language & Region] ===Key Points=== *Some Phone call features features on iPhone behave differently on GSM and CDMA networks. *FaceTime and Messages includes lots of features and benefits. Study them to educate the customer and troubleshoot issues. *Wallet & Apple pay features are regional. Check to see where your customer wants to use these features. *Personal Hotspot requires a supported carrier plan. *You must be familiar with iOS settings to help educate the customer and troubleshoot issues. ==macOS Fundamentals== Review default desktop - menu bar (Apple menu, active app menu, Status menu, icon menu), dock Working with an experienced technician, locate and identify the following Desktop components on a Mac running macOS Mojave. Review what each component does and discuss the functions of the drop-down menu elements. *Apple Menu () *Application Menu *Menu bar *Status menu *Spotlight icon *Notification Center icon *Desktop *Dock The cursor will increase in size temporarily when moved rapidly - allows you to locate the cursor quickly - feature is controlled from the Accessibility pane in System Preferences. ===Helpful Links=== [https://support.apple.com/guide/mac-help/mh35695/10.14/mac/10.14 Pointers in macOS] [https://support.apple.com/guide/mac-help/mh35852/10.14/mac/10.14 Drag and drop items] [http://support.apple.com/HT204014 HT204014 - Use Spotlight on your Mac] [https://support.apple.com/guide/mac-help/mchlp2811/10.14/mac/10.14 Spotlight Preferences] [https://support.apple.com/HT201236 HT201236 - Mac keyboard shortcuts] [https://support.apple.com/HT204895 HT204895 - Use Multi-Touch gestures on your Mac] [http://support.apple.com/HT204100 HT204100 - Use Mission Control on your Mac] [https://support.apple.com/guide/mac-help/mh14112/10.14/mac/10.14 Work in multiple spaces on Mac] [https://support.apple.com/HT204216 HT204216 - Mac tips for Windows switchers] *Equivalent of Control-Alt-Delete on Windows = Command-Option-Escape *Equivalent to the Windows Key = Command *How long to hold down power button to force Mac to turn off = 5 seconds *Immediately log out of user account = command-shift-option-Q *Finds next occurrence of an item previously found = command-G ===System Preferences=== [https://support.apple.com/guide/mac-help/mh15217/10.14/mac/10.14 Customize your Mac with System Preferences] System Preferences can be organized by category (default) or alphabetically.  If organized by category, 3rd party preferences will be in a section at the bottom.   ===Siri on Mac=== Siri can open files, send messages or find answers/info using voice commands. *[https://support.apple.com/guide/mac-help/mchl6b029310/10.14/mac/10.14 Use Siri on your Mac] *[http://support.apple.com/HT206993 HT206993 - How to use Siri on your Mac] ===Practice - Part 1=== ====Dock==== *Launch an application from the Dock *Observe additional options by control-clicking on icons in the Dock *Identify application states (not running, launching, open) using the Dock *Add and remove applications, files, and folders to and from the Dock ===='''Applications, Files, and Folders'''==== *Create files and folders *Move files and folders to a folder *Move files and folders to a Finder window sidebar *Create, edit, and delete a smart folder ===='''Customize how files and other information are displayed on the Finder desktop and in the Sidebar'''==== *Access contextual menus using a one button mouse *Reset the application used to open a file *Make an archive of a folder *Identify differences in the Finder desktop when Stacks is on versus when Stacks is off. ===Practice - Part 2=== ===='''Basic OS Tools and Techniques'''==== *Review Mac OS X System Preferences *Explore settings in the System Preferences *Locate and use About This Mac to identify hardware and software within the Mac system *Locate the serial number for the Mac *Locate and run Software Update on the Mac system *Hide and show running applications *Minimize and maximize windows ===='''Search Techniques'''==== *Locate files on a Mac using Spotlight *Select a file in a Spotlight search to see a preview of its contents *Locate files on the computer using Finder Search *Narrow search to a specific location ===='''Dashboard/Widgets'''==== *Configure a widget *Add and remove widgets from the Dashboard bar *Customize Dashboard behavior. ===Key Points=== *There are different cursors in macOS based on what you are doing. *Spotlight helps you quickly find things on your computer and shows suggestions from Internet resources. *macOS has equivalent key commands for Windows key commands. *Customization of the macOS is done via System Preferences. *You can use Siri to open files, send messages, or find answers and information. *Notification Center lets you view details about your day. *There are multiple mouse and trackpad gestures that enable a wide array of macOS functions. *Mission Control allows switching between applications or Spaces. ==Mail Basics== Mail is Native to several Apple OS and devices. Before helping customers set up mail, make sure they have email address/password.   ==='''Support References'''=== *[http://support.apple.com/HT204093 HT204093 - Use Mail on your Mac] *[http://support.apple.com/HT201320 HT201320 - Set up an email account on your iPhone, iPad, or iPod touch] Apple also provides an online tool called [http://www.apple.com/support/mail-settings-lookup/ Mail Settings Lookup]. It lists account information based on an email address lookup.  Customers can use this tool to verify that the settings are correct before setting up Mail. If the settings are correct, help the customer to login to the email account in Safari. ==='''iMAP'''=== - Internet Message Access Protocol - best if customer checks email from multiple devices, stored by email provider until they are deleted.  Mailbox stays the same on each device as long as connected to internet. More versatile. ==='''POP'''=== - Post Office Protocol - if used on multiple devices, changes do not appear on every device, new messages delivered to one device may not be delivered to, read, or deleted on other devices. With Mail for iOS you can view, reply, filter, [https://support.apple.com/HT207132 search], [https://support.apple.com/HT207213 organize], and use [https://support.apple.com/HT206885 Markup] right from your iPhone, iPad, or iPod touch. Follow the steps in the interaction below to see some of these functions on an iPhone. If your customer cannot send or receive email in macOS, use [http://support.apple.com/HT204173 Mail Connection Doctor] to learn more about the issue. ==='''Support References'''=== *[https://support.apple.com/guide/mail/troubleshooting-mail35552/11.0/mac/10.13.4 Mail troubleshooting] *[http://support.apple.com/HT204075 HT204075 - If you can't send or receive email on your Mac] *[http://support.apple.com/HT201419 HT201419 - If you can’t send or receive emails on your iPhone, iPad, or iPod touch] *[http://support.apple.com/HT205263 HT205263 - If Mail on your Mac downloads messages only when you open them] ===Key Points=== *Before you help customers set up email, make sure they have the necessary configuration information. *Apple provides an online tool called Mail Settings Lookup that lists account information based on an email address lookup. *IMAP (Internet Message Access Protocol) allows a customer to check email from multiple devices. POP does not. *If your customer cannot send or receive his email in macOS, use Mail Connection Doctor to learn more about the issue. ==Networking Fundamentals== Why is network connectivity important? All of Apple's devices are communication tools that rely on some form of network access.  When these devices are unable to connect to the Internet or a network, customers will often feel a variety of emotions such as anxiety, frustration, and anger.  All of us have become dependent on the Internet for work, school, friendships, entertainment, and personal organization. Without Internet access, customers can often show emotion as they have a strong need for this functionality.  It is important that we recognize this when acknowledging, aligning, and assuring our customers' emotions. Troubleshooting challenges - cannot bring their network into the store, may not know every configuration detail of their network setup, issues may be environmental such as inference or traffic/bandwidth, multiple variables can make isolating the issue difficult, settings can be difficult to configure or explain, 3rd party hardware/software, dependent on IT departments for config settings.  Network troubleshooting is a partnership between customer, Apple, ISP, IT dept, and 3rd party hardware. Apple hardware/software are dependent on other 3rd party variables to establish and maintain network settings. Goal when assisting with network related issues - verify that the Apple product harware/software are functioning correctly, give customers next steps/options, always try to be helpful. Other help options - Apple support articles, online 3rd party support articles, contacting ISP, contacting 3rd party manufacturer, contact AppleCare phone center, hire an Apple Consultant for onsite service. All networks are made of three basic elements - nodes, links and protocols.  Identifying the elements is critical to isolating the issue. Identify the equipment variables involved by asking the customer relevant probing questions. ==='''Nodes'''=== - any computer or network accessible mobile device - includes switches, gateways and routers. ==='''Links'''=== - connect nodes - cables, phone line, wifi, bluetooth, infared. ==='''Protocols'''=== - languages needed to communicate elements. ==='''IP addresses'''=== - Internet Protocol - number that IDs each computer across the internet or a network.  Without it, you cannot send/receive info on the internet. Two methods of obtaining IP address - Automatically using DHCP (Dynamic Host Config Protocol) - automatically assigned IP from the router/DHCP server. Manually - Your ISP or network admin gives you Working with a Mac running macOS High Sierra, access the Network System Preference join a LAN. Review these articles before you begin. *[https://support.apple.com/guide/mac-help/choose-a-manual-ip-address-or-use-dhcp-mchlp2718/10.13/mac/10.13.4 Choose a manual IP address or use DHCP] *[https://support.apple.com/guide/mac-help/resolve-ip-address-conflicts-mh27606/10.13/mac/10.13.4 Resolve IP address conflicts] Network connectivity is typically config when OS are initially set up or upgraded.  Also configured by selecting available wifi network or plugging into ethernet connection.   Connect to a network through system preferences and network pane.  By default they are usually automatically configured but can be configured manually if needed. By default, network is saved for future use but can be turned off if desired. Using a Mac running macOS High Sierra, set up a network connection for both wired and wireless networks. Review these articles prior to the practice. *[http://support.apple.com/HT201974 HT201974 - Manage the Wi-Fi connection on your Mac] *[http://support.apple.com/HT201735 HT201735 - How to connect to the Internet with your Mac] iOS device - settings > wifi > select network.  Ask to join - periodically scans for new wifi networks and prompted to join new wifi networks not previously joined that it discovers. Set up wireless connectivity for an iOS device running iOS 11 or later. Review this article prior to exercise. *[https://support.apple.com/en-us/HT202639 HT202639 - Connect to Wi-Fi on your iPhone, iPad, or iPod touch] If possible, practice connecting to all three types of WiFi network described in the article ==='''Bluetooth'''=== - short range connections.  Must be paired to device in order to communicate.  System Preferences > Bluetooth. Keyboards, mice, etc. can also be set up in respective preference panes on macOS. Some devices require passcode or PIN in order to pair. Manually connect on macOS by right clicking on devices in bluetooth pane. On a Mac, use the Bluetooth pane in System Preference to verify Bluetooth connected devices. Bluetooth wireless keyboards, mice, and trackpads are set up using the respective System Preference panes, rather than the Bluetooth System Preference pane. *Bluetooth keyboards use the Keyboard pane. *Bluetooth mice use the Mouse pane. *Bluetooth trackpads use the Trackpad pane. Pair and then unpair a Bluetooth device to a Mac running macOS High Sierra and a Bluetooth device running iOS 11 or later.  Review these articles before you begin. *[http://support.apple.com/HT201171 HT201171 - Using a Bluetooth mouse, keyboard, or trackpad with your Mac] *[https://support.apple.com/en-us/HT204091 HT204091 - Pair a third-party Bluetooth accessory with your iPhone, iPad, or iPod touch] ==='''AirDrop'''=== - quick transfer of files between 2 apple devices using wifi.  Do not have to be connected to same network because the devices automatically set up a direct wireless connection for AirDrop.  Can also AirDrop from the share feature in applications. Set up an AirDrop connection to transfer a file between a Mac running macOS High Sierra and an iOS device running the latest version of iOS. Review this article prior to exercise. *[http://support.apple.com/HT203106 HT203106 - Use AirDrop to send content from your Mac] ==='''AirPlay'''=== - streams music, video and other content wirelessly from Mac/iOS to HDTV via Apple TV.  AirPlay also allows to stream music to AirPlay enabled speakers, receivers, or Airport Express devices.  AirPlay mirroring wirelessly mirrors screen of Mac or device to HDTV. AirPlay 2 (2018) adds ability to play music across multiple speakers and use Siri to control where it’s playing.  Read Apple Support article [http://support.apple.com/HT201343 HT201343 - Use AirPlay to display video from your Mac on an HDTV]. Read Apple Support article, [http://support.apple.com/HT202809 HT202809 - How to AirPlay audio to wirelessly stream content from iTunes on your computer]. Best Practices *While mirroring your Mac to a TV or projector, go to System Preferences > Displays. From here, you can adjust settings to provide the best possible Airplay Mirroring image. *An HDTV will often apply picture quality enhancements intended to improve the look of film and video sources. In some cases, these enhancements can lead to over-sharpening artifacts when displaying the Mac desktop. Consult the HDTV's manual for guidance on the appropriate settings for use with a computer. Support Reference Read Apple Support article, [http://support.apple.com/HT202763 HT202763 - About overscan and underscan on your Mac, Apple TV, or other display]. Set up AirPlay between a Mac or iOS device and an Apple TV. Read Apple Support articles [http://support.apple.com/HT202809 HT202809 - How to AirPlay audio]  and [https://support.apple.com/en-us/HT204289 HT204289 - AirPlay video from your iPhone, iPad, or iPod touch]. ===Support References=== Use the following resources and the content of this course to answer the questions on the next page: *[http://support.apple.com/HT201974 HT201974 - Manage the Wi-Fi connection on your Mac] *[http://support.apple.com/HT201735 HT201735 - How to connect to the Internet with your Mac] *[http://support.apple.com/HT201171 HT201171 - Using a Bluetooth mouse, keyboard, or trackpad with your Mac] *[http://support.apple.com/HT203106 HT203106 - Use AirDrop to send content from your Mac] *[http://support.apple.com/HT201343 HT201343 - Use AirPlay to display video from your Mac on an HDTV] *[http://support.apple.com/HT202763 HT202763 - About overscan and underscan on your Mac, Apple TV, or other display] *[http://support.apple.com/HT202809 HT202809 - How to AirPlay audio] ===Key Points=== *Network troubleshooting is a partnership between the customer, Apple, Internet Service Provider, IT department, and 3rd party hardware. *Nodes are devices. *Links are communication channels. *Protocols are rules for devices using channels. *IP addresses can be obtained manually or automatically. *Bluetooth devices must be paired to Macs or iOS devices. *Bluetooth Keyboard, Mouse, and Trackpad have corresponding System Preference panes. *AirDrop enables the quick transfer of files between two Apple devices using Wi-Fi. *AirPlay is a technology for streaming music, video, and other content wirelessly from Mac or iOS devices to an HDTV via Apple TV. ==iCloud Fundamentals== [https://support.apple.com/icloud iCloud] is a free service from Apple.  - gives customers access to their music, photos, contacts, calendars, and other materials across multiple devices.  also provides options to back up or locate a missing device. To get the best experience, [http://support.apple.com/HT204230 it is recommended that iCloud users have up to date software]. To set up - if at www.icloud.com - customer must already have a valid Apple ID.  Apple ID To set up using an @icloud.com address, they must own a Mac, iOS device, or Apple TV.  Can use setup assistant either in System Preferences or settings (iOS). Possible support issues - common issues - sharing Apple ID or iCloud account with another family member or having multiple Apple IDs which causes confusion setting up iCloud.  Using multiple IDs is confusing and may cause issues when accessing purchased content or using some services. IDs cannot be merged.   While not recommended, some customers may want to use one [https://support.apple.com/HT203983 Apple ID for iTunes Store, App Store, and iBook Store purchases and another Apple ID for iCloud.] https://support.apple.com/en-us/HT204230 ==='''iCloud Drive in iOS'''=== - settings - name of account - iCloud Drive - turn on - upgrade all devices in order to access files from anywhere, can decide which services to share on drive. ==='''iCloud Drive in macOS'''=== - system presences - get to know this section and how to purchase more iCloud Drive space. ==='''iCloud photos'''=== - get to know how to enable in macOS, With [http://support.apple.com/HT204264 iCloud Photos], all the photos and video in your customer's photo library are stored in iCloud, and can be accessed from a Mac, iOS device, and on iCloud.com. Make sure to know how to share albums.   You CAN organize your photos on iCloud.com. [https://support.apple.com/HT207689 iCloud features] [https://support.apple.com/HT204055 Archive data] on a computer before turning off features, or turn off iCloud completely. (Reviewed - sync features - mail, contacts, calendar, reminders, notes apps where changes are updated on each device - ==='''iCloud Keychain'''=== [https://support.apple.com/HT204085 iCloud Keychain] keeps Safari website usernames and passwords, credit card information, and Wi-Fi network information up to date across all approved devices. Watch the video to learn how to [https://support.apple.com/guide/mac-help/set-icloud-keychain-information-secure-mh43699 setup], [https://support.apple.com/HT203783 manage], and use iCloud Keychain on a Mac and iOS device. Choosing to use a random security code automatically uses complex security code options.  '''Apple cannot recover a lost code.''' Complex security code allows them to choose an alphanumeric code of their choice.  Random is automatically complex and chosen.   ==='''Find My iPhone'''=== [https://support.apple.com/explore/find-my-iphone-ipad-mac-watch Find My iPhone] helps customers [https://support.apple.com/guide/mac-help/mhd3cb35e1ed/10.14/mac/10.14 locate] and protect devices if they are ever lost or stolen. Watch this video to learn how to setup and use Find My iPhone on a Mac and iOS device. Finds approximate location of iOS devices. Find my iPhone needs Apple ID logged on and find my turned on, needs to be online, awake, and in range of a known wifi network.  Travel to device with car icon, play sound if nearby even if in silent mode, lost mode will lock with passcode can display custom message on screen, attempts to suspend any cards stored in Apple pay.  To turn off lost mode, enter passcode. Cannot be used to play sound if has been erased.   *Customers who have joined Family Sharing can use Find My iPhone to help find and protect their family members' iOS devices and Mac computers when [https://support.apple.com/HT201087 location sharing has been activated]. *If a customer gives away or sells their older Apple products, they can and should [https://support.apple.com/en-us/HT201351 remove them from their account] using Find My iPhone. ==='''Family Sharing'''=== [https://support.apple.com/HT201060 Family Sharing] enables up to six people in a family to [https://support.apple.com/HT201085 share purchases] from iTunes, iBooks, and the App Store without sharing accounts. Watch this video to learn how to [https://support.apple.com/HT201088 setup] and use Family Sharing on the Mac and iOS devices. Apple ID is needed.  Set up family sharing through iCloud menu.   ===Key Points=== *Customers can pick and choose which iCloud services to use and can archive data before turning off features. *If users keep all of your Apple devices signed in to iCloud you can then use Find My Phone to locate, erase, or lock them. *Back to My Mac has strict network and router requirements. *Family Sharing requires detailed setup and only shares supported content. *Although not recommended, customers may use one Apple ID for iTunes Store, App Store, and Apple Books Store purchases and another Apple ID for iCloud. ==Basic Troubleshooting== Systematic troubleshooting is a required skill which is used to isolate issues correctly. Technicians should use all the information present, rather than "template match" or jump to conclusions based on familiarity, past experience, or too little information.   ===Systematic Troubleshooting=== Systematic troubleshooting uses deductive reasoning to correctly isolate an issue before coming to a conclusion. It examines what is possible and what is not possible. Troubleshooting Apple devices may require tests, a thorough examination, a history, and a skilled practitioner. Template matching - Avoid!  Don’t let previous experience with a repair lead you to the wrong conclusion.  Always use systematic troubleshooting. Deductive reasoning is at the core of troubleshooting. It is a logical thinking process that moves from general to specific. Deductive reasoning is based on premises. If the premises are true, then the reasoning is valid. The reasoning statement starts with the premise and often uses an if/then format. IMPORTANT:  The core of the troubleshooting and diagnostic process is the ability to narrow down the information given and draw logical conclusions. To diagnose an issue you need to understand the relevant facts of the circumstances then discard any distractors or irrelevancies. From the relevant facts you can deduce likely causes. ===Evaluate, Isolate, Resolve=== Apple's systematic troubleshooting supposes that all possible issues are based on one of four root causes: Hardware, Software, the device's Environment or Education Opportunity which denotes the customer's inexperience. The troubleshooting process involves three principal stages: *Evaluate   *Isolate *Resolve First stage is evaluate the issue.  Gather information about the issue. Consult with customer, Apple resources, and physically inspect device.  Ask yourself what is the customer telling me. Listen to what customer is saying, ask relevant probing questions to determine what information relates to the issue and what does not, Have customer reproduce the issue and observe their actions.  After gathering sufficient information from customer, observed how they are using their device then check issue against Apple resources. Ask yourself what does the device tell me? Perform a visual/mechanical inspection - necessary part of troubleshooting process.  Check for physical obstruction, peripheral, or damage present causing the issue.   Isolate the problem to one of four problem spaces - Hardware, software, education opportunity, or environment.  Start by asking yourself is device related or not device related. If device related, the issue will exist in the Hardware or Software problem spaces.  If not device related, will exist in education opportunity or environmental problem spaces. Hardware problem space includes issues related to hardware failures.  Resolutions generally require repairing device with parts or replacing device. Software problem space - directly related to software installed on a device.  Simply restarting device resolves many issues. Issues may affect system software or only applications/files installed by the user.  Resolutions may include toggling specific settings, resetting specific settings, updating software, reinstalling software. May possibly have to remove specific files, apps, or other data related to the issue. Educational Opportunities are not actual issues but opportunity to educate the customer and reset expectations related to their device.  Customer may think there is an issue, but really they are misinformed about what the device is capable of or may be performing a task incorrectly.  Validates importance of having the customer reproduce the issue.   Environmental problems - can be difficult to isolate because they are hard to reproduce.  Ex - dropping calls, unable to join a specific network, wireless interference.   Key Points - When you properly evaluate and isolate an issue, finding the right resolution for your customer is a simpler process.  Remember to uncover as much information as possible during the evaluation phase. This will aid you during isolation. Kinds of resolutions you can offer: *Repair without using parts. *Repair using parts *Reinstalling or updating software *Educating the customer *Directing the customer to 3rd party resources. When customers are mistaking, avoid blaming them or making them wrong.  Ex - Don’t “You are wrong, iPad with Retina display can take photos” Right - “It turns out, iPad with Retina display can take photos.” Use gentle corrective phrases - I can see how you would think that, in fact....  The reality is..... The way it works is.... What really happens.... As it turns out....  Let me show you another way to..... ==='''Key Points'''=== *Systematic troubleshooting is a skill required by techs used to isolate issues correctly using all of the info present. *Systematic troubleshooting uses deductive reasoning to correctly isolate an issue before coming to a conclusion.  Accurate troubleshooting relates directly to Apple’s service business success and to meeting its performance metrics *Deductive reasoning is the logical thinking process, which moves from general to specific. *The core of the troubleshooting and diagnostic process is the ability to narrow down the information given and draw logical conclusions. *To diagnose an issue, you need to understand the relevant facts of the circumstances then discard any distractions or irrelevancies.   *The troubleshooting process involves three principal stages:  Evaluation, Isolate, Resolve. *Apple’s systematic troubleshooting supposes that all possible issues are based on one of four root causes:  Hardware, software, environment, education opportunity. ==Continuity== Continuity consists of several components with unique features. Use the following articles and the links they contain to answer quiz questions about these components. *[https://support.apple.com/en-us/HT204681 HT204681 - Use Continuity to connect your Mac, iPhone, iPad, iPod touch, and Apple Watch] *[https://support.apple.com/en-us/HT204689 HT204689 - System requirements for Continuity on Mac, iPhone, iPad, iPod touch, and Apple Watch] ==='''Handoff'''=== feature allows a user to start working in one device and then switch to a nearby device to continue that work.   *Needs to be signed into iCloud on each device *Each device must have Bluetooth enabled. *Each device must have Wifi turned on and be connected to the same network via WiFi or Ethernet. ===='''System Requirements'''==== Listed below are the hardware and software requirements to use Handoff. {| class="wikitable" | *iPhone 5 or newer *iPad Pro (all models) *iPad (4th generation) or newer *iPad Air or newer *iPad mini or newer *iPod touch (5th generation) or newer *iOS 8 or later | *MacBook (Early 2015 or newer) *MacBook Pro (2012 or newer) *MacBook Air (2012 or newer) *Mac mini (2012 or newer) *iMac (2012 or newer) *iMac Pro (all models) *Mac Pro (Late 2013) *Yosemite or later |} *[https://support.apple.com/en-us/HT204681 HT204681 - Use Continuity to connect your Mac, iPhone, iPad, iPod touch, and Apple Watch] *[https://support.apple.com/en-us/HT204689 HT204689 - System requirements for Continuity on Mac, iPhone, iPad, iPod touch, and Apple Watch] ===How tos=== *On your Mac: Choose Apple () menu > System Preferences, then click General. Select "Allow Handoff between this Mac and your iCloud devices." *On your iPhone, iPad, or iPod touch: Go to Settings > General > Handoff, then turn on Handoff. *On your Apple Watch: In the Apple Watch app on your iPhone, tap General and turn on Enable Handoff. From your iOS device, you have two options. #If you are on the Lock screen, swipe up from the bottom-left edge of the screen, where you see the app's icon. #You can double-click the Home button, then tap the app banner at the bottom of the multitasking screen. Continuity allows the text messages sent on an iPhone to be sent and received on a Mac or other iOS device. Any Mac that can run Yosemite or later and any iOS device running iOS 8 or later can use this feature.  Customers can set this up on the iPhone under Settings > Messages. Tap Text Message Forwarding to enable the device in the list of devices. The list is generated by signing into iCloud on all devices. Open Messages on the Mac or iPad. When the six-digit code appears, enter this code on the iPhone, and tap Allow. Review [https://support.apple.com/en-us/HT207006 HT207006 - About iMessage and SMS/MMS]. With Continuity customers can answer cellular calls on their Mac or iOS devices. The devices must be using the same Apple ID, signed into iCloud and FaceTime, have Wi-Fi enabled, and be connected to the same network via Wi-Fi or Ethernet.  Their devices must have these settings: *On iPhone, go to Settings > Phone > Calls on Other Devices, then turn on Allow Calls on Other Devices. *On iPad or iPod touch, go to Settings > FaceTime, then turn on Calls from iPhone. *On Mac, open the FaceTime app, then choose FaceTime > Preferences. Click Settings, then select Calls From iPhone. Trick question answer!  You cannot begin a call on your iPhone and transfer to Mac via FaceTime. Some carriers support Wi-Fi calling on other devices, which is different than Continuity and Cellular Calls. You can set up those devices to make and receive calls even when your iPhone isn't turned on or nearby. Review [https://support.apple.com/en-us/HT203032 HT203032 - Make a call with Wi-Fi Calling] for more details. If a customer's carrier offers cellular hotspot as a feature, and the customer is using iCloud, the customer's Mac can automatically join their iPhone or iPad's cellular connection as long as both devices are signed into iCloud using the same Apple ID.  Advise customers to make sure Bluetooth and Wi-Fi are turned on. They can join their instant hotspots like any other wireless network. They should look for the name of the device with the data plan. They will know they are connected when the Wi-Fi logo looks like this: A customer's device must have an activated carrier plan providing Personal Hotspot service. If you would like more information about troubleshooting a Personal Hotspot issue please read the support article [https://support.apple.com/en-us/HT203302 HT203302 - If Personal Hotspot is not working on your iPhone or iPad (Wi-Fi + Cellular)]. With Universal Clipboard, you can [https://support.apple.com/guide/mac-help/copy-and-paste-across-devices-mchl70368996/10.13/mac/10.13.4 copy text, images, photos, and videos] on one Apple device and then paste the content on another Apple device. Review [https://support.apple.com/en-us/HT206995 HT206995 - How to unlock your Mac with your Apple Watch] and answer the following questions. If your customer has already set up Two-Step Verification and wants to switch to Two-Factor Authentication, visit the support article: *[https://support.apple.com/en-us/HT207198 HT207198 - Switch from two-step verification to two-factor authentication] To learn more and to set up Two- Factor Authentication, visit the support article: *[https://support.apple.com/en-us/HT204915 HT204915 - Two-factor authentication for Apple ID] ===Key Points:=== *Continuity services require all devices be signed into iCloud with same Apple ID, have Bluetooth and WiFi running *When troubleshooting continuity issues, ensure that the devices you are checking comply with hardware and OS requirements. *Handoff requires setup of both the iOS device and the Mac. *IMessage is encrypted but SMS/MMS is not. *To answer cell calls on Mac or iOS device, the customer’s devices must be using the same Apple ID, signed into iCloud and FaceTime, have WiFi enabled and be connected to the same network via WiFi or Ethernet *To use Instant Hotspot, a customer’s device must have an activated carrier plan providing personal hotspot use. *To use Auto Unlock, the Apple Watch needs to be quite close to the Mac it is attempting to unlock. ==Apple Watch and watchOS== [https://www.apple.com/watch/ Apple Watch] marries fitness tracking and health-oriented capabilities with integration with iOS and other Apple products and services. ===Customer interaction / Troubleshooting=== - Only works when worn.  You need to enter the customer’s personal space in order to troubleshoot.  Ask for permission to come close or try a troubleshooting step. Individuals personal space is typically 1.5 to 4 feet.  Personal zone. Explain that you would like to partner with in order to resolve. Must stand next and observe them reproduce the issue in order to resolve.  If worn on left wrist, stand next to them on the right. Ask to rest watch on counter. Be mindful of personal space. Show empathy if they feel uncomfortable. Because you enter the customer's personal space, partnering with an Apple Watch wearer demands highly-polished customer engagement skills. Extra attention must be paid to clear communication and use of the right words, demonstrated respect, asking for permission, and setting expectations. For some operations, the customer is required to wear Apple Watch—the changes cannot be made when the watch is removed from the wrist. This means you will have to stand next to the customer and give him or her directions from the Personal Zone, usually reserved for friends. In addition to feeling that you are "too close", some people some people become nervous when they are observed in the "driver's seat," and others are displeased at having to do the work themselves, they prefer to hand over the Apple Watch and have you fix it. Your skill in setting expectations, describing the process before it begins, and acting professionally and respectfully can put them at ease as you give clear directions for troubleshooting and issue resolution. {| class="wikitable" |The customer relies on your technical troubleshooting expertise. You instill confidence in the customer by showing that you understand the capabilities and specifications of each Apple Watch model. This makes your troubleshooting less prone to avoidable mistakes and it helps the customer do more with their device.  Many perceived customer support issues may not be an actual hardware or software matter at all. Instead, they might be an opportunity to educate the customer. For example, Fall Detection is a new feature only available on Apple Watch Series 4 models. Customers might hear a friend talking about this new feature and wonder why they do not have this feature on his or her Apple Watch. Instead of performing an unnecessary hardware repair which will not resolve the issue, you can educate the customer. You will learn more about Fall Detection in the watchOS 5 chapter in this course. |} Go to [https://support.apple.com/guide/watch/a-quick-look-at-apple-watch-apd8b5deac7b/watchos A Quick Look at Apple Watch], page in the [https://support.apple.com/guide/watch/welcome/watchos Apple Watch User Guide], to see the functional picture of Apple Watch. Starting at the first row, match the function to the number by dragging the items up or down in the right column to re-order them. Tap or click Submit. ===Features=== Take a few minutes and compare Apple Watch features and specifications using [https://www.apple.com/watch/compare www.apple.com/watch/compare]. Apple Watch Series 4 is available in 40mm and 44mm sizes whereas Apple Watch (1st gen), Series 1, 2, and 3 were available in 38mm and 42mm. Even though the watch sizes have changed in Series 4, watch bands are backwards and forwards compatible. For example, a 38mm (1st gen), Series 1, 2, or 3 band works with a 40mm Series 4 watch. Also, a 42mm 1st (gen), Series 1, 2, or 3 band works with a 44mm Series 4 watch. If a customer cannot pair their Apple Watch Series 4 to an iPhone, be sure to explain both the hardware and software requirements to them. *Apple Watch Series 4 (GPS + Cellular) and Apple Watch Series 4 (GPS) come with watchOS 5 installed and are not compatible with previous versions of watchOS. *iPhone 6 or newer with iOS 12 installed is required to pair with Apple Watch Series 4 (GPS + Cellular). This is because the iPhone must include Voice-over-LTE (VoLTE) technology for cellular connectivity. *iPhone 5s or newer with iOS 12 installed is required to pair with Apple Watch Series 4 (GPS). Apple Watch Series 4 (GPS + Cellular) can be identified by a thin red line around the edge of the Digital Crown. The Digital Crown on Apple Watch Series 3 (GPS + Cellular) model is filled in red, not just around the edge. Apple Watch Series 4 can now detect if you have taken a hard fall and alerts you with a prompt for user response. Apple Watch can initiate an SOS call to emergency services if you are immobile for about a minute. The Fall Detection feature requires Apple Watch Series 4. Customers with previous watch models might be looking for this feature and cannot find it because it is not compatible with their device. It is important to research which software features have a hardware requirement before setting incorrect expectations with the customer. For Apple Watch Series 4 to call emergency services on its own, the following sequence of events needs to happen: #You take a hard fall and receive a fall alert. #There is little to no motion for about a minute after the alert. #You ignore the “about to call emergency services” message, haptic, and SOS sounds that happen for 15 seconds. *Educate customers that Apple Watch Series 4 cannot detect all falls. The more physically active you are, the more likely you are to trigger Fall Detection due to rapid motion that can appear to be a fall. *Confirm the customer is using an iPhone running iOS 12. *Confirm the customer has an Apple Watch Series 4 running watchOS 5. *You can toggle Fall Detection from the Emergency SOS settings in the Watch app on your iPhone. *Fall Detection is enabled by default for customers who set their age as 65+ during setup. If the customer is under 65 the feature will be off by default. Refer to the following Apple Support articles for more information: *[https://support.apple.com/HT208944 HT208944 - Use fall detection with Apple Watch Series 4] *[https://support.apple.com/HT206983 HT206983 - Use Emergency SOS on your Apple Watch] Apple Watch Series 4 includes exciting new hardware features, new watch bands, and accessories. Review the links below to learn more about these features. *[https://support.apple.com/manuals/applewatch Apple Watch Series 4 User Guide] *[https://support.apple.com/watch Apple Watch - Official Apple Support] *[https://support.apple.com/HT204818 HT204818 - Change your Apple Watch band] *[https://support.apple.com/HT204507 HT204507 - Identify your Apple Watch] *[https://support.apple.com/HT204520 HT204520 - How to find the serial number or IMEI for your Apple Watch] ===WatchOS=== With watchOS 5, customers will get new features and functionality which allow them to do even more with their existing hardware. As a result, customers are going to have questions about what is new or what has changed.  Certain software features might require a certain model of Apple Watch hardware. As such, your customer might be looking for a feature that does not exist on his or her device. This is an opportunity to educate your customer and avoid unnecessary software or hardware repairs. With each software release, there are numerous new features which can make it difficult for users to stay informed of what is new. *http://www.apple.com/watchos/ *[https://help.apple.com/watch/ Apple Watch User Guide] Read each feature presented The gestures illustrated in the images below are needed to use Apple Watch and its apps. The Apple Watch display not only responds to touch-based gestures like tapping and swiping, but it also uses Force Touch technology to respond to the pressure of a finger. Find My iPhone includes a feature called Activation Lock that is designed to prevent anyone else from using your Apple Watch if it is ever lost or stolen. Read [https://support.apple.com/en-us/HT205009 About Activation Lock] on your Apple Watch for more information, then follow the simulation below. Walkie-Talkie is a new, easy way to have a one-on-one conversation with anyone who has a compatible Apple Watch. Whether you are at a concert or trying to find someone on a crowded beach, you are in touch with a tap. When you open the Walkie-Talkie app, you will see a list of people with an Apple Watch you often call, text, or FaceTime. Choose a contact and invite him or her to join you. Press to talk then let go to listen. Audio sent and received will be instant, and will play automatically. *If you turn on Theater Mode or Do Not Disturb, it automatically makes you unavailable to talk with Walkie-Talkie. *If you want any of your contacts to be able to reach you at any time, accept their invite and keep your availability turned on. *The FaceTime app needs to be installed on the paired iPhone in order for the Walkie Talkie app to appear on the Apple Watch. Refer to the following Apple Support article for more information: *[https://support.apple.com/HT208917 HT208917 - Use Walkie-Talkie on your Apple Watch] Podcasts are now available on Apple Watch, so you can stay connected to the stories, personalities, and news you love. The content will sync automatically so the next several episodes are ready to listen to. You can also use Siri to search for and stream any show available on Apple Podcasts. Synced podcasts on Apple Watch are available for playback offline. Settings to customize what is synced (including Notifications from the phone) are available inside of the Watch app > Podcasts. *Apple Watch must be charging for Podcasts to sync from a paired iPhone to Apple Watch. *A cloud icon indicates which Podcasts are not already downloaded. *A progress icon on the Podcast artwork indicates when a download is in progress. Support Reference For more information refer to the Apple Watch User Guide. {| class="wikitable" |With Apple Watch Series 4 (GPS + Cellular) and Apple Watch Series 3 (GPS + Cellular), you can make and receive calls, send and receive messages and get calendar and email updates over cellular even when your iPhone is away from your Apple Watch.  These models will allow for cellular connectivity on LTE (3G and 4G in some locations). To cover the LTE and UMTS bands used around the world, there are three separate cellular models for Series 3, and two separate models for Series 4—each tailored to the locale where it is sold. There is no single model that supports roaming worldwide. For more information visit [https://www.apple.com/watch/cellular/ www.apple.com/watch/cellular/]. |} In order for Apple Watch Series 4 (GPS + Cellular) and Apple Watch Series 3 (GPS + Cellular) to place calls, you need to setup service with a supporting carrier. One common issue customers have while setting up cellular service is that their account is an enterprise account and their carrier does not yet support enterprise accounts or requires contacting the carrier to complete setup. Support Reference For more information on the cellular capabilities of Apple Watch Series 3 (GPS + Cellular) and supported carriers by country, refer to: *[http://apple.com/watch/cellular Apple Watch with cellular. Stay connected when you’re away from your phone.] To set up and use cellular service on Apple Watch Series 4 (GPS + Cellular) and Apple Watch Series 3 (GPS + Cellular), you must first update iOS and watchOS to the latest versions. Once both are up-to-date, check for updates to the carrier settings by navigating to Settings > General > About on the iPhone. If a carrier settings update is available, it will appear once you navigate to this menu. The iOS update has to be installed first because the carrier settings updates have a minimum iOS version number.  It is important to [https://support.apple.com/HT201270 update to the latest carrier settings] since they determine if Apple Watch supports cellular service for each carrier. Without the latest software and carrier settings, the Apple Watch may not successfully pair with the customer’s iPhone.  Without the latest carrier settings update, the button to "Set Up Cellular" will not work in the Watch app. The text below the button states, "Carrier does not currently support Apple Watch". Issues with the customer's carrier or account might affect their service.  Have the customer contact their carrier to: *Verify that their account is active and in good standing *Make sure there are no outages in their area *Check that their device is not blocked from receiving cellular services and is set up with the right data plan and provisioning If the customer still cannot connect to a cellular network, and they have confirmed with their carrier that there is not an issue with their account or network, the carrier should refer the customer back to Apple. ===Best Practices=== The troubleshooting performed for cellular connectivity on Apple Watch Series 4 (GPS + Cellular) and Apple Watch Series 3 (GPS + Cellular) is similar to the troubleshooting for cellular connectivity on an iPhone.  '''Toggle Settings''' *If the plan is active and they are in an area of coverage, have the customer turn on Airplane Mode on the companion iPhone and verify that Bluetooth and Wi-Fi are actually turned off on the iPhone. Verify that AirPlane mode does not turn on for the Apple Watch. *Wait 20 seconds to allow the user’s paired watch to join a cellular network. ===='''Restart'''==== *If the user still cannot establish a cellular connection, restart Apple Watch by pressing and holding the side button then slide to power off. Then press and hold the side button again to power on the device. *If the issue persists, have the customer contact their wireless carrier. ===='''Update'''==== *First, check to make sure you have the latest iOS software installed. *Next, tap Settings > General > About to check for an available carrier settings update. If an update is available, you will see an option to update your carrier settings. Until cellular activation has occurred, Apple Watch will show “No SIM” and no ICCID will be available. Support Reference For more information on troubleshooting cellular connectivity on Apple Watch Series 3 (GPS + Cellular) or later, refer to [https://support.apple.com/HT207578 HT207578 - Set up cellular on your Apple Watch.] Can Apple Watch with cellular use two different phone numbers? You can add multiple cellular plans to your Apple Watch Series 3 and 4 (GPS + Cellular). However, your Apple Watch can only connect to one at a time. When you set up multiple cellular plans using Dual SIM on your iPhone XS, iPhone XS Max, or iPhone XR, you can add both plans to your Apple Watch, then choose which one your watch uses when it connects to cellular networks. For more information refer to [https://support.apple.com/en-us/HT209043 HT209043 - Use Dual SIM with Apple Watch Series 4 (GPS + Cellular) and Apple Watch Series 3 (GPS + Cellular)]. ===Troubleshooting=== Most Apple Watch troubleshooting involves the following steps: #Reset Watch Settings/Unpair Apple Watch from iPhone. #Ask probing questions to determine the actual issue. Although the customer perceives an issue, Apple Watch might be behaving as expected. #Educate the customer about how to use Apple Watch and what to expect. #Restart Apple Watch. The Apple Watch and iPhone are designed to work in partnership. Some "Apple Watch" issues result from the customer's perception and are not Apple Watch issues at all. Rather, the issue might be with the iPhone, such as, *Airplane mode *Notifications *Messages *Weather app *Music streaming 1. Update to the Latest Software Before you begin Update the iPhone to the latest version of iOS. #Make sure that the Apple Watch is on its charger and is at least 50 percent charged. #Connect the iPhone to Wi-Fi. #Keep the iPhone next to the Apple Watch, so that they are in range. Update the Apple Watch #Keep the Apple Watch on its charger until the update completes. #On the iPhone, open the Apple Watch app, then tap the My Watch tab. Tap General > Software Update. #Download the update. If asked for an iPhone passcode or Apple Watch passcode, enter it. #Wait for the progress wheel to appear on the Apple Watch. It could take from several minutes to an hour for the update to complete. Leave the Apple Watch on its charger while the update completes. Do not restart the iPhone or Apple Watch, and do not quit the Apple Watch app. When the update completes, the Apple Watch will restart on its own. 2. Charge Apple Watch If battery power is low, a red lightning symbol will appear on the screen of the Apple Watch. Be sure to handle the Apple Watch and accessories safely, and always take off the watch before charging it. To charge the Apple Watch: #Plug the Apple Magnetic Charging Cable, Apple Watch Magnetic Charging Case, or Apple Watch Magnetic Charging Dock into its USB power adapter. #Plug the adapter into a power outlet or plug the charging cable into a USB port. #Position the back of the Apple Watch on the charger. The charger's magnets align the Apple Watch, and a charging symbol will appear on the watch face. #Allow Apple Watch time to charge. While the device is charging, a green lightning symbol appears on the screen of the Apple Watch. 3. Restart Apple Watch Most perceived issues with Apple Watch can be resolved with a restart. A restart forces the device to close all open files and turns off all hardware components. #Press and hold the side button until the Power Off slider is seen. #Drag the slider to turn off the device. #After the watch turns off, press and hold the side button again until the Apple logo is seen. 4. Force Restart Apple Watch Do not force restart the Apple Watch when updating watchOS. After the Apple logo and progress wheel appears, leave the Apple Watch alone until the update finishes. Force restart the device as a last resort and only if it is not responding. To force restart the Apple Watch, press and hold both the side button and Digital Crown for at least 10 seconds, then release both buttons when the Apple logo appears. 5. Unpair Apple Watch/Pair with new iPhone In some cases, it might be necessary to unpair the devices. Unpairing also erases the Apple Watch and restores it to the factory settings. #Keep the Apple Watch and iPhone close together when unpairing them. #Open the Apple Watch app on the iPhone. #Go to the My Watch tab and tap the watch at the top of the screen. #Tap the circled (i) icon next to the watch that is being unpaired. #Tap Unpair Apple Watch #For Apple Watch Series 3 (GPS + Cellular), choose to keep or remove the cellular plan. #If the customer wants to pair the Apple Watch and iPhone again, keep the plan. #If the customer does not want to pair the Apple Watch and iPhone again, remove the plan. If the customer is not going to pair with a different watch or iPhone, they might need to contact their carrier to cancel their cellular subscription. #Tap again to confirm. The customer might need to enter their Apple ID password to disable Activation Lock. Before erasing all content and settings on the Apple Watch, the iPhone creates a new backup of the Apple Watch. #The customer can use the backup to restore a new Apple Watch. After the Apple Watch unpairs, the Start Pairing message should appear. To pair with a new iPhone: #Turn on the Apple Watch. #Put on the Apple Watch. #Hold the iPhone over the animation. #Set up as new or restore from a backup. #Sign in with the Apple ID. #Choose the settings. #Create a passcode. #Choose the settings. For initial setup, refer to the Apple Watch Hardware chapter in this course. 6. Reset Apple Watch Settings #Open the “Settings” app on the Apple Watch and go to “General” #Scroll down and choose “Reset” #Tap on “Erase All Content and Settings” #Enter the passcode for the Apple Watch. # 7. Change Watch Band Change the band #Hold down the band release button, then slide the band across to remove it. #If the band does not slide out, press the band release button again and make sure that you hold it down. #Make sure the text on the band is facing you, then slide the new band in until you feel and hear a click. ===Diagnostics=== these tools help gather information and isolate hardware or software issues. AST 2 for iOS devices has support for watchOS devices. You can engage your customers with the diagnostic to help educate and provide confidence in the resolution you are offering.  In this section you will explore the available diagnostics for watchOS and how to interpret the results. Diagnostics: *Battery usage - analyzes power usage information to help identify the main causes of battery drain. *Display color uniformity - Assists in identifying non-uniform color issues, requires watchOS 3.2 or later. *Display image quality - assists in identifying distortion and flickering, requires watchOS 3.2 or later. *Display Pixel anomalies - assists in identifying pixel anomalies and debris.  WatchOS 3.2 or later. *Quick test that provides a health check of hardware and software. *Buttons - assists in identifying issues with buttons. Requires watchOS 2.0 or later. *Apple Watch display tests require watchOS 3.2 or later.  The iPhone paired with the Apple Watch must be running iOS 10.3 or later. Diagnostics can also be started using the Apple Watch serial number. Important - Do not mail in an Apple Watch to the depot if the battery diagnostics test indicates the battery performance is normal.  The depot has the same diagnostic capabilities as Apple Retail stores and will likely return the device unrepaired if the Apple Watch passes the battery diagnostics.  Instead of mailing in an Apple Watch, refer the customer to <nowiki>https://www.apple.com/batteries/maximizing-performance/</nowiki>. All Apple Watch models include an embedded, lithium-ion, rechargeable battery.  Avoid exposure to heat and open flame. Do not puncture, deform, crus, or incinerate as exposure to ingredients contained within or thei combustion products could be harmful.  During a fire, the battery may emit irritating gases and aerosols may be herniated by thermal decomposition and combustion. Swollen batteries - while a swollen battery is usually not a safety concern, advise the customer to stop using the device.  If the customer mentions other safety keywords or if you are not sure if the battery has vented (ruptured), follow safety procedures. {| class="wikitable" |For many workouts, Apple Watch senses when you are moving and alerts you to start the Workout app. It even gives you credit for the exercise you have already done. It will also remind you to end your workout, in case you get distracted when you are cooling down. Not all workouts receive the start workout reminder. The start workout feature is designed to work with the following workouts: *Indoor/Outdoor Run *Indoor/Outdoor Walk *Elliptical *Rower *Pool swim *Open water swim Workout End Reminders will display after Apple Watch detects that you are no longer working out. Workout end reminders work with all workout types. |} You can turn off workout reminders from the Settings in the Watch app. Refer to the following Apple Support articles for more information: *[https://support.apple.com/HT207934 HT207934 - About Workout Types] *[https://support.apple.com/HT204517 HT204517 - Use the Activity app on your Apple Watch] *[https://support.apple.com/HT207014 HT207014 - Share your Activity and compete with friends with your Apple Watch] *[https://support.apple.com/HT204523 HT204523 - Work out with your Apple Watch] *[https://support.apple.com/HT205406 HT205406 - Earn Activity awards using your Apple Watch] When you get a message containing a website link, just tap it for a view that is optimized for your watch’s smaller screen. This will allow for emails that contain HTML to be previewed. Notifications from the same app are now smartly grouped together. So you scroll less and see more. This new user interface could confuse some customers who are expecting to see a notification for each individual item. This is an opportunity to educate customers that they can still view other notifications in the group by tapping the notification. What are potential customer support issues? *How do I browse the Internet on my Apple Watch? *I am not seeing all of my notifications. Can you help? *watchOS does not contain a full web browser like iOS or macOS. *Notifications are grouped based on the app which sent the notification. *Notification settings cannot be changed back to previous watchOS behavior. For more information, refer to: *[https://support.apple.com/manuals/applewatch Apple Watch User Guide] *[https://support.apple.com/HT204791 HT204791 - Notifications on your Apple Watch] The Do Not Disturb feature in watchOS 5 contains new settings. Now you can set it for a specific amount of time, or until you leave your current location. While the feature is very intuitive, it can still cause some confusion for customers who are not receiving calls, messages, or notifications.  The good news is that you access Do Not Disturb the same way as you have before—by swiping up from the lock screen to Control Center. Tapping the moon icon will bring up the new additional options. *On Apple Watch, navigate to Settings > Do Not Disturb to modify settings. *Swipe up from the watch face to access Do Not Disturb options (moon icon). *The "On until I leave" option uses geofencing location services. *If the customer has Do Not Disturb turned on until they leave the location, and it does not turn off, they can open Maps to verify that GPS still works. If GPS is working and the watch is showing a location still, then it is most likely a one-time problem with Location services and a HW replacement will not help. If it happens consistently, you should escalate the issue to AppleCare. ===Support Reference=== Refer to the following Apple Support article for more information: *[https://support.apple.com/HT205550 HT205550 - Status icons and symbols on Apple Watch] *Because you enter the customer’s personal space when helping with an Apple Watch, you must pay close attention to using polished customer engagement skills. *There are multiple models of Apple Watch use Apple Supports tech specification to aid with features and capabilities. *You should be aware of available accessories for the Apple Watch and which come in the box with Apple Watch. *You should be aware of key features of watchOS and how they are designed to function in order to help customers. *Apple Watch troubleshooting steps should be followed from least invasive to most invasive. ==Apple TV and tvOS== For complete technical specifications, refer to: *[https://support.apple.com/en_US/specs/appletv Tech Specs for Apple TV] Apple TV 4K - HDMI 2.0a - 4K video, especially HDR10 and Dolby Vision, requires an HDMI cable compatible with these formats.  Gigabit Ethernet. Apple TV HD - HDMI 1.4, 10/100BASE-T Ethernet, USB-C Port for service and support ONLY. Remote features - Dual microphones for Siri, Touch Surface, Menu button, tv/home to see recently used apps double press or single press for Apple TV app or to go to home screen.  Siri button. Volume up/down, play/pause. For more information about the Siri Remote or Apple TV Remote, refer to: *[https://support.apple.com/en-us/HT205305 HT205305 - Use your Siri Remote or Apple TV Remote with your Apple TV] *[https://support.apple.com/en-us/ht205300 HT205300 - Use Siri on your Apple TV] Apple TV (4K) is Dolby ATMOS-compatible. This feature allows the user to be immersed in three-dimensional audio. Details of this feature can be found in [http://support.apple.com/HT204069 HT204069 - Play audio in Dolby Atmos or surround sound on your Apple TV]. Sign in to your TV provider in Apple TV Settings. [https://support.apple.com/en-us/HT207035 After you sign in], any other [https://support.apple.com/en-us/HT208085 supported app] automatically signs you in so you do not need to enter your information again. tvOS on Apple TV 4K takes full advantage of 4K and HDR to deliver an amazing experience that makes it easy to enjoy TV in the highest quality ever. [https://support.apple.com/en-us/HT208074 During setup] and whenever you connect a new 4K TV, tvOS on Apple TV 4K automatically detects its capabilities and helps you optimize your setup for the best possible picture so that you always get the most out of your TV. If there is more than one Apple TV associated with the same iCloud account, customers can keep the same appearance and apps for each device. Learn more about One Home Screen in the support article, HT200126 - Move and hide apps on your Apple TV. This feature allows you to listen to your favorite songs across every Apple TV, HomePod, and AirPlay 2-compatible speaker you have in your home. Or play something different in every room at the same time. Information on system requirements for AirPlay 2 can be found in [https://support.apple.com/en-us/HT208728 HT208728 - AirPlay system requirements]. Please note that AirPlay 2 requires tvOS 11.4 or later. iOS 12 allows you to sign in using Autofill passwords to apps on your Apple TV. {| class="wikitable" |If your customer's Apple TV has a device issue, rule out software issues first before considering a hardware replacement. When troubleshooting software, attempt the quick fixes in the order listed, from least to most invasive. #Update to the latest software #Force an app to close #Restart #Reset (4th generation) or Reset All Settings (3rd generation or earlier) #Restore Note that these steps may not be effective for all issues. Apply only the steps necessary to isolate and resolve the user’s issue. |} Force quit an app by - Double press the home button to see preview screens of the apps recently used. Then swipe up on the touch surface of remote to move the app’s preview screen up and out of preview. [https://support.apple.com/en-us/HT201836 Restart an Apple TV] if it is having issues. You can restart from Settings, use the remote, or unplug it from power. *'''Use Settings''': go to Settings > System > Restart *'''Use the remote''': Hold down the Home and Menu buttons. Let go when the light on the device flashes. *'''Unplug Apple TV''': If the Settings menu and the remote do not restart the Apple TV, unplug it from power. Wait six seconds, then plug it back in. Tip - resetting all settings - if Apple TV reboots three times, a recovery model screen will provide the option to reset all settings. If less invasive steps do not resolve the issue, you can [https://support.apple.com/en-us/HT202118 restore the customer's Apple TV]. *'''Restore from Settings''': Go to Settings > System > Reset and select Restore. *'''Restore using iTunes''': Connect the Apple TV HD to a computer with a USB-C to USB-A cable. In iTunes, select Restore Apple TV. Because Apple TV 4K does not have a USB-C port, restore using iTunes is only available with Apple TV HD. Important Restore will delete all user data and settings on the Apple TV, including apps downloaded from the App Store. If a customer is unable to use a particular Apple TV feature, a basic step is to [https://support.apple.com/en-us/HT200008 verify that their Apple TV model] supports that feature. Review each scenario below. Identify the cause of the issue. Click on the scenario to reveal the answer. Customer states that their Apple TV HD refuses to output 4K HDR video to their Ultra High Definition 4K TV. Apple TV HD does not support 4K video output. Customer will need an Apple TV 4K to output 4K video to their 4K TV. Customer wants to restore their Apple TV 4K by using a USB cable to connect to iTunes on a Mac. Because Apple TV 4K does not have a USB-C port, restore using iTunes is only available with Apple TV (4th generation). Customer is unable to connect their Apple TV 4K to their A/V receiver using an optical digital audio cable. An optical digital audio port is not included on Apple TV 4K. Advise customer to connect using HDMI instead. Learn what to do if your [https://support.apple.com/en-us/HT200197 Apple TV won't turn on], or [https://support.apple.com/en-us/HT204400 won't connect to a network]. Learn how to [https://support.apple.com/en-us/HT208074 set up your Apple TV 4K] for the best 4K, HDR, or Dolby Vision experience. Learn how to [https://support.apple.com/en-us/HT203777 troubleshoot the Apple TV remote]. Run AST 2 - MRI Health Check to assist in isolating hardware issues. MRI Health Check is a quick triage tool that checks for the presence of hardware components and performs a series of short tests to verify hardware functionality on Apple TV 4K and Apple TV HD  models. To run MRI Health Check, enroll the Apple TV serial number in the Diagnostic Console, then on the Apple TV go to Settings > General > About > Start Diagnostics with Apple. HDMI Cable Check 4K video, especially HDR10 and Dolby Vision, requires an HDMI cable compatible with these formats. Detailed information about this can be found in [https://support.apple.com/en-us/HT208074 HT208074 - About 4K, HDR, and Dolby Vision on your Apple TV 4K]. <br /> *Because Apple TV 4K does not have a USB-C port, restore using iTunes is only available with Apple TV HD. *If an Apple TV running the latest tvOS reboots three times, a Recovery Mode screen will provide the option to Reset All Settings. *If an Apple TV is having issues, attempt less invasive software fixes first, before considering a whole-unit hardware replacement. *4K video, especially HDR 10 and Dolby Vision, requires a compatible HDMI cable. Apple recommends HDMI cables that have the Compatible Dolby Vision mark. An example is the Belkin Ultra High Speed HDMI Cable. *AST 2 - MRI Health Check tests the following Apple TV components: Bluetooth, Wi-Fi, Sensors and the internal cooling fan on Apple TV 4K. ==HomeKit== Uses apple devices to control and automate home. ===Can be used to:=== *Turn off the lights using an iphone *From an ipad, see who is knocking on the door *Control accessories remotely with the help of Apple TV *Organize accessories by room *Manage multiple accessories at the same time *Use Siri to control accessories *Add and manage speakers ===the following is required to use Home app:=== *An iphone, ipad, or iPod touch running the latest version of iOS *One or more HomeKit-enabled accessories *An Apple ID to sign into iCloud on your device *iCloud Keychain turned on in the iCloud settings *location services turned on with Home set to “While Using” <nowiki>*</nowiki>Customers must have an active iCloud account using iCloud Keychain to share Home details with other iOS and Apple TV devices.  If the iOS device is the only iCloud-connected device, customers will not be prompted to turn on iCloud Keychain. Remind customers to retain the 8 digit HomeKit setup code from the HomeKit accessory packaging. Look for “Works with Apple HomeKit” on packaging.   *http://www.apple.com/ios/home/ *[https://support.apple.com/en-us/HT204893 HT204893 - Set up and use the Home app] *[https://www.apple.com/ios/home/accessories/ HomeKit accessories] *[https://support.apple.com/HT204893 HT204893 - Set up and use the Home app] *[https://support.apple.com/en-us/HT207057 HT207057 - Set up your HomePod, Apple TV, or iPad as a home hub] *[https://support.apple.com/en-us/HT208724 HT208724 - Add and manage speakers in the Home app] After accessories have been setup and added to the Home app, customers can control them with Siri commands and questions, such as: *"Turn off the lights in the family room."         *"Set the temperature to 68 degrees." *"Did I lock the front door?" *"Good night!" *"Play music in the living room"                                                   Hold the home button on iOS device and speak the command. if "Hey Siri" is enabled, say, "Hey Siri", followed by the command. When the action is performed, Siri will confirm that it is complete with a message. Some accessories cannot be controlled by Siri commands if the device is locked. If a customer asks Siri to unlock a door, they must unlock their device first. *Partner with your customer when evaluating a Home app related issue. *Use your resources to troubleshoot Home app and HomeKit related issues. *Set proper expectations with customers regarding scope of support for HomeKit. <br /> ==Apple Pay & Wallet== Apple Pay and associated features may not be available in all regions. To check for availability, review the support article, [https://support.apple.com/HT207957 HT207957 - Countries and regions that support Apple Pay]. 3 main features: Device Account number - Apple creates unique device account number to encrypt and protect actual account numbers.  Never stored on Apple servers.   Secure Element - safely stores the the number on a chip inside the device.  It is isolated from the OS.   NFC - allows wireless communication to occur between 2 controllers - 1.5” distance is required.   To use Apple Pay in supported regions customers must have the following: *[https://support.apple.com/kb/KM207105 An eligible device] *[http://support.apple.com/HT204916 A supported card from a participating bank or card issuer] *The latest version of [https://support.apple.com/kb/HT204204 iOS], [https://support.apple.com/kb/HT204641 watchOS], or [https://support.apple.com/kb/HT201541 macOS] *An Apple ID [https://support.apple.com/kb/HT204053 signed in to iCloud] Support References *[https://support.apple.com/HT204506 Set up Apple Pay on your iPhone, iPad, Apple Watch, or Mac] *[https://support.apple.com/HT203027 Apple Pay security and privacy overview] In certain countries and regions, customers can also [https://support.apple.com/HT204003 add rewards cards to Wallet and use them with Apple Pay]. For more information check out the [https://support.apple.com/HT205630 Get help adding cards to Apple Pay] page. In Japan, customers can [https://support.apple.com/en-us/HT207153 transfer their Suica cards to Apple Pay] on their iPhone or Apple Watch. [https://support.apple.com/HT208965 Use student ID cards in Wallet] on iPhone or Apple Watch Students, at participating colleges and universities, can add their student ID cards to Wallet, and use their iPhone or Apple Watch to access places like dorm rooms, libraries, and campus events. The card in Wallet can also be used to pay for laundry, snacks, and dinners around campus. On Mac models without built in Touch ID you can complete purchase using Apple Pay on your eligible iPhone or Apple Watch.  On your iphone, go to settings > Wallet & Apple Pay and turn on Allow Payments on Mac. Person to person payments with Apple Pay and Apple Cash are not available on macOS. Pay with Touch ID capable iPhone - rest a finger on Touch ID and hold iPhone within a few centimeters of the contactless reader until Done appears with check mark on the display. Pay with Apple Watch - double click the side button and hold the display of Apple Watch within a few centimeters of the contactless reader.  The customer will feel a gentle tap. Pay with Face ID - Double click side button then glance at display to authenticate Face ID.   *To pay with a different card instead of the default card: **IPhone X - Double click the side button.  When default card appears, tap it, then tap to choose another card.  Glance at iphone to authenticate and then hold top of device near reader. **IPhone 8 or earlier - hold device near the reader without resting finger on Touch ID.  When default card appears, tap it, then tap to choose another card. Rest finger on Touch ID to pay. **Apple Watch - double-lick the side button. When default card appears, swipe left or right to choose another card.  Hold watch near reader to pay. {| class="wikitable" |Devices running the latest version of iOS and watchOS can use Apple Pay to [https://support.apple.com/HT201239 pay within apps] without having to enter card information, shipping and billing addresses, or contact information. If the app supports Apple Pay, the app will present a "Buy with Apple Pay" option at checkout. The way apps present the option might differ. Be sure to [https://support.apple.com/HT208087 look for Apple Pay as a payment option], or the Apple Pay button. Tap on the Apple Pay button during checkout and follow the prompts to verify information. Place finger on Touch ID to complete the transaction, double-click the side button and glance at the display to authenticate Face ID on iPhone X, or double-click the side button of your Apple Watch. |} Starting with iOS 10, watchOS 3, and macOS Sierra, some websites support [https://support.apple.com/HT201239 Apple Pay purchases within Safari]. When a customer visits a site that supports Apple Pay in Safari, a corresponding button appears at checkout. When Apple Pay is selected, a window will appear asking the customer to verify purchase details and confirm the payment. When completing a purchase in Safari, the customer will be asked to confirm payment. The confirmation works differently depending on the device: *Safari on iOS will use Touch ID or Face ID to confirm purchases. *Safari on macOS directs customers to confirm from either an Apple Watch or iPhone that is nearby, has Apple Pay set up, and is signed into the same iCloud account. *Touch Bar enabled portables can be used by authenticating with a saved fingerprint when checking out via Apple Pay on supported websites. Apple Pay transactions involve financial institutions, merchants, terminals, and vendors. It is important to determine the proper scop of support for incoming questions.  You can answer questions related to setting up Apple Pay, how it works in Wallet on eligible devices, and basic troubleshooting of configuration. A contactless payment reader can be used to test functionality of Apple Pay hardware in Apple Watch or iPhone and later.  When completed at Apple with steps in GSX, it does not affect cards or bank accounts connected to Apple Pay. Customers should be directed to their respective financial instruction if they have questions about: *Declined payments *Making credit card payments *Disputing chargers or payments *Cancelling a card *Reporting a lost or stolen card *Requesting a replacement ATM/Debit card. If a customer has an issue related to their Apple Cash card that is outside your scope, assist them with setting up a call through the Contact Apple Support page.  Guide the customer through the questions on the page, but allow them to enter their own info. They will be able to set up a convenient time to get the assistance they need.  If a customer is leaving their device for service, have them follow the steps in this [http://support.apple.com/HT207883 support article] to turn off Apple Cash on the device being serviced. Customers with a student ID card in Wallet should remove it before proceeding with service to ensure their data is protected.  Partner with customers who have a student ID card in Wallet on their iPhone or Apple Watch to remove it before proceeding with service.  Your customer can always reprovision their student ID card from the eAccounts app, and add it to Wallet just like they did when they first set it up. How to remove student ID card from devices that do not turn on- *Have customer go to their Apple ID account page, sign in, and click their device.  In the information that appears, go to the Apple Pay section and click Remove All. The customer’s cards will be removed from Apple Pay even if the device is offline and not connected to a cellular or WiFi network.  The customer can use the eAccounts app - free on the App Store - or contact their school card office to remove their student ID card. Refer to the following articles to learn more: *[https://support.apple.com/HT205583 HT205583 - Manage the cards that you use with Apple Pay] *[https://support.apple.com/HT208965 HT208965 - Use student ID cards in Wallet on your iPhone or Apple Watch] Key Points - *Apple Pay may not be available in all regions. *Each device uses a separate Secure Element meaning that setup must be completely separately. *If you disable wrist detection, remove your passcode or sign out of iCloud, all credit and debit cards will be removed from that device. *Before accepting a device for service, partner with the customer to ensure any student ID cards have been removed to ensure their data remains secure and protected. *Scop of support includes questions related to setting up Apple Pay, how it works in Wallet app, and basic troubleshooting of configuration. <br /> =='''Diagnostics fundamentals.'''== Which diagnostics should you use- *Triage - For Apple technicians, triage refers to the act of quickly and efficiently evaluating the device’s symptoms.  Triage requires you to reproduce the device issue, determine the extent of the device issue, determine the cause of the device issue, determine if the issue is caused by software, hardware, environment, or user action which requires education. *Extended testing - some device symptoms are not easily triaged within limited time at the service counter.  For example, intermittent issues or those that reproduce after an extended period of operation require check in the device for extended testing.  Apple provides diagnostic tools to assist with this.   *Post-repair Verification - to verify that the device issue has been completely resolved, and that no new issues arose during the repair, Apple provides diagnostic tools to run after repair is completed.   AST 2 and AST 1 badges *Green = OK.  Expected module, component or subsystem was expected, found and successfully communicated with the diagnostic. *Yellow = caution.  Further investigation is required.  For example, a device running non-current version of iOS will flag with a yellow badge in the software module of mobile resource inspector.  A yellow bad does not mean that the module failed testing - another good example is 3rd party RAM installed in MRI. *Red = check failed.  The expected module, component, or subsystem was not found.  The module could be malfunctioning, missing, or could have a loose cable connection that requires reseating. Presence check vs. functional test - ===='''Presence check'''==== - many diagnostic tools and suites are capable only of detecting if a module is present and has power.  Does not tell if functional.  Examples of these are MRI (Mac Resource Inspector, Apple Diagnostics, Apple Hardware TEst. ==='''Functional test'''=== - a diagnostic test that goes beyond presence testing to determine if a module is functioning as expected.  In general, functional testing requires that the kernel extension (driver) software for that module be loaded.  Apple examples - Storage, cooling system diagnostic, graphics and display, full system diagnostic (OS), Apple Service Diagnostic (OS). AST info: *AST 2 can test iPhones running iOS 8.1 or later.  Displays a blue bar when is online and ready for testing. *AST 2 can test Macs from mid-2014 onward.  The orange bar indicates that this device is restarting to an OS-based diagnostic. *AST 2 can test iPad 2 or later.  The gray striped bar indicates that the device is no longer connected to the diagnostic console.   *Tap the “i” to the right of each test suite for a more detailed description of that suite’s function, including suggested uses. *AST 2 provides a brief description of the function of each test suite. *AST 2 provides an estimate of how long it will take for that suite to run. ==='''Types of Apple Diagnostics:'''=== IOS and Mac Diagnostic - Apple Service Toolkit 2(AST 2) Mac Diagnostics - Apple Service Toolkit 1 (AST 1), Apple Service Diagnostic (ASD) Customer Mac Diagnostic - Apple Diagnostics, Apple Hardware Test (AHT) ===='''AST 2'''==== is a cloud-based diagnostic system to help technicians triage and verify repairs for iOS devices (8.1 and later), Apple TV HD and later (tvOS 9 and later), Apple Watch, HomePod, and Mac computers (mid 2014 and later.  Start an AST 2 diagnostic session by inputting the device serial number into the serial number field and entering a customer-reported symptom, in the Diagnostic Console.  Then follow onscreen instructions to start the diagnostic session on the customer’s supported iOS or Mac device. ===='''AST 1'''==== is a suite of diagnostic tools that checks older intel based Mac hardware components and provides detailed diagnostic logs for review.  AST 1 runs on a local server managing multiple Ethernet clients via NetBoot.  AST 1 is required to run diagnostics on a MacBook Pro mid 2014 and older intel-based Macs.   ===='''Apple Service Diagnostic'''==== is a diagnostic utility that performs comprehensive testing of all major hardware components in a Mac computer, including logic board, memory, graphics functionality, and sensors. Due to the length of time required to run, ASD is suggested for extended troubleshooting, as well as comprehensive post-repair verification.  There are 2 versions of ASD:  ASD in AST and standalone ASD.  ASD is not appropriate to use in front of the customer due to length and complexity.  ASD is only support on early 2014 or older Macs.   ===='''Apple Diagnostics'''==== is a simple hardware diagnostic utility, built in to Macs introduced June 2013 and later. Customers can use Apple Diagnostics to help determine which hardware component might be causing an issue. It also suggests solutions and provides a reference code which customers can provide to technicians for assistance. It is accessed by turning off the Mac, then turning it on while pressing and holding D on the keyboard. ===='''Apple Hardware Test (AHT)'''==== is the customer-facing utility that shipped with Mac computers introduced prior to June 2013. As of June 2013, Apple Diagnostics replaced Apple Hardware Test for new computers. Customers can use AHT to help determine which hardware component might be causing the issue. If it finds an error, AHT shows an error code which customers can provide to technicians for assistance. It is accessed by turning off the Mac, then turning it on while pressing and holding D on the keyboard. Diagnostics should be run before and after performing a modular repair, before restoring the customer’s device, and before selling AppleCare+ where available.  As a best practice, run iOS diagnostics whenever you are able to.  If you cannot run diagnostics, update case notes with reason why diag could not be run. #Run diagnostics on all iOS devices before repair or before selling Apple Care+ #If running 10.3 or later - use Diagnostics Mode to run the recommended AST 2 diagnostic after a same unit repair. #If running 8.1 or later - Run AST 2 for iOS - MRI #If running earlier than 8.1 but can be updated, ask permission to update the iOS to latest version then run AST 2 for iOS - MRI. ===='''AST2 for iOS -'''==== *If running 10.3 or later - go to settings > privacy > analytics and tap start diagnostics with Apple Support. *If running 10.2.1 or earlier, go to settings > Privacy > Diagnostics & Usage and tap start diagnostics with apple support.   *Obtain users permission to proceed with the diagnostic.  Explain that Apple may collect diagnostic data from this device, but that no personal information is collected.  If the user agrees, he or she can tap agree to proceed. *Device selection scree will be displayed.  You must tap the plus sign next to each device to run diagnostics. *Select a suite name to begin diagnostic test. ===='''MRI'''==== - Mobile resource inspector - quick triage tool that checks for the presence of hardware components and performs a series of short tests to verify hardware functionality.  Suggested uses:  during initial triage of all devices, before and after any modular repairs, after restoring a phone, and before selling AppleCare+. ===='''Battery Usage'''==== - detailed analysis of daily usage that provides an in-depth look at battery condition, charging data, and energy impact of individual apps.  Suggest use for devices exhibiting charging or battery issues.  This diagnostic requires six or more hours of device use before it can provide results.  Review the following articles to learn about battery cycle count, full charge capacity and maximizing battery performance, including what happens when batteries chemically age. *Batteries *iPhone Battery and Performance ===='''Audio Suite'''==== '''Audio''' - Plays a set of chordal tones through the internal speaker and listens for those same tones via built-in microphones. Suggested use: distorted or no audio from internal speaker, sound issues from one of more of the built in microphones. <br /> ===='''Display Suites'''==== '''Display Backlight & Color''' - Displays a series of colors and patterns that assist in identifying non-uniform color or backlight issues. Suggested use: individual or sections of non-uniform color, dim or uneven brightness or backlight, light bleed. '''Display Image Quality''' - Displays a series of colors and patterns that assist in identifying distortion and flickering. Suggested use: distorted image or flickering on the display. '''Display Pixel Anomalies''' - Assist in identification of areas of the display panel that have responding or non-responding touch pixels. Suggested use: Multi-touch slow to respond, isolated areas are not responding, erratic response to touch. <br /> ===='''Buttons and Switches Suites'''==== '''Home Button, Sleep/Wake Button, Side Button (iPhone 8, 8 Plus and later), Volume Button, Ring/Silent Switch''' - all of these suites assist in identifying issues with the respective button or switch. Suggested use: for devices exhibiting issues with buttons or switches ===='''Unexpected Touch'''==== '''Unexpected Touch''' - Assists in the identification of unexpected touch events. Suggested use: false touch. ===='''Hardware Device Interface (HDI)'''==== '''HDI Integrated Current Checker''' - Assists in troubleshooting devices that will not turn on. Requires an Integrated Current Checker (ICC) Tool connected to a Hardware Diagnostic Interface (HDI) host Mac. Suggested use: determines if a device will turn on after charging. '''HDI Serial Number Reader''' - Used to determine the serial number of a device that will not turn on. Requires Serial Number Reader (SNR) tool connected to a Hardware Diagnostics Interface (HDI) host Mac. Suggested us: for devices that will not turn on and a serial number is needed. <br /> ===='''Full Device Diagnostic'''==== '''Full Device Diagnostic''' - All-in-one diagnostic suite that assists in identifying hardware and software issues by running a series of automated and interactive tests. Suggested use: during initial triage of devices that require multiple diagnostics. Requires iOS 9.0 or later. ===='''Rear Camera Calibration'''==== '''Rear Camera Calibration''' (on supported models) - Performs calibration of the rear camera(s). Requires iOS 11.2 or later. Suggested use: inability to switch to the telephoto camera for optical zoom beyond 2x in bright light conditions, after rear camera repair. ===='''Face ID'''==== '''Face ID''' - Performs a check on the sensors for Face ID. Suggested use: for devices exhibiting issues with Face ID. ===='''Post-Display Repair'''==== '''Post-Display Repair''' - Assists in identifying hardware issues by running a series of automated and interactive tests. Requires iOS 10.3 or later. Suggested use: determine the functional state of a device after display repair. Refer to Diagnostics Mode for more information. <br /> ===='''Camera Image Quality'''==== '''Camera Image Quality''' - Assists in identifying camera image quality issues with the front or rear cameras. Requires iOS 10.3 or later. Suggested use: for evaluating camera image quality after repair. Triage - refers to the act of quickly and efficiently evaluating the device’s symptoms.  Requires you to: *reproduce the device issue *Determine the extent of the device issue *Determine the cause of the device issue *Determine if the issue is caused by software, hardware, environment, or educational opp. ==='''MRI icons/meanings'''=== MRI is a quick triage tool that checks for the presence of hardware components and performs a series of short tests to verify hardware functionality.   '''Storage''' Verifies presence and functionality of internal Apple storage devices. Verifies storage device by performing surface and multi-block scans. Suggested use: startup issues, slow performance. '''Display Anomalies''' Assists in identification of pixel anomalies in LCD panels. Displays a series of colors and patterns that assist identification of pixel anomalies and debris. Suggested use: individual or single-line pixel anomalies; distinguishing between pixel anomalies and debris. This is not used for graphics anomalies or no-video issues. '''Image Persistence''' Displays a series of patterns to attempt to reproduce image persistence issues on LCDs. Verifies that the device’s display panel does not retain images after a set of checkered patterns has been displayed for 3 minutes. Suggested use: screen burn-in, lines, patterns being retained on the display panel. '''Keyboard''' Interactive test that prompts the user to verify that each key on the keyboard responds correctly when pressed, and that the keyboard backlight is visible. Suggested use: unresponsive or stuck keys, dim or uneven keyboard backlight. '''Trackpad''' Interactive test that prompts the user to verify that all areas of the trackpad respond to touch, and that the trackpad clicks appropriately when pressed. Suggested use: erratic or unexpected cursor movement, poor feedback when clicking. '''Power Adapter''' Checks that the power adapter connected to the computer is healthy, of sufficient wattage, and that the battery is charging properly. This suite must be run over a Wi-Fi connection to check all available ports. Suggested use: not charging, unexpected charging behavior, unexpected power off. '''Touch Bar Pixel Anomalies''' Displays a series of colors and patterns on the Touch Bar that assists in the identification of pixel anomalies and debris. Suggested use: individual or single-line pixel anomalies; distinguishing between pixel anomalies and debris. '''Touch ID & Touch Bar''' Performs a series of automated and interactive tests to verify the presence of the Touch Bar and functionality of the Touch ID sensor. Note: the computer may restart multiple times during testing. '''Touch Bar Response''' Interactive test that prompts the user to verify that all areas of the Touch Bar respond to touch. Suggested use: touch is slow to respond, isolated areas are not responding, erratic response to touch. Always ensure that repaired devices are fully functional, with no issues, before you return them to the customer. Run diagnostic tools for post-repair verification when repair is complete, after reassembly: *For iOS devices run the recommended AST 2 diagnostic based on the same unit repair that was performed. *For newer Macs that are supported by AST 2, run the appropriate post-repair verification suite of diagnostic tests in AST 2 (full system diagnostic is a great choice) *For older Macs that are only supported by AST 1 run ASD in AST 1 (or standalone ASD). Run diagnostics tools for post-repair verification at Customer Pick up: *For iOS devices run AST 2 - MRI for the customer to demonstrate that the device is functional for them. *For Mac run AST 1/AST 2 - MRI for the customer to demonstrate the repair’s success. *Avoid running repair verification systems such as Full System Diagnostic or ASD in front of customer as they have long run times. ===='''Full System Diagnostic'''==== - in AST 2 performs comprehensive testing of hardware functionality.  There are 2 versions:  EFT (Extensible Firmware Interface) and the OS version.  Full System Diagnostic (EFI) performs comprehensive testing of hardware functionality and memory module integrity on supported Macs.  It is an extended diagnostic tool that performs a compressive check on all hardware, including memory, logic board and sensors.  It does not load an operating system or any hardware kernel extensions (drivers).  Full System Diagnostic (OS) is an extended diagnostic tool that performs a comprehensive check on all hardware, including the cooling system, storage devices, and graphics hardware, within a known-good OS.  Since it loads the kernel extensions for a supported Mac’s hardware components, it is ideal for comprehensive functional testing.  Suggested use - hard to reproduce issues, post repair testing.  Full System Diagnostic is compatible on Mac desktop and portables from mid 2014 21.5” onward. ===='''Apple Service Diagnostic'''==== Just like Full System Diagnopstic, ASD comes in 2 versions - EFI and OS.  ASD (EFI) will perform comprehensive testing of a Mac’s memory modules, as well as presence testing for most other hardware components.  ASD (OS) loads known-good macOS, including hardware kernel extensions, to perform functional testing of hardware componenents such as the cooling system, storage devices, and graphics hardware.  ASD is part of the available tests in AST 1 - supports models from early 2009 to late 2013. ====='''Should I run EFI or OS version?'''===== Suggested use for EFI - hardware component presence check, comprehensive testing of memory and storage.  OS - goes beyond presence of component and checks component functionality.  Suggested for functional testing of most hardware components.  Certain components cannot be fully tested with OS is loaded such as memory and storage.  When in doubt, err on the side of more post-repair verification than not enough post-repair verification. ===='''Mac Models that use AST2'''==== *M2014 or later 21.5” iMac *L2014 and later 27” iMac 5K *L2014 and later Mac mini *2017 iMac Pro *E2015 and later MacBook Pro 13” *M2015 and later MacBook Pro 15” *E2013 MacBook Air and later -11” and 13” *E2015  and later MacBook Retina 12” ===='''Extended Testing'''==== Some device symptoms are not easily triaged within limited time at the service counter.  Ex.  Intermittent issues.   Full System Diagnostic in AST 2 and ASD in AST 1 are ideal tools for extended testing since these are able to thoroughly test all major hardware components and their ability to operate under load for extended periods of time.  Other tests are: ===='''Cooling System Diagnostic'''==== In both AST 2 and AST 1 - tests fans, sensors, and thermal efficiency while simulating heavy usage - ideal for extended with heat related issues such as runs hot, excessive fans captivity, unexpected sleep or shutdown, slow performance.   ===='''Memory Test'''==== The extended Memory Test in AST 2 tests each memory location using multiple read/write algorithms.  Suggest for use if experiencing kernel panics, no video, startup issues, unresponsive system, or issues with integrated graphics. ===='''Graphics and Display'''==== Graphics and Display test suite in AST 2 verifies communication with display and test graphics performance with performing 2D and 3D rendering.  Suggested for distorted video, intermittent or no video. ==='''Key Points'''=== Some diagnostic suites in AST 2 and AST 1 are used for specialized purposes, not for general troubleshooting.  The repair procedure in the Service Guide will tell you when a specialized diagnostic suite needs to be run.  This is another important reason why you should always follow the service guide when performing modular repairs. '''Blank Board Serializer''' After replacing a Mac Logic board, always run AST.  When you start up AST 2 or AST 1 on a system that has no serial number on its logic board, Blank Board Serializer will open up automatically.  Please note that you cannot call up Blank Board Serializer for a system with a serial number already present on the logic board.  Setting the serial number is permanent.  Double check that the serial number is correct.  Enter the serial number of the Mac into Blank Board Serializer not the serial number of the logic board. ===='''Trackpad Calibration Check'''==== On Mac notebooks with Force Touch trackpads, you must run the Trackpad Calibration Check after every repair or whenever the computer has been reassembled.  To run this check, you will need the model-specific weight replacement rubber template and the 200g and 800g weights.  Check the service guide of the Mac notebook under test for more info.  Run the Trackpad suite after a top case with keyboard has been replaced or if the user is having issues related to trackpad functionality.   ===='''Top Case to Logic Board Configuration'''==== Run this suite after replacing either the logic board or the top case on a Mac with Touch Bar.  The suite configures the logic board and verifies calibration of top case components. ===='''Trackpad Keyboard Mapper'''==== Run the Trackpad Keyboard Mapper whenever the Service Guide tells you to do so.  Keyboard mapping data is stored on a chip on the trackpad in certain Mac notebooks.  Keyboard language, layout, and function keys are contained in this mapping data.  Keyboard mapping data must be programmed into the trackpad whenever the trackpad is replaced.  If this is not done, only very basic, generic keyboard functionality may be available, the keyboard may not operate correctly, or the keyboard backlight function keys may not control the keyboard backlight brightness. Compatibility for AST 2: *E2015 MacBook Air 11” and 13” *E 2015 MacBook Pro Retina 13” *Mid 2015 MacBook Pro Retina 15” *2017 MacBook Air 13” Compatibility in AST 1: -MacBook Air 11” M2013 and E2014 -MacBook Air 13” M2013 and E2014 ==='''Key Points'''=== #Running diagnostics consistently leads to more accurate and efficient identification of issues and higher customer satisfaction. #Interpret diagnostic results correctly, use your resources, and do not jump to conclusions.  A yellow badge result does not necessarily indicate something wrong with the device - re-run the test to be sure. #Diagnostics that run in EFI (firmware) are fast, but not as thorough.  They are useful for quick triage and checking presence of hardware components.   #Diagnostics that load an OS are comprehensive but take more time.  They are useful for extended functional testing and for comprehensive post-repair verification. #When in doubt, always err on the side of more post-repair verification than not enough post-repair verification. #AST 2 is a cloud-based, unified interface for running diagnostics on both iOS devices and Macs. #AST 2 teaches you how and when to best use it.  The best way to find out more about what a diagnostic suite does, and suggested uses for that suite, is to tap the “i” to the right of the name for more info. ==Intro to Mac Hardware 2019== General system requirements for macOS: *OS X 10.8 or later *2GB memory *12.5GB available storage Mojave Compatible: *Early 2015 or newer MacBook *Mid 2012 or newer MacBook Pro *Mid 2012 or newer MacBook Air *Later 2012 or newer Mac mini *Late 2012 or newer iMac *Mid 2010/2012 (with ended Metal-capable GPU), Late 2013 Mac Pro *iMac Pro (2017)  [https://www.apple.com/macos www.apple.com/macos] https://support.apple.com/en-us/HT204689#autounlock ==='''Find Serial number using macOS'''=== *Search How do I find the Serial Number in Finder Help (newer Macs) *About This Mac *On the enclosure of some models (bottom foot iMac, bottom enclosure of Mac mini, bottom of Mac Pro (trashcan). Use Check Coverage [https://checkcoverage.apple.com checkcoverage.apple.com] Although a Mac may be compatible with Mojave, it may not be able to take advantage of all of the new features available in the OS. ===Key Points:=== *You must know the system requirements for macOS to avoid issues with software and hardware upgrades. *A Mac may be able to run macOS but not meet system requirements for certain features (eg. Metal 2) *The best way to identify a Mac model is by looking up the serial number. *Serial numbers are on various physical locations on a Mac, but can always be found in About this Mac. ==='''macOS setup and Maintenance'''=== Set up a drive: *Partition and format before a new drive can be used.  Can create multiple volumes *Fomatting creates the file system on the volume. *Disk utility is the tool used to configure storage drives (in utilities) *Boot Camp needs to be done in Boot Camp Assistant *Use internet recovery or another external bootable drive in order to erase internal drive. *USB flash drives are unable to be partitioned in disk utility *Erase by selecting drive in sidebar and click on erase and select format (default is Mac OS extended or APFS if in High Sierra or newer macOS) *Secure erase - fastest option is chosen by default but does not securely erase data.  Choose security options when erasing.   *Multiple partitions - partitioning is non-destructive and designed to maintain data, but have backup just in case.  APFS drives give option to add a volume than create a partition. APFS allocates disk space on demand but you can select specific sizes while creating.  If not APFS, choose partitions and sizes. Format appropriately and specify the size then click apply. For more information, review the following Apple Support articles: *[http://support.apple.com/HT204904 HT204904 - How to reinstall macOS from macOS Recovery] *[https://support.apple.com/HT208033 HT208496 - How to erase a disk for Mac] *[https://support.apple.com/HT202574 HT202574 - About Fusion Drive, a storage option for some Mac computers] *[https://support.apple.com/HT202574 HT201065 - What to do before you sell, give away, or trade in your Mac] If you or a customer attempts to install macOS on an unsupported system, the customer may think something is wrong with their machine.  You may believe there is a hardware issue when really it is software incompatibility.   ==='''Support References'''=== For more information on requirements for installing macOS, review: *[http://support.apple.com/HT201475 HT201475 - How to upgrade to macOS Mojave] *[https://support.apple.com/kb/SP777 SP777 - macOS Mojave - Technical Specifications] *http://www.apple.com/macos Running 10.8 or later can upgrade to Mojave through the app store. ==='''Support References'''=== For more information on upgrading to the latest OS, including system requirements, visit http://www.apple.com/macos/how-to-upgrade/. Some incompatible software is automatically disabled when you upgrade. macOS recovery - command + R Internet recovery - command + option + R The latests version of macOS is factory installed on new Macs.  They will be guided through the Setup Assistant after powering on.   Mac is designed to work with compatible versions and builds of the OS.  If attempting to use a version or build that is not compatible you may see one or more of the following: *Mac does not start up, or shows prohibitory (🚫) at startup. *You see a message that you are using an unsupported/incorrect version *Mac does not respond to trackpad, mouse, or keyboard. *Apps unexpectedly quit *Mac does not sleep or wake *Do not hear sound from Mac *Fans operate at faster/louder speed. *Image on display appears to shrink or has black bars around it, or appears tinted. *You cannot use bluetooth or wifi. See [http://support.apple.com/HT201686 HT201686 - Use the Mac operating system that came with your Mac, or a compatible newer version] and [http://support.apple.com/HT204156 HT204156 - About the screens you see when your Mac starts up] for more information. ===Migration Assistant:=== Transfers customers accounts, documents and settings from another computer to new Mac.  Accessible in setup assistant or through utilities as standalone app.   ===='''Support References'''==== Review the following Apple Support articles: *[http://support.apple.com/HT204350 HT204350 - Move your content to a new Mac] *[http://support.apple.com/HT204087 HT204087 - Move your data from a Windows PC to a Mac] [https://support.apple.com/HT205749 HT205749 - Set up your new Mac.] ==='''Key Points:'''=== *To use a disk as a startup disk for mac, use the GUID partition scheme and macOS Extended (journaled) (hard disk drive) or APFS (flash based storage) volume formats. *The disk utility in Recovery can be used to erase the disk and reinstall OS. *macOS has system requirements including supported Macs, memory required, and storage space needed. Some macOS features have additional system requirements. *macOS is factory installed on new Macs and can be reinstalled if needed using recovery. *An Apple ID and password is required when upgrading macOS in the App Store. *Migration Assistant can help move data from old Mac or PC or Time Machine backup to new Mac. *Setup Assistant launches automatically on a new Mac and helps user connect to networks, transfer data, enable location services, and login to iCloud. ==macOS User Accounts== *Apple menu > System Preferences > Users and groups > unlock > add user (cannot change user folder name later) ===Account Types=== *Administrator - all control, can be multiple *Standard - Set up by admin - can install apps and change settings, but cannot add/change users - can be upgraded to admin later *Managed with parental controls *Sharing only users - access files only but cannot change settings/users *Group - grants multiple users the same access privileges.   *Guest user - deletes everything upon log out.  Cannot change settings or users.   ===Deleting user=== Admins only, remove from users/groups in system preferences.  You can save the home folder (as disk image), don’t change the home folder, or delete the home folder entirely. ===Managing Passwords=== *Not recommended to leave user password blank *Use Password Assistant to generate memorable, letters/numbers, numbers only, random or FIPS 181 compliant. ===Autofill in Safari=== *Safari suggested passwords - *Use key with down arrow to have safari generate a password *The password will be saved in Keychain for future use on specific website ===Keychain Access=== *Stores passwords securely *Can view and manage login and other usernames/passwords *Encrypted container that securely secures ===Changing/resetting a user account password=== *Can change the password used to log in to Mac - users/groups preferences - login keychain password is also updated with this method *Change password in case it is forgotten - recovery or any other administrator on Mac.  - creates new default keychain for passwords. ===Key Points=== *When the login password changes, the user needs to create a new keychain with Keychain Access. *Autofill can be used to help generate secure passwords for online accounts. *Password Assistant can help generate a secure password *If a user forgets their password, an Administrator account can be used to reset the user’s password *Different accounts vary in features and abilities, it is important to ask probing questions when helping customers set up accounts. ==macOS Security== System Preferences has security and privacy Only certain options can be changed without admin password Unlock the lock to make changes *check advanced in options ==='''Gatekeeper'''=== - security feature in macOS that helps to keep applications from having an adverse effect on Mac. <br /> ==='''FileVault 2'''=== Encrypts information on the Mac.  Filevault 2 encodes data on the startup disk so that unauthorized users, apps, utilities cannot access info.  Provides the following benefits/considerations: *Full disk, XTS-AES 128 encryption *Fast and unobtrusive initial encryption *Requires recovery HD on startup drive *Not supported in RAID configs. https://support.apple.com/en-us/HT204837 <br /> ==='''Firewall'''=== https://support.apple.com/guide/mac-help/a-firewall-prevent-unwanted-connections-mac-mh34041/10.14/mac/10.14 Included in macOS and is used to control connections on a per-application basis rather than per-port basis.  Ensures network ports are open only for legitimate apps. Similar to blocking channels on a TV. Provides these benefits/considerations: *Block all incoming connections *Block or allow specific applications *Automatically allow signed software to receive incoming connections *Enable stealth mode ==='''Location Services'''=== https://support.apple.com/guide/mac-help/manage-apps-detect-mac-location-mh35873/10.14/mac/10.14 Controls which apps are allowed to use Macs location.  The approximate location is determined using info from local wifi networks and collected by location services in a manner that does not personally identify the user.   ==='''EFI Firmware Password'''=== https://support.apple.com/en-us/HT204455 Additional layer of protection for your Mac and prevent it from starting up from anything other than startup disk.  Provides these benefits/considerations: *Typical restart/shutdown/power on to default startup disk is unaffected *Startup manager (option at startup) present a lock screen for password entry *Boot from recovery (command + R) presents a lock screen for password entry *Disables all other startup boot modifiers ==='''Key Points'''=== *Most security settings are accessed in System Preferences Security & Privacy preference pane. *Gatekeeper helps protect from apps that could adversely affect it *FileVault 2 allows users to encrypt their entire startup disk *If user forgets both password and recovery key for FileVault, they will not be able to login/access data. *OS includes application firewall that can control an apps access to the network.   =='''macOS File System'''== Default startup volume name is called Macintosh HD. To access startup volume/root level - select Finder > Go > Computer > Macintosh HD.   ===Applications folder=== ===Library folder=== - contains important support files used by macOS and certain applications, supports all local users, only admins can make symptoms.   ===System Folder=== - default location for resources required by OS.  Rare that anyone would need to change anything in here. ===User folders=== - also includes shared folder ===Home Folder=== - Subfolders are included here - desktop, documents, downloads, movies, music, pictures and public specific to each individual user. Additional User Library is not visible. ===User Library=== - contains files used by macOS and apps, personal fonts/preferences.  Hidden so nothing is accidentally deleted. Can be seen by holding option button when clicking on “Go” in Finder menu. ===Library Folders=== *System library folder - core system functionality - necessary frameworks for core apps like finder are stored here for example.  There are many hidden options here but default can only see library. *Root level library folder - system wide resources not required by the OS.  Only admins can change this library. (/Library) *User Library - separate user resources such as keychain, only accessible to that specific user and not other users on Mac.  Can help determine user specific issues. (~/Library) '''https://support.apple.com/guide/mac-help/folders-that-come-with-your-mac-mchlp1143/10.13/mac/10.13.2''' Never move or change the name of installed folders and applications.  Example: If customer changes the name of their user library folder (~/Library) the OS will automatically create a new Library folder for that user.  Preference and account settings for macOS and apps will change back to default settings. If this happens, drag the new ~/Library folder to the trash and rename the old folder using its original directory name “Libary.” ~/Applications is not a default user folder.  It is created when a user installs a user-specific application. ===Reason for so many libraries:=== Due to 3 different libraries containing resources on a Mac, there might be multiple copies of similar resources available to the system and user at any given time.  macOS is designed to handle this by searching for resources from the most specific (user library), then to less specific (root library), and then on to least specific (system library).  Segregating resources into multiple libraries provides increased administrative flexibility, resource security, and system reliability. Resource domains are more flexible because admins can choose to allocate certain resources to all users or just specific users.  It’s more secure because a standard user can add resources to only their own home folder. https://support.apple.com/guide/mac-help/go-directly-to-a-specific-folder-mchlp1236/10.13/mac/10.13.2 ==='''Storage'''=== - Actual drive hardware.  Two most common - hard disk drives or flash memory (form of solid state drives).  Other forms can include SD cards, USB Flash drives, network-attached hard drives. ==='''Fusion Drive'''=== - combines high-capacity hard drive with high-performance flash storage.  Manages data automatically and intelligently, keeping frequently used apps/documents/photos/other files on flash storage and infrequently used items on hard drive.  It is an option in select Mac models. https://support.apple.com/en-us/HT202574 (Can see with Target Disk model only if other Mac is using 10.8.2 or later (Mountain Lion) ==='''Partitioning'''=== - process of dividing drive space into sections.  https://support.apple.com/guide/disk-utility/partition-a-physical-disk-dskutl14027/16.0/mac/10.13.2.  Each volume works as separate drive and assigned a partition scheme.   *GUID - Globally Unique Identifier - default partition scheme used by Intel-based Macs. Only partition scheme that allows intel-based Macs to start up. *APM - Apple Partition Map - This is the default for PowerPC-based Macs.  Intel-based Macs can also access this type of partitioning for tasks such as data transfers. *MBR - Master Boot Record - default partition scheme used by most non-Mac computers.  Although Macs cannot start up from this type, Macs can access this type. ==='''Formatting'''=== - act of creating a file system on a volume.  Necessary to enable the OS to store and retrieve data on the volume. *APFS - Apple File System - default file system for Macs with SSDs.  It can also be used with older systems with traditional HDDs or external direct-attached storage but must run High Sierra or newer.  APFS can be formatted to be encrypted and/or case-sensitive. *Mac OS Extended (Journaled) - default for Macs without SSDs.  Variation of Mac Extended format which adds advanced file system journaling.  Journaling helps preserve volume structure integrity. macOS Extended (Journaled) - can be encrypted and/or case sensitive. *MS-DOS (FAT) - Used for disk that will be used with a Windows computer.  Volume is 32GB in size or less. Partition name must be eleven characters or fewer. *Ex-FAT - Used for Windows - No size limitations, name must be 11 characters or fewer. ==='''Key Points:'''=== *Storage refers to actual drive hardware, Macs typically come with SSD or HDD. *Partitioning - process of dividing drive space into section *macOS has standard folder structure at the root level of the hard drive - need to be familiar in order to troubleshoot *Library folders contain support files (fonts, plug-ins, preferences used by the OS and apps). *User’s home library folder is hidden - option + “Go” to view ==macOS Permissions== Permissions are settings which determine who can view and alter files on the computer.  You [https://support.apple.com/guide/mac-help/change-permissions-for-files-folders-or-disks-mchlp1203/10.14/mac/10.14 change some permissions settings] in macOS at the bottom of the Info window for a file, folder, or disk in the Finder and for network shared items in System Preferences > Sharing. ==='''2 Types of Permissions Supported in macOS'''=== #Portable Operating System Interface (POSIX) permissions let you control access to files and folders based on three categories of users:  Owner, Group, and Others. #Access Control Lists (ACLs) provide an extended set of permissions for a file or folder, allowing multiple users and groups as owners.  ACLs are compatible with multiple platforms including Windows. Owner - The user who created a file or folder.  Almost all files and folders in your home folder will have your username listed as the owner.  If you are the currently active user in macOS and you copy a file from another volume to your desktop then you are the “owner” of that file.  MacOS appends (Me) to help the user identify files they own. Group - A group is a collection of user accounts that has its own separate set of permissions.  Specifying permissions for a group allows you to assign permissions to an entire set of user accounts.  The default group for all users in macOS is “staff.” Others (everyone) - Others includes any user account that is not the owner or part of a group assigned to a file or folder.  This class of permissions simply applies to everyone else. If a user is included in more than one category of users, each of which has different permissions, the following rules apply: *Owner permissions override group permissions. *Group permissions override others permissions. ==='''Priveledges'''=== #Read & Write - You can open a document or folder and change its contents if you have the read/write permission for it. #Read only - You can open a document or folder if you have the read permission for it.  A user can open and view the contents of a file. For example the /System folder - is a read-only folder for most user accounts to prevent tampering with macOS. #Write Only - You can make changes to a folder if you have the write permission for it but you cannot open the folder.  This means you can put items in the folder, but you can not see which items are in that folder. This makes it a “Drop Box.” #No Access - You cannot read or write to the file or folder. ===Execute Permission=== Execute (- - x) You can open an application if you have the execute permission for it.  This permission is generally for applications and cannot be modified without using developer tools like Terminal. Do not change permissions on an item unless an Apple Support article tells you to.  Within macOS, all files and folders have a specific set of permissions associated with their read/write/execute status.  The permissions cannot generally be seen by a customer, and routinely are protected by macOS. ==='''How to assign permissions to users and groups'''=== Administrator can assign/limit access for alternate users on the computer.   #In the Finder, select a disk, folder, or file and then choose File > Get Info #Locate the Sharing & Permissions and click the triangle to view options. #Click the lock icon in the lower-right to authenticate with an admin username and password. #Select a user or group from the Name volume and then choose one of the following from the pop up menu in the priveledge column: ##Read & Write - can view AND change ##Read Only - Can view but not change anything ##Write only - creates a drop box where user can add to but cannot view/change what is in the folder ##No Access - blocks all access In macOS only read & write and Read only are displayed for individual files.  Folders add options of Write Only and No Access. ==='''How do you apply permissions to all items in a folder or a disk?'''=== #In finder, select a folder or disk and then choose file > Get Info. #Locate Sharing & Permissions and click the triangle to view options. #Click the lock icon to authenticate with admin username/password. #If the user’s name is not listed in the Name column, click add (+) to add the correct user. #Select the correct pop-up item from the Priveledge menu and then choose “Apply to enclosed items” from the action pop-up (the icon looks like a gear) #Any changes can be undone as long as the window is still open and apply to enclosed items has not been performed.  To revert, choose revert changes from action pop up menu. Important! Do not select “Apply to enclosed items” when setting permissions to a user’s home folder.  This can lead to adverse effects, such as: *Being unable to change preferences *Being unable to remove or save files *Sudden iPhoto and iTunes issues *Preview and TextEdit suddenly quitting upon launch. You may use this feature to change the permissions of a folder contained within the home folder. ==='''Is there an easy way to change an item’s owner?'''=== Select a folder or disk, then choose File > Get Info.  Click the lock icon to authenticate with an admin username and password.  Find the Sharing & Permissions pane. If the new owner’s name is not listed in the Name column, click add to add the new owner.   Select the name of the new owner, then choose “Make that user the owner” from the Action pop-up menu at the bottom. ==='''What are symptoms of permissions issues?'''=== *Unusual application behavior such as 3rd party app appears in the dock as a question mark or is unable to connect to the internet, the installer may have incorrectly set permissions on the files and folders it installed. *macOS stops responding - the file system and permissions might become corrupted by power interruptions or improper shutdowns. *Software can only access the current user’s files *Unable to empty the trash - if folders where do not have write permission end up in the trash, user will be unable to delete these folders or files enclosed. ==='''System Wide Permissions Issues'''=== Issues across multiple users.  To verify, check to see if the suspected permissions issues are present in a test user or guest account. Beginning with OS X El Capitan system file permissions are automatically protected.  It’s no longer necessary to verify or repair permissions with Disk Utility.   For operating systems before El Capitan, system-level issues can be resolved by using Disk Utility to repair permissions.  To repair, follow these steps in [http://support.apple.com/HT201560 HT201560 - Repair disk permissions with Disk Utility] ==='''User Specific Permissions Issues'''=== User specific permissions issues are those that are seen in only one user.  To verify, check to see if the suspected permissions issues are present in a test user.  Examples of issues: *changes that you make in system preferences aren’t saved after you quit system preferences. *Changes that you make to the dock aren’t saved after you log out of your user account. *You’re asked for an admin name and password when moving certain items in the home folder *When saving changes to an item, you get a message that the file is locked or you cant save. *Preview, TextEdit, or other sandboxed apps unexpectedly quit when opened. *ITunes says that your device cannot be synced. *Imported photos and videos don’t appear within the app, but do appear in Finder. The above symptoms indicate that the home folder contents have had their permissions modified. To resolve user specific issues in macOS, terminal is required. When working with Terminal, make sure the customer's data has been successfully backed up before following these steps in Apple Support article, [http://support.apple.com/HT203538 HT203538 - Resolve issues caused by changes the permissions of items in your home folder]. ===File or Folder Specific Issues=== Only seen in one or a few files and folders within a specific user. To verify, check to see if the suspected permissions issues are present in other files/folders within that specific user.  If the issue is only apparent with some files and folders, this is most likely caused by modified permissions to some files and folders within a specific user. If you [https://support.apple.com/guide/mac-help/permission-open-a-file-folder-mac-mchlp1038/10.14/mac/10.14 do not have permission to open or save a file or folder], you might be able to change the permissions settings ==='''Key Points'''=== *You can view and modify permissions using the Finder’s Get Info window. *macOS uses two kinds of permissions - POSIX and ACLs - on every file and folder on your storage. *Changes to a folder’s permissions can be applied to enclosed items in the folder. *Read & Write, Read Only, Write Only, and No Access permissions are available privileges in the Finder. *Prior to OS X El Cap, the disk utility could be used to repair system-level permissions issues. *MacOS after El Cap - system level file permissions are automatically protected and the Disk Utility no longer includes the ability to verify or repair permissions. ==Time Machine== to learn [https://support.apple.com/HT201250 how Time Machine backs up Mac], including system files, apps, music, photos, emails, and documents. Built in back up system in Mac. to learn how Time Machine can be used to restore data, depending on customer needs. to learn about Local Snapshots. *[http://support.apple.com/HT201250 HT201250 - How to use Time Machine to back up or restore your Mac] *[https://support.apple.com/guide/mac-help/recover-your-entire-system-mh15638/10.13/mac/10.13.4 Recover your entire system] *[http://support.apple.com/HT204015 HT204015 - About Time Machine local snapshots] to learn about the process of [https://support.apple.com/guide/mac-help/exclude-items-from-a-time-machine-backup-mh15622/10.13/mac/10.13.4 excluding items] from backup. *[https://support.apple.com/HT204078 HT204078 - How to move Time Machine backups from one AirPort Time Capsule to another] *[https://support.apple.com/HT202380 HT202380 - Time Machine: How to transfer backups from a current backup drive to a new backup drive] *[https://support.apple.com/guide/mac-help/delete-an-item-from-your-backup-disk-mh26863/10.13/mac/10.13.4 Delete an item from your backup disk] ==='''Key Points'''=== *Without a backup, information can be difficult and expensive to recover or entirely lost. *Time Machine is a seamless solution to making a scheduled and comprehensive backup of your Mac. *Time Machine allows restoring a single file, multiple files, or even your entire startup disk, depending on your needs. *If you run out of space it is possible to move Time Machine backups to another drive or Airport Time Capsule. *Time Machine options include excluding and removing items from a backup to save space. ==Power Management== ==='''Power States'''=== *Wake *Sleep *Power Nap *Safe sleep *Standby Understanding power states helps you explain to customers how to [https://support.apple.com/guide/mac-help/save-energy-on-your-mac-mh35848/10.13 save energy on their Mac]. It can also help you evaluate and isolate power issues on a Mac. ==='''Wake'''=== Wake is the state a Mac occupies when it is on and in use. ==='''Sleep'''=== When Mac is not in use, save energy by [https://support.apple.com/guide/mac-help/put-your-mac-to-sleep-mh10330/10.13 putting it to sleep]. When a Mac is in sleep, it is on but consumes less power.  It takes a Mac less time to wake from sleep than it does to start up after being turned off. Macs manufactured in 2013 or later enter standby after being in sleep mode for three hours.  Some earlier models enter standby after just over an hour of sleep. Put your computer to sleep by choosing Sleep from the Apple () menu. These and other states allow the Mac to [https://support.apple.com/HT202824 conserve energy]. '''Support References''' [https://support.apple.com/guide/mac-help/if-your-mac-wont-go-to-or-stay-in-sleep-mchlp2995/10.13 If the Mac will not go to or stay in sleep], the customer can change the [https://support.apple.com/HT202824 Energy Saver preferences] in System Preferences. For those Mac models with a [https://support.apple.com/HT203576 sleep indicator light,] the light pulsates on and off slowly. If the battery on a Mac portable is completely depleted and the computer goes into Safe Sleep, the light does not illuminate at all. ===='''How to troubleshoot a Mac with no sleep indicator light'''==== *connect a USB device that has a power-on or activity LED.  As power is restored to the USB and the system wakes from sleep, the LED lights up. *Press Caps key multiple times to see if the embedded LED light turns on. *Open display and press and alphanumeric key to wake the computer from sleep. *A computer that has been asleep for an extended period can consume the remaining charge of the battery.  Restore power to the computer with known-good power adapter and check that the MagSafe indicator light shows an in progress battery charge.  The computer will boot from a hibernation file and start from where it left off.   ==='''Power Nap'''=== [https://support.apple.com/guide/mac-help/what-is-power-nap-mh40773/10.13/mac/10.13.2 Power Nap] is a special sleep mode that allows a Mac to automatically wake to perform certain tasks, then go back to sleep again when it is finished. Read Apple Support article, [https://support.apple.com/HT204032 HT204032 - How Power Nap works on your Mac], for more information on Power Nap, including supported Mac models. ==='''Safe sleep'''=== [https://support.apple.com/guide/mac-help/what-is-safe-sleep-mh10328/10.13/mac/10.13.2 Safe Sleep] prevents information from being lost if the Mac is completely shut down during sleep, which could occur if the battery runs down or is replaced. [https://support.apple.com/HT201635 If a progress bar appears when the Mac wakes] from sleep, this means the Mac was in Safe Sleep. ==='''SMC'''=== The SMC, or [https://support.apple.com/HT201295 System Management Controller], is responsible for many of the low-level functions on a Mac. Resetting SMC instantly shuts down the computer, with some side effects: If the computer is in safe sleep or standby mode, it will reboot from a hibernation file. If the SMC reset is performed while a Mac is in “Wake” state, any unsaved data can be lost. If the computer is already shut down, there will be no side effects. Given these side effects, complete the steps outlined in the Before you reset the SMC section of [https://support.apple.com/HT201295 HT201295 - How to reset the System Management Controller (SMC) on your Mac]. Also ensure that the latest [https://support.apple.com/HT202040 firmware updates] have been installed. ==='''Power Adapters'''=== Portable Mac computers are charged using AC power adapters. Use the [https://support.apple.com/HT201700 appropriate wattage power adapter] for the Apple portable. A compatible higher wattage adapter can be used without issues, but it will not make the computer charge faster or operate differently. Lower wattage adapters will not provide enough power and might cause [https://support.apple.com/HT203207 power-related symptoms]. Battery life is the amount of time your device runs before it needs to be recharged. Battery lifespan is the amount of time your battery lasts until it needs to be replaced. To [https://www.apple.com/batteries/maximizing-performance/ maximize battery life] between charges, a customer can perform the following actions. [https://support.apple.com/en-us/HT204054 More about battery life for portables]. ====Adjust Energy Saver Preferences==== The Energy Saver preference pane includes several settings that determine power levels for your Mac. Your Mac knows when it’s plugged in and runs accordingly. When using battery power, it dims the screen and uses other components sparingly. ====Adjust Display Brightness==== Dim the screen to the lowest comfortable level to achieve maximum battery life. For instance, when watching a video on an airplane, you may not need full brightness if the cabin lights are off. ====Turn off Wi-Fi==== Wi-Fi consumes power, even if you are not using it to connect to a network. You can turn it off in the Wi-Fi status menu in the menu bar or in Network preferences. ====Quit Applications and disconnect peripherals==== Disconnect peripherals and quit applications not in use. Eject an SD card if you’re not currently accessing it. ==='''Key Points'''=== *Understanding power states will help you determine what troubleshooting steps to take *Safe sleep allows Macs to restore the contents of RAM to the hard drive. *The System Management Controller is responsible for many low level functions and should be reset as part of troubleshooting. *Desktop and portable Macs have different methods of resetting the SMC. *Power Adapters come in different wattages.  While you can use a higher wattage adapter without issues, lower wattage adapters will not provide enough power.   *Optimizing battery life best practices are a mixture of settings on the Mac and usage behaviors by the customer. ==Networks== to learn how to use the Network pane in System Preferences to [http://support.apple.com/HT201735 connect to the Internet], [http://support.apple.com/HT201974 manage network connections], and [http://support.apple.com/guide/mac-help/about-advanced-networking-options-mh15658/10.13/mac/10.13.2 configure advanced options]. Be sure to familiarize with the advanced network settings in system preferences. Familiarize with locations in network settings.  Edit locations to add new locations/remove locations, etc if different settings are required. *[http://support.apple.com/HT202480 HT202480 - How to use network locations on your Mac] *[http://support.apple.com/guide/mac-help/change-the-order-of-your-network-connections-mchlp2711/10.13/mac/10.13.2 Change the order of your network connections] *[https://support.apple.com/guide/mac-help/add-a-network-service-mchlp1176/10.13/mac/10.13.4 Add a network service] If you cannot connect to the Internet, there may be a problem with your cables, your devices, your network settings, or your Internet service provider (ISP). On a Mac running macOS Sierra (10.12) or earlier, you can use [http://support.apple.com/kb/PH25457 Network Diagnostics] (macOS Sierra 10.12 or earlier) to isolate and resolve the issue. to learn how to setup [http://support.apple.com/HT204445 file sharing] and [http://support.apple.com/guide/mac-help/share-your-printer-mchlp2424/10.13/mac/10.13.2 printer sharing] in macOS. Familiarize with network sharing options. Familiar with sharing files in macOS via network sharing. Printer sharing is only for wire connected printers (not wireless via WiFi, etc.) *[http://support.apple.com/guide/mac-help/ways-share-screen-files-users-network-mchlp1125/10.13 Ways to share your screen, files, and more with other users on your network] *[http://support.apple.com/HT202944 HT202944 - TCP and UDP ports used by Apple software products] ==='''Key Points'''=== *Use the Network pane of System Preferences to set priority of network ports, manually configure network settings and create sets of network. *use locations (sets of network preferences) to make network configuration easy for the customer and to help you troubleshoot network configuration issues. *Use Network Diagnostics to evaluate, isolate, and resolve network connectivity issues in macOS (macOS 10.12 and older). *Use the Sharing pane in System Preferences to control access to the computer. *As more sharing features are enabled, more opportunities to access the computer are opened. ==Troubleshooting Tools== For more information on basic software troubleshooting, see the Apple Support article, [http://support.apple.com/HT203161 HT203161 - Isolating issues in Mac OS X]. ==='''Force quit'''=== Built in software troubleshooting tool that allows you to stop unresponsive application without affecting other running applications.  This is less invasive than a force restart on the machine. Use force quit when a specific application stalls or is unresponsive or switching to another app that is not stalled to preserve data before restarting the computer. For more information on Force Quit, see the following Apple Support articles: [http://support.apple.com/en-us/HT201276 HT201276 - How to force an app to quit on your Mac] [https://support.apple.com/guide/mac-help/mchlp2579/10.14/mac/10.14 If an app freezes or quits unexpectedly] ==='''Why install software updates?'''=== One of the best ways to resolve software issues.  Updates can resolve software compatibility issues, apps that unexpectedly quit, issues involving EFI and SMC firmware.  Also, keeping your software up to date is one of the most important things that you can do to maintain the security of your Apple product. What customer issues/concerns would prompt me to use software updates? *A specific app stalls or is unresponsive *An app fails to launch or unexpectedly quits during use *An app fails to open *An app reports that it is not compatible. For more information on Software updates, see the following Apple Support articles: *[http://support.apple.com/en-us/HT201541 HT201541 - How to update the software on your Mac] *[http://support.apple.com/HT202040 HT202040 - About the SMC Firmware Updates] *[http://support.apple.com/HT201222 HT201222 - Apple security updates] ==='''Activity monitor'''=== Helps monitor the activity of processor and disk, memory, and network activity.  Also checks: *CPU Processor activity *Memory - shows info about how memory is being used *Energy - energy impact of applications *Disk - Amount of data being written/read *Network - amount of data being written/read via network interfaces Use when *Slow Mac *Unresponsive app *Slow network performance *Fan running continuously *Battery runtime For more information on Activity Monitor, see the following Apple Support articles: *[https://support.apple.com/guide/activity-monitor/welcome/mac Activity Monitor User Guide] *[https://support.apple.com/guide/activity-monitor/check-if-your-mac-needs-more-ram-actmntr34865/mac Check if your Mac needs more RAM in Activity Monitor] *[https://support.apple.com/guide/activity-monitor/quit-a-process-actmntr1002/mac Quit an app or process in Activity Monitor on Mac] *[https://support.apple.com/HT203184 HT203184 - See how apps affect Mac performance, battery runtime, temperature, and fan activity] Familiarize yourself with each pane. ==='''System Information'''=== Provides detailed information such as: *Operating System Version *Computer specs and serial number *Hard disk volumes: types and number attached. *Installed preference panes, extensions, and apps *Connected USB, Thunderboth, and FireWire peripherals. Use in situations when: *Verification of system requirements for new hardware or software product *Verification of network connections, including active services, IP addresses, and type/speed of network connections. *Verification of a connected module (memory module peripheral, hard disk partition, or volume) *Verification of a serial number when logic board has been replaced For more information on System Information, see the following Apple Support article: *[http://support.apple.com/kb/HT203001 HT203001 - About System Information on your Mac] ==='''Console'''=== Displays a live stream of log messages.  Shows diagnostic info about your Mac and any connected devices.  Provides an essential overview of diagnostic information recorded by OS from a central location. Use when: *unexpected shutdowns *Apps quitting unexpectedly *Directed by apple support article *Customer requests to send usage and diagnostic info to Apple *Discovery of additional technician info that might assist with an issue. For more information on Console, use the following resources: *[https://support.apple.com/guide/console/welcome/mac Console User Guide]   Go to Applications > Utiliies Open Console Select or search for the messages, reports, logs you wish to view Note the information provided by each entry Note that each entry is time stamped to pinpoint when and how frequently error occurs. ==='''Disk Utility'''=== View, manage, troubleshoot connected disks.  Includes internal and external hard drives, flash-based storage, disk images, and DVDs.  Can repair, securely erase, partition, and verify disk integrity. Use when: *Issues related to directory damage *Verifying or repairing hard disk *Erasing and securely erasing hard drives *Creating or resizing partitions *When told by an Apple Support ARticle.   Beginning with El Cap, system file permissions are automatically protected.  The option to repair/verify these permissions is no longer present. Repairing permissions or verifying with disk utility is still available in earlier OS. Director damage symptoms include a machine that does not start up, is slow to start up, or stalls during start up.  Customer may also state that they are experiencing slow performance or apps that error out without opening. Causes: *Power outages *Unexpected shut downs *Consumed batter causing unexpected loss of power *Loose power cable *Hardware failure For more information on Disk Utility, see the following Apple Support article: *[https://support.apple.com/guide/disk-utility/welcome/mac Disk Utility User Guide]   The most secure erase option meets US DoD standard for securely erasing magnetic media.  Writes over data 7 times. Not an option in disk utility with solid state drives. If you try to repair the startup or boot volume using First Aid, you will receive a message warning “in order to run First Aid, the boot volume must be frozen.”  (Have to do in recovery for example) ==='''Terminal'''=== A text based app that lets you interact directly with industry-standard UNIX foundation of macOS.  Provides direct command-line access to the UNIX environment. Should only be used by those with extensive UNIX experience.  Terminal is most often used by system admins, software developers, and other technical users.  In general, not required when troubleshooting Macs. Use terminal only when an Apple Service Guide instructs. For more information on Terminal, use the following resources: *Help menu within the Terminal app *The specific article that instructs you to use Terminal (see examples below) *[https://support.apple.com/HT203538 HT203538 - Resolve issues caused by changing the permissions of items in your home folder.] *[https://support.apple.com/HT201262 HT201262 - Use safe mode to isolate issues with your Mac] *[https://support.apple.com/HT201372 HT201372 - How to create a bootable installer for macOS] ==='''Key Points'''=== *macOS has built in tools to help troubleshoot software issues and support articles that walk you through using them/ *Force quit allows a user to stop an unresponsive app without affecting other running applications.   *Software updates can resolve software compatibility issues or apps that unexpectedly quit. *Activity monitor helps monitor the activity of a computer’s processor, disk, memory, and network activity. *System information provides detailed information about the computer’s hardware, software, and network in an easy-to-read layout. *console is an application which display live stream of log messages..  It also shows diagnostic info about your Mac and any connected devices.   *Disk utility is used for viewing, managing, and troubleshooting connected disks. *Terminal command-line access to the UNIX foundation is normally not required when troubleshooting Mac computers. *Only use terminal when directed to do so by an Apple resource. ==Troubleshooting Startup== ==='''Standard Startup Process'''=== The [https://support.apple.com/HT204156 standard startup process] begins when the power button is pressed and ends when the desktop appears.  The entire process is comprised of these three stages: *Hardware = system powers on, test, and prepares the hardware. *Firmware - Firmware is loaded.  Firmware is permanent software embedded in the hardware.  If FileVault is enabled, the user is prompted to provide a username and password. *Software - the boot loader (a program that places the OS into memory) is loaded.  The OS loads and starts everything else required at the login state. The OS then sets up the user’s environment. [http://support.apple.com/kb/HT201262 Safe Boot startup] and [http://support.apple.com/kb/HT201314 starting up from the recovery system] do not follow the standard startup process described above. ==='''Power on Self Test'''=== Step 1 - when you press the power button, the Mac provides power to the logic board and performs a quick check of the hardware.  The hardware check is called the Power-On Self Test (POST). Test resides in the read-only memory ROM of the computer. If POST is successful, Mac will emit a start chime (2016 or older) and continue the start up process.  If a fault is detected the computer might: *Sound a series of error tones *If equipped with one, flash the front LED *Produce no chime or sounds (if older than mid-2016). If any of these occur, the screen will remain black. If there is no chime, a series of error beeps, or a flashing LED on the computer after you press the power button, try the following steps to troubleshoot the hardware: '''Use known good power and cable'''- Start with the least invasive, least costly quick fix first. Check basic power flow. '''[http://support.apple.com/kb/HT204063 Reset NVRAM]''' - This will reset startup disk settings. '''[http://support.apple.com/kb/HT201295 Reset SMC]''' - Reset the SMC to resolve power issues. '''Research LEDs and [https://support.apple.com/en-us/HT202768 startup tones]'''- Consult hardware-specific resources to match specific LED codes or error beeps to specific symptoms. '''Remove peripherals'''- Remove any third-party or other added internal or external devices and try again. '''[http://support.apple.com/en-us/HT202731 Run Diagnostics]''' - Run Mac Resource Inspector (MRI), Apple Diagnostics, or Apple Hardware Test (customer diagnostics), if possible, to identify common hardware failures. Mac computers can produce [http://support.apple.com/kb/HT202768 several tones when starting up]. Mac computers prior to early 2016 should produce the familiar POST chime at startup. If you hear something other than the POST chime, and the Mac is from Early 2016 or even earlier, it might mean there is a problem with your Mac. ==='''Firmware'''=== While firmware loads, the Mac displays a blank gray or black screen.  Firmware decides which startup disk to use from: *hard disk *Recovery HD *Internet recovery *Installation disc *NetBoot server If the Mac fails to advance past a blank black or gray screen, displays the prohibitory symbol, or flashes a folder with question mark symbol, the firmware has not found the correct files necessary for startup. If this screen displays for more than one minute, try the following firmware troubleshooting steps: #'''Reset NVRAM''' - This will reset startup disk settings. #'''Remove peripherals'''- Remove any third-party or other added internal or external devices and try again. #'''[https://support.apple.com/en-us/HT202796 Access startup manager]''' - hold down option on boot to see if there are other bootable drives. #'''[https://support.apple.com/en-us/HT201314 macOS Recovery]''' - try starting up from the recovery partition and attempt to repair and verify the permissions and startup volume disk. #'''[http://support.apple.com/en-us/HT202731 Run Diagnostics]''' - Run Mac Resource Inspector (MRI), Apple Diagnostics, or Apple Hardware Test (customer diagnostics), if possible, to identify common hardware failures. #'''[https://support.apple.com/en-us/HT204904 Reinstall macOS]''' - If you can start up from the recovery partition, but resetting NVRAM fails to resolve the blank gray screen, reinstall macOS. Be sure that the customer's information is backed up before proceeding. Folder icon - Mac could not find any local or network based startup disk. Prohibitory symbol - Mac could not find a valid system folder from which to start up. ==='''Software Boot-loader'''=== When the Apple logo is displayed, the boot loader has been successfully loaded from the startup disk.  The boot loader is a specific file called boot.efi, which is found in the /System/Library/CoreServices/ folder ==='''Software - FileVault Login'''=== User is prompted to log in a FileVault login prior to kernel files loading. ==='''Software - kernel'''=== Kernel and related files load - also checks the directory and starts services such as launch agents.  A progress bar is displayed during this process. ==='''Software - login window'''=== Once completes loading all necessary kernel and extensions, login window will load. ==='''Software'''=== Desktop - if FileVault is not enabled on the system, macOS will prompt fo a name and password.  Or the computer will automatically log in directly to the customer’s user account. Auto login preferences can be adjusted in the Users & Groups pane of System Preferences. User Environment - the finder opens and macOS looks for user accounts and user-owned files, also starts runner user processes including Finder and Dock. Login Items - then opens login items which can be adjusted in the Users & Groups pane of System Preferences. If the Mac is stuck on the Apple logo, stuck on the progress bar or kernel panics, try the following software troubleshooting steps: #'''Run Diagnostics''' - Run Apple Diagnostics or Apple Hardware Test, if possible, to identify common hardware failures. #'''[http://support.apple.com/en-us/HT204319 Verify OS and build]''' - verify in MRI that this machine has the correct OS and build. #'''macOS Recovery''' - try starting up from the recovery partition and attempt to repair and verify the permissions and startup volume disk. #'''[http://support.apple.com/en-us/HT201262 Safe mode]''' - boot the Mac into safe mode to see if the issue still persists. #'''Reinstall macOS''' - If these techniques cannot resolve the issue, reinstall macOS. Be sure that the customer's information is backed up before proceeding. ==='''Safe boot or Safe Mode'''=== [https://support.apple.com/HT201262 Safe Boot, or Safe Mode], is an effective way to evaluate and isolate startup issues. Safe Boot prevents certain software and extensions from automatically loading or opening. Safe Boot might take longer than normal. A progress bar will appear, indicating the disk's directory is being checked. This process can take several minutes. The login screen will display Safe Boot in red in the upper right corner of the screen upon successful boot. If FileVault is enabled, the FileVault password must be entered before Safe Boot can begin. You cannot perform a Safe Boot if a [https://support.apple.com/en-us/HT204455 firmware password] is enabled. Example Situations and Scenarios Startup stops at Apple Logo or the Apple Logo with progress bar *Wait 5-10 mins - The system performs a disk directory check automatically if it was shut down improperly.  This process may take longer on larger hard disks. *MacOS Recovery - start up from recovery partition and attempt to verify and repair the startup volume disk. *Reset NVRAM - Try PRAM/NVRAM resets *Run Diagnostics - run storage diagnostics through AST.  Verify the integrity of the internal drive. If possible, dock the system drive external and attempt to boot from the disk, isolating any individual hardware issues. If you can boot in Safe Mode, or chec k other log files using Terminal when booting from the installation disc or recovery partition.   Stops at light gray screen after Apple logo *Safe Mode - see whether corrupt fonts or extensions are causing the issue. *Console - check the logs in Console under system.log or Console Messages for failure errors around the time of the last boot attempt. *MacOS Recovery - Use disk utility to run First Aid. *Reinstall macOS What if there is no login window? *Safe Mode - if login window appears in Safe Mode, open system preferences to verify that the login options in the Users & Groups pane are configured correctly.  Remove any recently installed or third-party login items or launch agents. *MacOS Recovery - repair the startup volume’s directory in disk utility. *Reinstall macOS What if you do not see the user environment? *Test User - login to another user if possible. *Open App - if the dock or menus are not available, try opening a file or app. *Recovery - start up from recovery and run Disk Utility’s First Aid. *Console - Examine Console logs on the problematic volume (system.log and any crash logs) *Reinstall macOS. ==='''Key Points'''=== *The three stages of Mac startup are Hardware, Firmware, and Software. *You should know the visual and auditory cues of the startup process in order to troubleshoot startup issues. *Safe Boot or Safe Mode can help evaluate certain startup issues. *Using diagnostics and understanding Mac startup tones can help isolate hardware startup issues. *MacOS Recovery is useful both for an alternate way to startup the customer Mac and as a means to reinstall the system software if needed. =='''Systematic Troubleshooting for Mac'''== Apple’s systematic troubleshooting process supposes that all possible issues are based on one of four root causes:  Hardware, Software, Environment, Education Opportunity. Process involves three principle stages: Evaluation, Isolate, Resolve ==='''Evaluate'''=== *What does the customer tell you *What does the device tell you *What do Apple resources tell you *Ask probing questions *Run relevant diagnostics *List for any potential safety issues. *Apply the quick checks that are recommended. *Eliminate irrelevant possibilities until you are left with the most likely cause. Begin by eliminating information that is not related to the issue. Follow up with probing questions to help narrow the possibilities. Use a combination of both open questions and closed questions. What does the device tell me? Always run diagnostics relevant to the issue you are experiencing. ==='''Isolate'''=== *Have the customer reproduce the issue *Determine if you are dealing with a device issue, or an issue not related to the device. *Isolate the issue to the correct problem space:  Educational opportunity, environment, software, or hardware. *Use non-invasive troubleshooting techniques before you move forward with more invasive methods. ==='''Safety Response'''=== Listen closely for any potential safety issues.  Words such as shock, fire, smoke, spark, liquid, or swelling indicate a safety issue that needs to be addressed. ==='''Resolve'''=== AFter evaluating and isolating the issue correctly, common resolutions could be: *Repair without using parts *Repair using parts *Reinstall or update software *Educate the customer *Direct the customer to third-party resources. ==='''Problem Spaces'''=== If the issue is device related, it is going to exist in the Hardware or Software problem spaces. If the issue is NOT device related, it is going to exist in the Educational Opportunity or Environment problem spaces. ===='''Hardware problem space'''==== *issues related to hardware failures *Resolutions will generally require repairing the device with parts or possibly replacing a device.   ===='''Software Problem Space'''==== *Issues directly related to software installed on a device.   *Simply restarting a device will resolve many software issues. *Issues may affect system software or only applications and files installed by the user.   *Resolutions may include toggling specific settings, resetting specific settings, updating software, or reinstalling software.  Sometimes removing specific files, apps, or other data related to the issue. ===='''Educational Opportunities'''==== Not issues, but opportunity to educate customer and reset their expectations related to their device.  Customer may think there is an issue, but they are really misinformed about what the device is capable of or may be performing a task incorrectly.   *Always important to have the customer reproduce the issue. ===='''Environmental Problem Space'''==== Can be difficult to isolate because they are hard to reproduce. *May include dropping calls, unable to join a specific network, and wireless interference. ==='''Some basic troubleshooting links:'''=== *[https://support.apple.com/en-us/HT204156 HT204156 - About the screens your Mac displays as it starts up] *[https://support.apple.com/en-us/HT203161 HT203161 - Isolating issues in Mac OS X] *[https://support.apple.com/en-us/HT201262 HT201262 - Use safe mode to isolate issues with your Mac] *[https://support.apple.com/en-us/HT204443 HT204443 - How to test an issue in another user account on your Mac] *[https://support.apple.com/en-us/HT201314 HT201314 - About macOS Recovery] *[https://support.apple.com/en-us/HT204063 HT204063 - How to Reset NVRAM on your Mac] *[https://support.apple.com/en-us/HT201295 HT201295 - Reset the System Management Controller (SMC) on your Mac] *[https://support.apple.com/HT201686 HT201686 - Use the Mac operating system that came with your Mac, or a compatible newer version] *[https://support.apple.com/HT201255 HT201255 - Startup key combinations for Mac] *[https://support.apple.com/HT201236 HT201236 - Mac keyboard shortcuts] {| class="wikitable" |[https://support.apple.com/en-us/HT201542 HT201542 - Potential sources of Wi-Fi and Bluetooth interference] [https://support.apple.com/en-us/HT201735 HT201735 - How to connect to the Internet with your Mac] [https://support.apple.com/en-us/HT202480 HT202480 - How to use network locations on your Mac] [https://support.apple.com/en-us/HT202663 HT202663 - Check for Wi-Fi issues using your Mac] |} '''Key Points''' Troubleshooting process involves three stages:  Evaluate, Isolate, Resolve Answer 3 questions when you are evaluating: #What does the customer tell you #What does the device tell you #What do Apple resources tell you Isolate the issue to the correct problem space then identify the best resolution for your customer. ==Repairing all Macs== ===Tools=== Use the appropriate tools and have them ready prior to repairing any Mac.  Never use tools that are not appropriate for the repair. Apples uses mainly Phillips, Torx, and flathead screw drivers but can use others. ESD safe tweezers ESD safe nylon probe (black stick) ESD safe screw box with multiple compartments Volt meter Felt tipped perm marker Microfiber cloth These are just a few of basic tools needed. Also uses specialized tools depending on the repair/mac. For example: MacBook service stand - for 12” retinas Foam wedge support stand - for display assemblies in portables iMac corrugated stand for VESA mount iMac IMac locking wedge - for iMacs with stands CPU riser spring press for reassembling CPUs VHB kits - slim iMac adhesive. 6” silicone roller - cleaning iMac displays Specific screwdrivers - such as Trilobe, pentalobe driver Embedded battery cover - portables Display extension cables for iMac CDM - customer data migration tool kit Key cap lever and slider tools Antennae tool IMac wireless card tool Bale retrieval tool for VESA mounts Mac mini logic board removal tool Track pad calibration weights And many more! ==='''What constitutes a quality repair experience?'''=== The Apple standard is high.  You are responsible for correcting issues and repairing the relationship between Apple and customer.  Set yourself up for success by identifying everything you need before you begin the repair to ensure a more efficient repair process. Common repair habits: *be sure you have access to all service related systems *Gather all necessary information related to the repair *Be sure workstation is configured properly, ESD precautions are being followed, clean ESD mat, wear ESD wrist strap, have ESD bags *Make sure all safety protocols are in place *Gather all needed tools *Keep workstation organized Make sure that Mac Activation Lock has been turned off before performing any repairs for applicable Macs. ==='''During Repair'''=== Keep organized repair station and follow the prescribed workflow noted in Apple documentation to be more efficient and less likely to make costly repair mistakes.   Maintain good repair habits: *continue to stay organized *Maintain ESD precautions *Continue to observe safety protocols *Update case notes throughout the repair *Maintain organizational system of parts/screws *Handle each connector type as instructed in order to minimize damage *Use correct tools in the correct way ==='''Screw Organization best practices'''=== ESD safe screw tray provides a convenient way to manage the wide variety of screws that are removed and replaced during re-assembly.   *Keep track of screws and parts removed.  Loose screws can cause a thermal event. *Screw organization is as important as documenting a repair case properly *Fellow technicians should be able to easily identify and follow your organization process. *What makes sense to you may not make sense to another tech *Clearly document and outline your screw organization process. *Refer to service guide screw chart chapter and take apart steps to aid in the identification of screws. <br /> ==='''Connector types:'''=== Card Connectors - Ex - Airport card, PCIe SSD, GPU - lift as little as possible to grasp, slightly wiggle from side to side and pull lightly to remove. Horizontal-Install connectors - Ex - MacBook Air camera connector, 2010 camera connector, etc.  Use 2 black sticks to pull out horizontally directly out of connector. Japan Solderless Terminal (JST) Connectors - ex. Speaker connectors, microphone connectors, slide pointed end of black stick underneath cable and use black stick as platform to remove from board straight up Locking lever connectors - trackpad connectors - use pointed end of black stick to flip locking leaver straight up and use pull tab to remove the cable.   Multi-Pin Horizontal Insert Connectors - Most display connectors on portables and slim - use pointed end of black stick to flip lock bar up and ease connector out of connector.  Never hold connector by lock bar. Platform connectors - many battery connectors!!  Grasp connector with fingernail or black stick and pull straight up, never pull cables. Pull-Tab connectors - Some battery connectors (MacBook Air), power supply connector - grasp ull tab or connector and pull straight out.  If no pull tab, use fingertips and pull gently and evenly. Solid platform flex connector - power flex connector as in on MBA and MBPr, trackpad connector.  Some have foam pad and lock bar (newer portables).   Wireless antenna connector - Airport card - use ESD tweezers to grasp neck of connector and pull straight up, be careful not to damage. Interposer - Used in some versions of MacBook Pro Retina.  Carries power from the battery to the logic board.   Low profile solid platform connectors - similar to above. ==='''When repair is finished'''=== Complete post-repair tests and diagnostics. Store it in a way no damage can occur. Mac Repair Completion Steps by Model Date {| class="wikitable" |'''Before 2015''' |'''2015''' |'''2016''' |'''2017''' |'''2018''' |- |AST 1 or AST 2 Repair Verification |AST 2 Repair Verification |AST 2 Repair Verification |AST 2 Repair Verification |AST 2 Repair Verification |- | |Trackpad Calibration for Portables |Trackpad Calibration for Portables |Trackpad Calibration for Portables |Trackpad Calibration for Portables |- | | |Dual-Featured Auto Boot Disable and Re-enable for Portables |Dual-Featured Auto Boot Disable and Re-enable for Portables |Multi-Featured Auto Boot Disable and Re-enable for Portables |- | | |Top Case to Logic Board Configuration |Top Case to Logic Board Configuration |MacBook Pro Models with the Apple T2 chip need System Configuration for Logic Board, Touch ID, Display, and Top Case Replacement |- | | | |iMac Pro with the Apple T2 chip requires System Configuration for Logic Board and Flash Storage Replacement |Mac mini (2018) requires System Configuration for the Logic Board. |- | | | | |MacBook Air (Retina, 13-inch, 2018) requires System Configuration for the Logic Board and Touch ID. |} Verify that the original customer issue has been resolved, no new issues have been introduced during the repair, and the Mac will pass required diagnostics. Recommended diagnostics on all Macs to verify a repair: *MRI - to verify that all components are connected and properly detected. *Full Systems Diagnostic - run both EFI and OS versions of these tests.  For older Macs use ASD EFI and OS. *Some Macs require additional diagnostics any time they are repaired.  Ex. MacBook 12” Early 2015 requires trackpad calibration any time the unit has been opened. ==='''Cleaning'''=== It is essential to clean the computer before returning it to the customer. Please refer to: *[http://support.apple.com/HT204172 HT204172 - How to clean your Apple products] It is important that the customer receives a clean and undamaged device when it is returned from repair service.  Use protective packaging and careful handling to keep products clean and safe. ==='''Key Points'''=== *Familiarize yourself with safety protocols and procedures BEFORE servicing. *Use the correct tools for the repair *Identify everything you need BEFORE you begin the repair *Keep an organized repair station and follow the recommended workflow as noted *Provide your customer with complete resolution by completing post-repair verification tests and diagnostics. ==Servicing iMac== ==='''Power Supply Warnings!'''=== Models produced in Late 2011 or earlier require at least one hour to discharge. Models produced in Late 2012 or later require two minutes to discharge. ==='''Display warning!'''=== Use extreme causing when troubleshooting with display panel removed.  Avoid touching the LED backlight board, logic board, or power supply while computer is plugged in - the power supply retains a charge whether or not the computer is actually on.  Before working near a power supply, unplug the power cord and wait the appropriate time for it to discharge.   ==='''Power supply covers'''=== Use protective power supply covers when the power supply is exposed.  Secure the covers with Kapton or painter’s tape. ==='''Safety Stuff'''=== *Remove rings, watches, necklaces, metal-rimmed eyewear, and other metallic articles.   *Do not wear mobile phone or other signaling devices such as Apple Watch.  These may cause a dangerous startle reflex during energized work. *Do NOT wear ESD wrist strap if the iMac needs to be plugged in during repair as it may increase risk of electric shock. *Remain alert!  Be aware of the proximity of grounded objects to your body. *Use the nylon probe tool (black stick) or other non-metal extension tool as needed.  Keep fingers away from potentially energized parts. *The glass on the display panel is NOT tempered.  If display is still attached to housing and broken, secure broken glass with packing tape and carefully follow removal procedure. *Handling a broken display requires caution and special tools.  First put on safety glasses and material handling gloves. You will also need large ESD bags, large box for disposal, packing tape. *IMacs include an internal coin battery on the logic board.  Battery provides power to the real-time clock (RTC) and NVRAM when the computer is not connected to power source.  If battery is installed incorrectly or is replaced with incorrect battery there is a chance of thermal event.   *Be careful not to stress display connectors and cables when tilting the display open.  Do not completely open display until cables/connectors are disconnected. *Use caution when removing VHB (iMac adhesive) from the display panel to prevent damage to the black Mylar protective file that is located on the display panel glass.  Peel VHB from center points and not the ends to avoid. *If Mylar is peeled or wrinkled on the display use finger to press file back on to the panel.  It should be smooth and undamaged. If Mylar is pulled away from display, the display panel may need to be replaced. *For Mid 2011 21.5” and 27” iMac - align logic board to rear housing by plug in cables to the Thunderbolt and also to the furthest left USB while tightening screws. *For slim iMacs 2012-2016 - Plug one USB cable and two thunderbolt cables while tightening the logic board for proper alignment for 27”.  For 21.5” use SD card, one USB and two thunderbolt cables for alignment while tightening. *2017 iMacs - have a different alignment procedure where MLB and housing have matching pins and holes.  You use only one of the 2 possible connectors during the installation process.   *Closely follow the cable routing when reassembling (take pictures if needed prior to disassembling!).  Do not leave cables behind the logic board or other components when reassembling. *Do not life the SSD or Flash storage connector at an angle when inserting it into the connector.  Lifting the flash storage at an angle can damage the LB connector. *Later iMacs require Wireless Card Support Tools to stabilize whenever antennas are detached or card is removed.   *Always remove the VHB from each antenna (all the VHB really) *Run appropriate diagnostics - mid 2014 21.5” onward uses AST 2 and Full System Diagnostics.  Older uses AST 1 and ASD EFI and OS. ==='''27” slim iMac notes'''=== *there are 4 antennas but only 3 can be replaced *You must replace both speakers even if one is damaged *Do not break the small cable behind the power supply - built into housing! ==='''Key points'''=== *Older iMac models can require up to one hour to fully discharge once unplugged. *More recent iMac models require 2 minutes. *User Power Supply Covers whenever the power supply is exposed. *Plug in recommended cables to the back of an iMac while reinstalling the logic board for correct alignment *Carefully review the videos and articles describing the model when working on an iMac model for the first time. ==IMac Pro servicing== Available accessories for the iMac Pro: *Space Gray Magic Mouse 2 - in the box *Space Gray Magic Keyboard with Numeric Keypad - in the box *Space Gray Magic Trackpad - available when ordering iMac Pro [https://www.apple.com/imac-pro/specs/ the iMac Pro specifications page] *the BR2450 backup coin battery is more powerful version than previous models.  Must be installed with engraved or + side facing up. Apple does not sell this battery as a service part. *Data may be lost unless the customer backs up (T2) *Default security systems prevent from starting up on external drive *NetBoot is not currently supported on 2017 iMac Pro *Flash storage modules must be paired to the iMac if replaced. *Some data MAY be transferable using Data Transfer Utility prior to LB or storage replacement. *Startup in Recovery Mode to use the Startup SEcurity Utility to change the defaults to allow external boot.  Admin access is required. *Replacement flash storage must be reinstalled into the same connector it was taken out of.  The storage is marked with 00 and 01 which corresponds to the numbers on the connectors on the LB. *The flash storage devices are paired to the logic board and data cannot be accessed or recovered when installed in another logic board *Every time you install a replacement DIMM in one of the inner memory slots (2 or 4), you must install an EMI absorber on the DIMM to avoid Wifi and Bluetooth signal interference. *One absorber is included with each replacement DIMM service part.  3rd part DIMMS in slot 2 or 4 also require the absorber. *Replacement power supply includes new bus bars which must be attached before installation can take place.  Logic board bus bar screws must be installed with an adjustable torque driver set to .75nm. Power supply bus bar screws must be installed with an adjustable torque driver set to .85nm. *Customers can remove the stand and install the VESA mount adapter.  Improper installation can result in retraction of mechanism into the iMac Pro enclosure. *Amended functions in AST 2 for iMac Pro - In image persistence test, tones are not played after 4 minutes have elapsed, you will need to refer to the Diagnostic Console to determine with it is time to look at the UUT’s screen. *An interactive headphone jack test is now part of the AST 2 Audio Suite for iMac Pro and requires a set of headphones for testing. *Requires special tools for removing and replacing MLB.  Mac Configuration Utility must be used to properly configure the logic board. *Has a dual fan assembly. *These speakers also work as pair and must be replaced together. *Wireless card is not removable. *Use logic board service tray with stiffeners for iMac Pro. *The logic board must be removed in order to replace RAM and storage.  Storage is paired to the board. *AST 2 is used to serialize the logic board.  You need iMac Pro, usb-C data cable with either usb-A or usb-C on other end, known good computer, and ipad.  Host computer must be on 10.13, have Mac Configurator installed, and be connected to the internet. *DFU mode is holding down power button for 10 seconds while plugging in power cord to wall.  Display will remain blank but should show up on host computer in Configurator. ==='''Key Points'''=== *iMac Pro ships with Space Gray Magic Keyboard with Number Pad and Space Gray Magic Mouse 2 *All 2 minutes for the power supply to discharge before opening *Use power supply cover when performing troubleshooting that requires an open iMac Pro *NetBoot and starting up from external drives is blocked by default.  NetBoot is not supported on 2017 iMac Pro *New tools for iMac Pro 2017 are:  Wireless card support tool, logic board tray and stiffeners, display extension cables, and new VHB strips. *Do not use the display removal tool on the top center 3 inches of display due to microphone cables and camera. *Logic board must be placed on the logic board service tray with stiffeners installed for repairs including flash storage, memory and battery. *Replacement power supply includes new bus bars, which must be attached before installation can take place.  If the bus bars are damaged during repair, they must be replaced. The can be ordered as a separate service part. *Replacement logic board and flash storage require initialization using the Mac Configuration Utility and AST 2. ==Servicing Mac mini== Mac mini Late 2014 requires an internal coin battery on the logic board.  This battery provides power to the real-time clock and parameter RAM. If it is installed incorrectly or replaced with an incorrect type of battery, there is rick of thermal event.  Positive pole should be facing upward from logic board. Late 2012 Mac mini and Mac mini Server - antenna plate and housing are sharp, use care to avoid injury and damage to antenna cable. Late 2014 model - RAM is soldered to logic board. 2018 model - RAM can be replaced. Late 2014 - Service tools include suction cup and logic board removal tool.  Not required for the 2018 model. Suction cup tool is used for removing the bottom cover to get into Mac mini.   Power socket is held in proper place by the power socket retention clip.  The cowling for the AC inlet is removable. The socket rotates within a groove in the housing and must be aligned correctly before the retention clip can be inserted. Late 2012 - mini and Server - the bottom screw (LB and heat sink screw) is a threaded standoff that fan screw will screw into.  If the fan screw that screws into the heat sink screw is lost or damaged, the entire logic board will have to be replaced (there is no replacement part for just the cowling screws). 2018 model - Use black stick to remove the bottom cover.  T6 security bit is required to remove the antenna plate screws.  Remove the antenna connector before removing the plate by moving clockwise and detaching antenna cable.  Fan screws are on diagonal angle! Power button now has a flex cable. If the cable is torn, the entire I/O wall needs to be replaced. ==='''Ports'''=== *Power button *Power cord *Gigabit Ethernet (Optional 10GB Ethernet CTO) *4 x Thunderbolt 3 USB-C ports *HDMI *3.5mm headphone jack *2 x USB-A ports ==='''Key Points'''=== *The coin battery inside Mac mini models must be installed properly *Antenna plate and housing inside L2012 model are sharp and can cause personal injury if not handled with care. *RAM inside L2014 is onboard and not upgrade able. *Connectors used in all models are fragile *Torque drivers are required tools for service L2014 model. *Antenna plates are attached to wireless cards and must be removed carefully. *Memory can be replaced in 2018 model *Care must be taken when removing the power supply cable from the LB in the 2018 mode - connection is tight. <br /> ==='''Secure Boot'''=== https://support.apple.com/en-us/HT208330#fullsecurity ==='''Torx'''=== The trademark name for a type of screw head or screw driver bit characterized by a 6-point star-shaped pattern. ==='''Torque'''=== The twisting or turning force used to tighten screws and other fasteners, measured in units of inch-pounds (in-lb), kilogram-centimeters (kid-cm) or Newton-meters (Nm). ==Servicing Mac Pro== L2013 and M2012 models - internal coin batteries on LB.   Always shut down Mac Pro before opening it.  Wait 10 minutes to allow the internal components to cool.   L2013 and M2012 both contain diagnostic LEDs. L2013 - be aware of potential hazards of the bus bar and bus bar screws to avoid injury.  Hazardous energy (>240VA) exists on each of the bus bars throughout each of the logic boards when the power supply 12 Vdc output is energized. L2013 - when housing is removed a safety interlock circuit on the I/O board immediately de-energizes the power supply output.   You can override the safety interlock circuit and energize the power supply output by using a magnet. Overriding the safety interlock should only be done for the purpose of observing the status of the LEDs.  Do not disassemble the system with the safety interlock defeated! L2013 - Serial number is located on bottom of cylinder. Earlier - serial numbers are located under need video output ports. [https://support.apple.com/HT205044 HT205044 - Mac Pro (Late 2013): Installing or replacing memory] 2013 - if you service either graphics card A or B, or the processor board on the thermal core, you must run the Cooling System Diagnostic in AST.   ==='''Hall Effect Sensor'''=== L2013 models - magnetic sensor that will prevent operation of the computer with the housing removed, located inside the outer casing.  Aligned to engage the safety interlock sensor near the power button. ==='''View Diagnostic LED steps'''=== *Turn off unit *Remove AC power cord and all cables/peripherals that might be connected. *Remove the housing *Connect the AC power cord. *Hold a magnetic source approximately 1 inch to the right of the power button, immediately to the right of the vertical EMI gasket of the I/O wall. *Press the power button while magnet is in place.  Removing the magnet will immediately power off the computer. ==='''Diagnostic LEDs'''=== *STatus LEDs do not illuminate unless the DIAG button on the I/O board is being pressed. *Error LEDs illuminate red when there is an issue. *Warning LEDs illuminate yellow when a thermal problem is detected.  This type of LED is only found on the CPU riser card. SCORM Frame ==='''Single Processor Configuration'''=== A quad-core Mac Pro (Mid 2012) has one processor and four memory slots.  You can install 2GB, 4GB, or 8GB DIMMs for a total of up to 32GB of memory. You can install different size DIMMs in Mac Pro (Mid 2012). However, for best performance, Apple recommends you install equal-size DIMMs (all 2GB, all 4GB, and all 8GB) filling the slots in the order listed in the table below. Note that you cannot place a DIMM in slot 4, without first placing a DIMM in slot 3. {| class="wikitable" |Number of DIMMS |Fill these Slots |- |Two DIMMs |1 and 2 |- |Three DIMMs |1, 2, and 3 |- |Four DIMMs |1, 2, 3, and 4 |} ==='''Dual Processor Configuration'''=== A 12-core Mac Pro (Mid 2012) dual-processor supports 2GB, 4GB, or 8GB DIMMs for a total of up to 64GB of memory. You can install different size DIMMs in Mac Pro (Mid 2012). However, for best performance, Apple recommends you install equal-size DIMMs filling the slots in the order listed in the table below. Note that you cannot place a DIMM in slot 4, without first placing a DIMM in slot 3; you also cannot place a DIMM in slot 8 without a DIMM in slot 7. {| class="wikitable" |Numbers of DIMMs |Fill these slots |- |Two DIMMs |1 and 2 |- |Three DIMMs |1, 2, and 3 |- |Four DIMMs |1, 2, 3, and 4 |- |Six DIMMs |1, 2, 3, and 5, 6, 7 |- |Eight DIMMs |1, 2, 3, 4, and 5, 6, 7, 8 |} [https://support.apple.com/HT205043 HT205043 - Mac Pro (Mid 2012 and earlier): How to remove or install memory] ==='''M2012 Processor Diagnostic LEDs'''=== The dual-processor board and single-processor board include a diagnostic LED for each processor. The following illustrations show the location of each LED and its associated processor. These error LEDs are normally off. A red illuminated LED indicates the associated processor may be missing or in overtemp state. ==='''How to identify Single-Processor and Dual Processor in 2012'''=== A quick way to identify between single-processor and dual-processor configurations is to open the side panel and inspect the processor heat sinks on the processor board. The configurations look like the following: ==='''2012 Troubleshooting CPU Diag LEDs'''=== *Determine if the error LED follows the processor heat sink. *Verify the heat sink is physically undamaged and properly connected to the processor board *Check that adequate thermal grease is applied and verify the fan is operating. *For dual processor boards ONLY - determine if the error LED follows the processor by swapping processor A and B locations. *Also has backplane diag LEDs *For Memory LEDs - Red indicates its associated DIMM may be poorly seated or failed.  The System Profiler or System Information will not reported unseated or failed memory.  Try this procedure - Remove and reseat DIMM, restart computer, if still illuminated replace with new DIMM, restart and verify no longer illuminated. *If 2 LEDs illuminate at the same time for 3 DIMM and 4 DIMM or 7 DIMM and 8 DIMM slots, may mean something else. ==='''2013 DIMM chart.'''=== There are four (4) DIMM slots.  To optimize system cooling, Apple recommends installing DIMMs as shown: {| class="wikitable" |'''Total Memory''' |'''DIMM Slot 1''' |'''DIMM Slot 2''' |'''DIMM Slot 3''' |'''DIMM Slot 4''' |- |12GB |4GB ECC UDIMM |4GB ECC UDIMM |4GB ECC UDIMM | |- |16GB |4GB ECC UDIMM |4GB ECC UDIMM |4GB ECC UDIMM |4GB ECC UDIMM |- |32GB |8GB ECC UDIMM |8GB ECC UDIMM |8GB ECC UDIMM |8GB ECC UDIMM |- |64GB |16GB ECC RDIMM |16GB ECC RDIMM |16GB ECC RDIMM |16GB ECC RDIMM |} All UDIMMs are 1866MHz DDR3 ECC. Do not mix UDIMMs and RDIMMs. DIMMs that are not properly installed or do not meet the system requirements may effect system performance or not be recognized. Do not rock or wiggle - pulls straight out. ==='''Key Points'''=== Safety Concerns - *Coin battery must be installed properly *Should be allowed to cool for 5-10 minutes before opening *Follow all electrical safety guidelines when examining diagnostic LEDs *Only override the safety interlock when directed to do so by service guide Service *Use the new screws supplied and tighten them with an adjustable torque driver to the specific torque required by service guide. *Carefully review memory configuration instructions for the specific Mac Pro you are servicing. *Follow memory installation best practices and tips when installed DIMMS inside 2013. Take Apart *2013 requires many specialized tools and service fixtures - have on hand before beginning Post Repair *Run Cooling System Diag if repairs were done to GPU, processor board or thermal core. ==MacBook Air Servicing== Battery Replacement - New procedures!  - first Mac notebook to feature a replaceable battery.   Does not have a sleep LED.  To troubleshoot without one - connect a USB device that has power on or activity LED, press Caps key, open display and press an alphanumeric key to wake, charge with good adapter and check that MagSafe light shows 2018 Model has both standard and UV liquid contact indicators. 2018 - battery and speakers use adhesive strips similar to those used in later iPhones.   Beginning with 2015 model, speakers must be replaced as a pair. 2018 logic board replacement means also have to replace the Touch ID. 2018 has a removable metal battery service tray. Must run Trackpad Keyboard Mapper in AST if you replace a trackpad or top case on: *M2013-E2014 11” and 13” *E2015 11” and 13” *E2015 13” and Mid 2015 15” MacBook Pro *2017 13” SMC - chip on LB that controls all power functions.  Should be reset if experiencing no start up, not displaying video, sleep issues, or fan noise issues.  It shuts down the computer with some side effects: If in sleep mode, it will restart from a hibernation file.  If loaded into OS, data from open applications can be lost. If it is already shut down, no side effects. visit [https://support.apple.com/HT201295 HT201295 - Reset the System Management Controller (SMC) on your Mac]. ==='''Flow of Power'''=== The routing of the keyboard/power button signal goes from keyboard > cable > trackpad > IPD Cable > MLB.   ==='''Power on Pads'''=== Can be shorted to power on a computer - location varies per model.   ==='''Key Points'''=== *MBA models have built in lithium-ion polymer batteries *Do not include sleep LEDs *While MacBook Air models have similar external ports, I/O speed will vary. *Do not over-tighten the screws that hold in the battery *Have fragile cables/connectors *Batteries must be covered and disconnected from LB whenever the bottom case is removed. *Will wobble on flat surfaces if bottom case screws are not properly installed. *Some models also require Trackpad Keyboard Mapper diag ran after repair. *2018 model has replaceable battery and trackpad. ==Servicing MacBook== 12” has dual microphones, headphone jack and one USB-C port Review the following Apple Support articles for more information on MacBook (Retina, 12-inch, 2017) - technical specifications and USB-C ports. *[https://support.apple.com/kb/SP757 MacBook (Retina, 12-inch, 2017) - Technical Specifications] *[https://support.apple.com/HT204360 Using USB-C and Thunderbolt 3 (USB-C) ports and adapters on your Mac notebook] Do not have fans Components are in the bottom case as well as the top case - be careful when opening!! If a new battery is needed which includes replacing entire bottom case Has Butterfly grounding clip on bottom screw of logic board Top case contains keyboard and trackpad - per Apple, non-replaceable. TCON board is attached to display Audio board ports are color matched to case After removing screws in the bottom case, insert the flat end of a black stick between the top and bottom case, starting at rear of the computer. Do not push stick in too far due to battery.  With bottom case loosened and not removed, use 2 hands to turn over the computer so that the Apple logo is facing up. Do not raise the top case too high before battery power is turned off or cables are disconnected. Press and hold battery disconnect button until the LED light goes dark (about 5-10 sec).  Confirm the LED light is off. If not lit from beginning, press battery disconnect button and hold 5-10 secs.  Repeat two more times to ensure power is disconnected. (Check before pressing button that no power source is plugged in.) Turn so that Apple logo is facing down and use black stick to disconnect trackpad IPD connector from the trackpad.  Turn back over and proceed to open. Do not set the top case on the speaker/antenna modules. Speaker/antenna modules must be replaced as a pair. Replace Thermal interface pads with logic board.  (1. Remove existing thermal interface pads. 2. Wrap an IPA wipe around the pointed end of black stick and clean off excess adhesive.  3. Dry and apply new thermal interface pads. Never get alcohol on the gold Battery Management Unit connectors or the graphite surface in the LB area.  Do not scratch the graphite surface - doing so means that the battery must be replaced. Use a USB-C to USB-A and 5w power adapter to apply low voltage power before powering on after opening and reassembly.  It can take up to 10 secs to hear the power connect sound. If battery charge remaining is less than 6%, it can take up to 10-15 mins to hear the power connect sound after charging.   Once it has been verified that the unit turns on with low power, disconnect 5w adapter and apply power with the 29w adapter to charge. Trackpad Calibration Check is to be run after every repair or whenever the computer has been reassembled.  Also recommended to run the Trackpad Response Test after a top case with keyboard has been replaced or if user is having issues related to trackpad. After installing a new top case, the Microphone Equalization Reset in AST 2 must be run as well as Trackpad Calibration Check. ==='''Key Points'''=== *Have built in lithium-ion polymer batteries *Relies on a single USB-C port *Have internal button on LB to shut off power from battery *Include LCIs *Service stand is required to safely service with damage *Keep screws organized - different colors *2015 model requires the use of low voltage 5w power adapter to power on after assembly *Trackpad Calibration check required each time unit is opened. ==='''Liquid Contact Indicators'''=== LCIs Only visible when bottom case and most of the modules have been removed in MacBook.  Small white dots that turn red when they have come in contact with liquid.   ==='''Accidental Damage'''=== Examples *Liquid spills/corrosion or residue *Cracks - displays, enclosure surfaces *Punctures or dents affecting functionality/usability *Pressure or twisting damage to display/case *Damage to I/O or MagSafe ports *Signs of forced entry or removal ==Servicing MacBook Pro 13”== Early 2015 - Trackpad Calibration Check after EVERY repair or whenever the computer has been reassembled. BMU interlock screw is a shoulder screw with gold-plated washer- helps complete the signal and enables power to flow from battery to the logic board.  Battery is built in and connected to the logic board by the BMU - must be removed before performing service procedures. (Late 2012 and early 2013 models) Wireless card has thermal pad attached to underside - make sure remains with card when removing - can be ordered as a part. Interposer is in L2012/E2013 models only - Only parts that require removal are logic board assembly (with MagSafe, heat sink, fan ducts, and fans attached), logic board, MagSafe, audio board, trackpad and top case. Speakers are paired and offered as a kit.  Must be replaced together. L2012/E2013 models - if trackpad cable needs to be replaced, must replace entire trackpad. 2016+ do not chime when powered on or restarted Auto Boot - Two features - Boot on Lid Open and Boot on AC Attach.  Must be disabled before servicing. Touch Bar - display integrated into the top of the keyboard that changes automatically depending on the app used.  Right side has Touch ID sensor.   2016/2017 have BMU Calibration of Force Touch on 2016+ models must be verified after every repair. Do not tilt I/O flex cable past 90 degrees in 2016/2017 models Touch ID is paired to logic board and must both be replaced together. 2016+ LB tilts at special angle when removing Each time the battery is disconnected from LB, the computer needs to be connected to power adapter to turn on again.   ==='''Key Points'''=== *Have built in lithium-ion polymer batteries *Batteries can only be services but AASP *Top cases include many parts such as battery, trackpad, keyboard *Some models have interposer board and BMU Interlock Screws. *2016+ does not chime *2016+ includes Auto Boot *Batteries must be covered and disconnected whenever bottom case is removed *Review service guide carefully *Will wobble on flat surfaces if the bottom case screws are not properly installed. *Some models require Trackpad Calibration Check after reassembling *2016+ require Auto Boot to be disabled before repair and re-enabled after repair. ==Servicing 15” MacBook Pro== M2015 requires Trackpad Calibration Check All MBPr 15” models have 2D bar codes - techs must have updated bar code scanners Wireless card comes with gasket attached to underside.  Make sure remains with card, is available as a service part. I/O cable guide- plastic guide attached to I/O board - cables should be routed back into the guide after reinstalling the board.  Replacement boards do not come with cable guide so it must be transferred from old board. Is available as a separate service part. Speakers are paired and must be replaced together. L2013 ONLY - bottom case screws should should be replaced each time.  Old ones should be discarded. 2016+ do not have chime 2016+ has Auto Boot - disable before services and re-enable when service completed. 2016+ does have BMU.   2016+ - Calibration of Force Touch must be verified after every repair Vent antenna assembly houses 3 wireless antennas and ground clip 2016+ has special angle to install to help antennas underneath. Each time battery is disconnected from LB, computer needs to be connected to the power adapter to power on again.   ==='''Key Points'''=== *Lithium-ion polymer batteries *Batteries can only be serviced by AASP *Mid2012-2015 top case includes many parts such as battery, trackpad, keyboard *2016+ does not chime *2016+ has Auto Boot *Batteries must be covered and disconnected from LB whenever bottom case is removed *Wobble on flat surfaces if the bottom case screws are not properly installed *Some models require Trackpad Calibration Check after reassembly *2016+ Auto Boot must be disabled before serve and re-enabled after service. [[:Category:Certification Training|Category:Certification Training]] <br /> sv3vwnh07jrcix875fa7iagpyiaz0m9 ACPI power states 0 754 1603 1602 2020-08-31T18:43:03Z Piernov 10 Category:Mac 1603 wikitext text/x-wiki {| class="wikitable" |+ !ACPI state !Intel state !Apple state !Description !Apple enable signal !Power well !Since platform |- | rowspan="2" |G3 | rowspan="2" |G3 |G3C | rowspan="2" |Mechanical off |Always on with coin cell battery, main battery or AC adapter |*RTC | |- |G3H |Always on with main battery or AC adapter |*_G3H | |- |S5 |S5 |S5 |Soft off |SMC_PM_G2_EN, not asserted when off on battery only |*_S5 | |- | |DeepSx |SUS |Low power sleep state |PM_SLP_SUS_L |*_SUS |6-series chipset (Sandy Bridge) |- |S4 |S4 |S4 |Hibernation (Suspend to disk) |PM_SLP_S5_L |*_S4 | |- |S3 |S3 |S3 |Standby (Suspend to RAM) |PM_SLP_S4_L |*_S3 | |- |S0 |S0 |S0 |On |PM_SLP_S3_L |*_S0 | |- | |S0i3 |S0I3 |Processing instructions |PM_SLP_S0_L |CPU VCore |100-series chipset (Skylake) |} https://en.wikipedia.org/wiki/Advanced_Configuration_and_Power_Interface#Power_states [[Category:Mac]] nzjxq5cdbsfwf0q5nj9j6hu0s5cwmtp ALL SYS PWRGD 0 206 607 606 2020-02-02T16:49:10Z Piernov 10 2011-2015 607 wikitext text/x-wiki {{DISPLAYTITLE:ALL_SYS_PWRGD}} In Apple schematics for at least 2011 to 2015 boards, the "ISL Version" of "S0 Rail PGOOD Circuitry" is usually no-stuff (everything with BOM option S0PGOOD_ISL should be absent from a production board). Instead, the "BJT Version" is used, as well as the bunch of resistors to the right of "ISL Version" (without BOM option S0PGOOD_ISL). For example on 820-3332 (pictured here), ALL_SYS_PWRGD is pulled up by PP3V3_S0_PWRCTL (which is PP3V3_S0), and Q7950 can pull down ALL_SYS_PWRGD if one of its input signal is missing. Any of the other PGOOD signal going through R7963 to R7968 can also pull it down. As for Q7950, all of the bases of the BJT (left part of Q7950) must be 0.6V-0.7V in order to pull low the gate of the MOSFET (right part of Q7950) so that it doesn't pull ALL_SYS_PWRGD to ground. [[File:ALL SYS PWRGD on 820-3332.png|thumb|ALL_SYS_PWRGD on 820-3332]] [[Category:Mac]] nidz6btp14lrof2ol2681hp2oybabw6 ASD List 0 45 6298 5498 2021-12-10T14:13:39Z Chrisb 1 Removed retina from air 6298 wikitext text/x-wiki ASD 3S108<br><br> iMac (Early 2006 17-inch)<br> iMac (Early 2006 20-inch)<br> MacBook Pro (17-inch)<br> Mac mini (Early 2006)<br> MacBook (13-inch)<br> iMac (Mid 2006 17-inch)<br> iMac (17-inch Late 2006)<br> iMac (17-inch Late 2006 CD)<br> iMac (20-inch Late 2006) iMac (24-inch)<br><br> ASD 3S116<br><br> MacBook (13-inch Mid 2007)<br> MacBook Pro (15-inch Core 2 Duo)<br> MacBook Pro (17-inch Core 2 Duo)<br> MacBook (Late 2006)<br> MacBook Pro (15-inch 2.4/2.2GHz)<br> MacBook Pro (17-inch 2.4GHz)<br> iMac (24-inch Mid 2007)<br> iMac (20-inch Mid 2007)<br> Mac mini (Mid 2007)<br><br> ASD 3S123<br><br> iMac (20-inch Early 2008)<br> iMac (24-inch Early 2008)<br> MacBook (13-inch Early 2008)<br> MacBook Pro (15-inch Early 2008)<br> MacBook Pro (17-inch Early 2008)<br> Mac Pro (Early 2008)<br> MacBook (13-inch Late 2007)<br><br> ASD 3S132<br><br> MacBook Air (Late 2008)<br> MacBook (13-inch, Aluminum, Late 2008)<br> MacBook Pro (15-inch, Late 2008)<br> MacBook (13-inch, Early 2009)<br> MacBook Pro (17-inch, Early 2009)<br> iMac (20-inch, Early 2009)<br> iMac (24-inch, Early 2009)<br> Mac Mini (Early 2009)<br> Mac Pro (Early 2009)<br> iMac (20-inch, Mid 2009)<br> MacBook Air (Mid 2009)<br> MacBook (13-inch, Mid 2009)<br> MacBook Pro (13-inch, Mid 2009)<br> MacBook Pro (17-inch, Mid 2009)<br> MacBook Pro (15-inch, Mid 2009)<br> MacBook Pro (15-inch, 2.5.3GHz, Mid 2009)<br><br> ASD 3S138<br><br> MacBook (13-inch, Mid 2010)<br> MacBook Pro (13-inch, Mid 2010)<br> MacBook Pro (17-inch, Mid 2010)<br> MacBook Pro (15-inch, Mid 2010)<br> MacBook (13-inch, Late 2009)<br> iMac (21.5-inch, Late 2009)<br> iMac (27-inch, Quad Core, Late 2009)<br> Mac mini (Late 2009)<br><br> ASD 3S139<br><br> Mac mini (Mid 2010)<br><br> ASD 3S140<br><br> iMac (21.5-inch, Mid 2010)<br> iMac (27-inch, Mid 2010)<br><br> ASD 3S142<br><br> MacBook Air (13-inch, Late 2010)<br> MacBook Air (11-inch, Late 2010)<br><br> ASD 3S143<br><br> Mac Pro (Mid 2010)<br><br> ASD 3S144<br><br> MacBook Pro (13-inch, Early 2011)<br> MacBook Pro (15-inch, Early 2011)<br> MacBook Pro (17-inch, Early 2011)<br><br> ASD 3S145<br><br> iMac (27-inch, Mid 2011)<br> iMac (21.5-inch, Mid 2011)<br><br> ASD 3S146<br><br> MacBook Air (13-inch, Mid 2011)<br> MacBook Air (11-inch, Mid 2011)<br> Mac mini (Mid 2011)<br><br> ASD 3S147<br><br> iMac (21.5-inch, Late 2011)<br><br> ASD 3S148<br><br> MacBook Pro (13-inch, Late 2011)<br> MacBook Pro (15-inch, Late 2011)<br> acBook Pro (17-inch, Late 2011)<br><br> ASD 3S150<br><br> MacBook Pro (13-inch, Mid 2012)<br> MacBook Pro (15-inch, Mid 2012)<br> MacBook Pro (Retina, Mid 2012)<br> MacBook Air (11-inch, Mid 2012)<br> MacBook Air (13-inch, Mid 2012)<br><br> ASD 3S152<br><br> iMac (27-inch, Late 2012)<br> iMac (21.5-inch, Late 2012)<br> Mac mini (Late 2012)<br> Mac mini Server (Late 2012)<br> MacBook Pro (Retina, 13-inch, Late 2012)<br><br> ASD 3S155<br><br> MacBook Pro (Retina, 15-inch, Early 2013)<br> MacBook Pro (Retina, 13-inch, Mid 2012)<br> MacBook Pro (Retina, 13-inch, Early 2013)<br> iMac (21.5-inch, Early 2013)<br> MacBook Pro (13-inch, Mid 2012)<br> MacBook Pro (15-inch, Mid 2012)<br> MacBook Pro (Retina, Mid 2012)<br> MacBook Air (11-inch, Mid 2012)<br> MacBook Air (13-inch, Mid 2012)<br><br> ASD 3S156<br><br> MacBook Air (11-inch, Mid 2013)<br> MacBook Air (13-inch, Mid 2013)<br><br> ASD 3S159<br><br> Mac Pro (Late 2013)<br><br> ASD 3S162<br><br> MacBook Pro (Retina, 13-inch, Late 2013)<br> MacBook Pro (Retina, 15-inch, Late 2013)<br> MacBook Pro (Retina, 13-inch, Mid 2014)<br> MacBook Pro (Retina, 15-inch, Mid 2014)<br> ASD 3S170 <big><u>You will need to ask in channels</u></big> for this one or make it using this [http://web.archive.org/web/20200202143909/http://honestgeek.ca/2018/10/19/asd-for-2015-systems/ guide]. The BootROM headers and display backlight tests need to be disabled as they will fail every time.<br> MacBook Pro (Retina, 13-inch, Late 2015)<br> MacBook Pro (Retina, 15-inch, 2015)<br> ASD 3S171 <big><u>You will need to ask in channels</u></big> for this one or make it using this [http://web.archive.org/web/20200202143909/http://honestgeek.ca/2018/10/19/asd-for-2015-systems/ guide]. The BootROM headers and display backlight tests need to be disabled as they will fail every time. <br> MacBook Air (11-inch, 2015)<br> MacBook Air (13-inch, 2015-2017)<br> <br /> [[Category:Mac]] fccgf6ubybqq5qckaq0gop3cgbo1i3b ASD Sensor Names 0 208 614 609 2020-02-02T17:33:46Z Chrisb 1 Chrisb moved page [[AHT Sensor Names]] to [[ASD Sensor Names]] without leaving a redirect 609 wikitext text/x-wiki #REDIRECT [[SMC Sensor Codes]] 5ut2mu8gm3n1iv1pfzcrlwcw7bhsngn A Software Update Is Required To Connect To iPhone Loop 0 2203 6667 6666 2022-11-05T16:41:58Z Chrisb 1 6667 wikitext text/x-wiki WIP Install Xcode <br /> 2qyaerxhvvzh84gqkp1u29pva0epgvc Air Soldering Tips 0 1916 5641 2021-03-03T04:15:10Z Chrisb 1 Chrisb moved page [[Air Soldering Tips]] to [[Hot Air Soldering Tips]]: Added hot for better search ability. 5641 wikitext text/x-wiki #REDIRECT [[Hot Air Soldering Tips]] dybr423i2dro4c6uuwvxofxr48frx58 Amtech 0 1688 5030 5029 2020-10-17T13:55:19Z Satyricon 21 5030 wikitext text/x-wiki [[File:Real vs Fake Amtech flux package.jpg|thumb|227x227px|Top Amtech flux is a knock off. The bottom is genuine. ]] Our favourite flux. But there are so many knock offs. How to find out if you have a real one? #The real flux costs around 25USD / £20 or more. #The real flux does not have Chinses writing and hologram on it #If you shine UV light on the rea one, it will react to it, and shine bright. #The real Amtech flux flows more creamy, where as the fake one is more chunky. [[File:Top Amtech flux is a knock off. The bottom is genuine..jpg|thumb|226x226px|Top Amtech flux is a knock off. The bottom is genuine.]] <br />Other article to note: https://www.eevblog.com/forum/chat/is-this-amtech-flux-i-bought-genuine/ https://www.microsoldering.com/amtech-nc-559-flux-fake-versus-real/ rckcn4c7odmcmkwsymuidzmhi6wsj8q Angle sensor circuitry 0 2239 6913 6912 2023-09-14T12:50:44Z Alex6337 28 Modified titles sizes 6913 wikitext text/x-wiki This page describes layers and connections to '''repair a Lid Angle Sensor on A2442 (14" MBP ) & A2681 (M2 MBA)''' Special Thanks to https://iboffrcc.com/ for the pictures ! == This is the A2442 (14" MBP) repair picture for the Lid Angle sensor == [[File:A2442LidAngle.jpg|alt=Lid Angle sensor 14" MBP|frameless|600x600px]] == This is the A2681 (M2 MacBook Air) repair picture for the Lid Angle sensor == [[File:LidAngleSensorMBAM2.jpg|frameless|600x600px]] == Examples of repairs == [[File:LidAnglesensorepair.jpg|frameless|600x600px]] 5h3mj84i5c1ifv2g4lfyvb4mhhmzsy4 Anti-Glare Screen Glaze Removal 0 1919 5899 5898 2021-06-04T20:27:53Z Crumblenaut 317 /* Step-by-Step Deglaze Instructions! */ Gallery edits 5899 wikitext text/x-wiki ===Issue & Scope=== All MacBook Pros released from 2009 to current with glass layers over their display panels (sold as "glossy" as opposed to the true matte screens which have exposed display panel surfaces without a glass cover) were coated with an anti-reflective glaze that will break down over time through physical abrasion and UV exposure. This degradation is commonly referred to as "Staingate" and looks reeeeal bad. Apple has a repair and replacement program in place for models sold in the past four years, but any older MacBooks will not be covered. [https://www.macrumors.com/2019/12/20/macbook-pro-anti-reflective-repair-program/ Source]. <br /> ===Solution=== You will find reports online that folks were able to remove degraded anti-glare coatings from screens using common cleaners like isopropyl alcohol and 409 Multi-Surface cleaner as well as common household products like toothpaste and mouthwash. Those are all solutions for noobs. If you want to REALLY deglaze the screen - completely, perfectly, and in a way that takes a reasonable amount of time - your best bet is a product called [https://www.amazon.com/Armour-15-0250-Etch-24-oz/dp/B00OQFQE32/ Armour Etch]. '''BEFORE ORDERING ARMOUR ETCH OR ATTEMPTING TO DEGLAZE ANYTHING, PLEASE READ THIS ENTIRE ARTICLE AND TAKE ALL PROPER PRECAUTIONS.''' '''If you do not you may really damage the screen you're working on as well as yourself and the other living things and inanimate objects around you.''' <br /> <br /> ===WARNING=== Armour Etch, from a chemical and biological perspective, is absolutely fucking terrifying. The warning - ''and this is just the text of the partial warning printed on the FRONT of the bottle'' - reads as follows: DANGER: MAY BE FATAL OR CAUSE PERMANENT DAMAGE TO SKIN, EYES, OR RESPIRATORY TRACT. VAPOR HARMFUL. CAUSES SEVERE BURNS ''WHICH MAY NOT BE IMMEDIATELY PAINFUL OR VISIBLE.'' (See additional labeling on back panel.) This goes without saying, but if you choose to follow these suggestions, you will be doing so AT YOUR OWN RISK and will be personally responsible for ensuring your own safety and the safety of those around you. You should not purchase or use this substance without first reviewing its [https://media.jacksonsart.com/pdf/armour_etch_sds.pdf material safety data sheet]. When ordering this item, you should also order some 2.5% calcium gluconate gel in case of accidental exposure such as [https://smile.amazon.com/gp/product/B008YGHVOK Calgonate]. This is a single-use tube, so it would be wise to grab a few of them and hopefully never have to use even one. You'll make up the expense for all of these supplies with a single service. <blockquote>''THIS IS NOT MEDICAL ADVICE AND I AM NOT A MEDICAL PROFESSIONAL - YOUR PREPARATION PRIOR TO HANDLING HAZARDOUS MATERIALS IS YOUR OWN RESPONSIBILITY. This is community-sourced information and is also in no way endorsed by any of the founders or maintainers of logi.wiki.''</blockquote>All of that said, this is an arts and crafts supply and so whether or not it's educated, wise, or personally responsible, folks do use it in settings like [https://www.youtube.com/watch?v=Si96k-qfR54 this]. But seriously, protect yourself. ALSO it's important to note that Armour Etch WILL cause visible oxidation damage the aluminum finish of any surfaces it comes into contact with, so ensuring that you've protected ALL aluminum surfaces is critical. As with any new-to-you or experimental process, you should definitely familiarize yourself with this process using DONOR EQUIPMENT. Screen assemblies with damaged panels but intact glass with a degraded glaze would be ideal.<br /> ===Required Supplies=== For the process outlined below, you will need the following supplies: *Armour Etch *Paper towels - a lot of them *Cotton swabs *Wide blue painter's tape *99% isopropyl alcohol *70% isopropyl alcohol *Windex or similar glass cleaner *A medium-to-large, synthetic soft-bristled paintbrush You will also need, at minimum, the following safety equipment: *Nitrile gloves - 6mil or greater thickness strongly recommended as you do NOT want them to rip - plus some spares *Safety goggles *Long sleeves, pants, closed toe-shoes, etc. *A fan or an engaged and reliable HVAC system to ensure that fumes are exhausted properly *A coworker present to provide emergency assistance if you do have any accidental exposure. The bottom line here is that Armour Etch is a VERY dangerous substance and you need to be sure you have NO exposed skin when working with Armour Etch and that you're doing so in a place with substantial airflow. <br /> <br /> ===Step-by-Step Deglaze Instructions!=== #First, get your personal protective equipment game in order. #*ALWAYS WEAR GLOVES, SAFETY GOGGLES, LONG SLEEVES, PANTS, AND CLOSED SHOES. #*ALWAYS WORK WITH ARMOUR ETCH IN A WELL-VENTILATED LOCATION WITH CONSISTENT AIRFLOW. #*Armour Etch is extremely hazardous and WILL injure you if you do not protect yourself and those around you properly. #Second, get your work space in order. #*Be sure the area where you'll be working is free of clutter and that it's not holding anything that isn't going to be actively used for the deglazing process #*The idea is to avoid accidental cross-contamination and surprise exposure after the fact. #*In my experience, Armour Etch tends to sneak onto your gloves and then get deposited on anything you might have to touch to move out of the way. #Remove the screen assembly from the MacBook. #*This isn't TECHNICALLY necessary, but it makes the task as well as the cleanup MUCH easier, and there's just SO MUCH more that could go wrong if you do this with the screen attached. #Clean the screen's surface thoroughly first, finishing it off with 99% isopropyl alcohol. #Cover ALL exposed aluminum with residue-free tape like blue painter's tape. #*This includes not only the aluminum bezel but the back of the screen as well, so having thicker tape for that is convenient. #*Also cover the black plastic antenna bar, doing your best to make a seal between the rubber surround and the antenna bar so that NO Armour Etch or other solvent is able to get into the area with the LCD panel circuitry and the antenna bar. #*Armour Etch has not seemed - in my experience - to damage the rubber bezel or plastic, but it's better safe than sorry and keeping it covered means fewer things to clean. #Apply the scary AF Armour Etch with your paintbrush, in a swirling motions, covering the entirety of the exposed glass surface. #Continue to occasionally swirl the Armour Etch in place with the paintbrush over the course of approximately five minutes. #*If the screen's glaze is almost entirely disintegrated you may get away with keep it on for less time. #*If the screen has a few deglazed spots but otherwise it's mostly intact, you may need to keep the Armour Etch in place for more like 7-10 minutes. #Remove ALL of the Armour Etch you are capable of removing with a series of dry paper towel, using the paper towels and the Armour Etch to abrase the remaining glaze off of the screen glass with the slowly-drying, semi-abrasive Armor Etch. #*You do not need to apply much pressure at all here - just the friction of the paper towel on the Armour Etch on the glass should do the trick. Remember that you're working on a fragile piece of glass above a fragile LCD panel. #*DO NOT FREAK OUT if you see swirls develop in the glass. It can look like you may have etched the glass permanently, but unless you left the stuff on for ten or more minutes you have not. #Once ALL of the Armour Etch is removed from the glass, use new paper towels to remove any of the stuff that got on any blue taped areas as well. #Clean the display glass and all blue-taped surfaces with ~70% isopropyl alcohol, clean your gloves with 70% isopropyl alcohol as well to be sure to avoid cross-contamination, and set the display assembly aside on a totally clean surface. #*After the 70% cleaning, the streaks and swirls left over from the Armour Etch should vanish pretty effectively. #Clean your working area and gloves again to avoid cross-contamination. #Remove all blue tape from your screen assembly and clean your gloves... ''again''. #Use paper towels and cotton swabs to clean around the rubber bezel, being sure to get EVERYTHING up - do so with the paper towels and cotton swaps dry at first, and then get it again with swabs wetted with 70% isopropyl alcohol. #Once the screen is totally clean and looks ''almost'' perfect - there should at least be no remaining Armour Etch anywhere on it at this point - clean the glass with Windex or an equivalent streak-free glass cleaner. #Congratulations! You've deglazed a screen! Now install it back in the system and admire your excellent work! <gallery mode="packed-hover"> File:Prepared Workspace.jpg|alt=A Prepared Workspace|A Prepared Workspace File:Deglaze 2 - Strapped for Protection.jpg|alt=Properly Protected Edges and Backplate|Properly Protected Edges and Backplate File:Deglaze 3 - Screen Before.jpg|alt=Screen Before Cleaning|Screen Before Cleaning File:Deglaze 4 - Screen Alcohol.jpg|alt=Screen Cleaning with 99% Isopropyl Alcohol|Screen Cleaning with 99% Isopropyl Alcohol File:Deglaze 5 - Prepared Screen.jpg|alt=Screen Properly Prepared for Armour Etch|Screen Properly Prepared for Armour Etch File:Deglaze 6 - Armour Etch Application.jpg|alt=Applying Armour Etch|Applying Armour Etch File:Deglaze 7 - Waiting with Armour Etch.jpg|alt=Armour Etch Doing Its Work|Armour Etch Doing Its Work File:Deglaze 8 - Armour Etch Congealing.jpg|alt=Armour Etch Congealing / Partially Removed|Armour Etch Congealing / Partially Removed File:Deglaze 9 - Armour Etch Wiped 1.jpg|alt=Armour Etch After Being Wiped with a Paper Towel|Armour Etch After Being Wiped with a Paper Towel File:Deglaze 10 - Armour Etch Wiped 2.jpg|alt=Screen After Armour Etch and Before 70% Isopropyl Alcohol (Looks real bad, right?)|Screen After Armour Etch and Before 70% Isopropyl Alcohol (Looks real bad, right?) File:Deglaze 11 - Isopropyl 70 Cleaning.jpg|alt=Removing Armour Etch with 70% Isopropyl Alcohol (Phew! Much better.)|Removing Armour Etch with 70% Isopropyl Alcohol (Phew! Much better.) File:Deglaze 12 - Edges 1.jpg|alt=Armour Etch Trapped in the Edges|Armour Etch Trapped in the Edges File:Deglaze 13 - Edges 2.jpg|alt=Armour Etch Under the Antenna Bar Cover|Armour Etch Under the Antenna Bar Cover File:Deglaze 14 - Screen Finished.jpg|alt=A Fully Deglazed Screen! (Ready to be reinstalled and given a final clean with Windex)|A Fully Deglazed Screen! (Ready to be reinstalled and given a final clean with Windex) </gallery><br /> ==Non-Dangerous method using Diamond paste and universal cleaner== you need: #Mr Proper cleaning wipes or similar. W5 works the same. #Diamond paste. W1 or W1.5 for bad stains, W0.5 for finish. Alays test on broken screen before using #Wide plastic spudger or card #Hard cotton wipes(simply to contain diamond paste) Thats pretty much it. First go with W1.5 all over the screen to damage the glare. Then go with wipes, use spudger to clean corners. Diamond paste will help to gemove harder areas. Do not use anything harder than W2, this will leave scratches on glass. Usually takes 15-30 min for 15 inch screen. <br /> gfg9l0nwfou7pfwlc21odsidngsmwdz Apple Flat Rate Repair Pricing 0 1928 5684 2021-03-19T14:10:52Z Chrisb 1 Chrisb moved page [[Apple Flat Rate Repair Pricing]] to [[Apple MacBook Flat Rate Repair Pricing]] 5684 wikitext text/x-wiki #REDIRECT [[Apple MacBook Flat Rate Repair Pricing]] oi2agoprqqnbzweqidzpkba6b75l0de Apple Hardware Test (AHT) Codes 0 212 624 2020-02-02T18:58:06Z Inwerp 16 Inwerp moved page [[Apple Hardware Test (AHT) Codes]] to [[Apple Hardware Test (AHT) and Apple Diagnostics (AD) Codes]]: One page for both 624 wikitext text/x-wiki #REDIRECT [[Apple Hardware Test (AHT) and Apple Diagnostics (AD) Codes]] llejwekovjvp60kq0qgmep5ukqeawli Apple Hardware Test (AHT) and Apple Diagnostics (AD) Codes 0 210 5667 623 2021-03-12T05:45:04Z Crumblenaut 317 Noted my PFM006 results on 820-01958, added communications line note for SMC errors. 5667 wikitext text/x-wiki Use [[SMC Sensor Codes]] to interpret '''[[ASD List|Apple Software Diagnostics(ASD)]]''' output. '''ASD''' is available only as a bootable DMG images which should be burned on '''Apple Diagnostics(AD)''' replaces built-in '''Apple Hardware Test(AHT)''' for devices manufactured after 2013. Some older devices will also load AD instead of AHT if you update the OS or use Option+D to download it online. Many older devices lose AHT after upgrading your OS, since it wipes it from the hard drive and its not available online. AHT Codes are more complex and give more information on the issue. The first part is a device name: *'''4ETH''': Ethernet controller *'''4IRP''': Main Logic board *'''4MLB:''' Logic board controller *'''4PRC''': Processor *'''4HDD''': Hard disk *'''4MHD''': External disk *'''4YDC''': Video card *'''4SNS''': System sensor *'''4MOT''': Fan motor *'''4MEM''': Memory module *'''4AIR''': AirPort wireless card Most of them pretty straight-forward except '''4SNS''' which will be follower by either '''V''' (Voltage or Current sensor) or '''T''' for thermal sensor. *'''A''': Ambient Air Sensor *'''B''': Battery *'''C''': Central Processors (CPU) *'''D''': DC (Direct Current) *'''e''': PCI-Express Slot *'''F''': FireWire Port *'''G''': Graphics Processor (GPU) *'''H''': Hard Disk *'''h''': Heat Sink (or Heat Pipe) *'''L''': LCD display *'''M''': Memory (or Memory Riser Boards) *'''m''': Miscellaneous (Peripherals such as a Battery Charger) *'''N''': North Bridge (Logic Board Controller) *'''O''': Optical Drives *'''P''': Power Bus *'''p''': Power Supply *'''s''': Trackpad *'''W''': Airport Wi-Fi Card For example: '''4SNS'''/1/40000000: '''TA'''00 means Ambient thermal sensor. If your device is newer than 2013 or you booting it online from some older devices, there's '''AD''' which is much less reliable and kind of helps you to book an appointment in Genius Bar instead of showing the real issue. Use Apple MRI to gather more information. [[File:Apple_Diagnostics.png|alt=|430x430px]] {| class="wikitable" |+ AD Codes !Code !Explanation !Actual Board problem |- |ADP000 |No issues found | |- |CNW001…06 |Wifi not detected | |- |NDC001…6 |Camera not detected | |- |NDD001 |USB Overcurrent | |- |NDK001 |Keyboard problem | |- |NDL001 |Bluetooth | |- |NDR001 |Trackpad not detected | |- |NDR003 | | |- |NDR004 | | |- |NDT001 | rowspan="6" |Thunderbolt issue | |- |NDT002 | |- |NDT003 | |- |NDT004 | |- |NDT005 | |- |NDT006 | |- |NNN001 |A serial number was not detected. |Don't forget to correct SN/CRC/CleanME |- |PFM001 | rowspan="7" |There may be an issue with the System Management Controller (SMC). Almost always means that there is a short or a missing communications line (data and/or clock) between a component and the SMC. Often means thermal or current sensor failure. Most common problem after water damage. | |- |PFM002 | |- |PFM003 | |- |PFM004 | |- |PFM005 | |- |PFM006 |Trackpad on 820-00165 Battery on 820-01958 |- |PFM007 | |- |PFR001 |There may be an issue with the computer's firmware. | |- |PPF001 | rowspan="3" |There may be an issue with the fan. | |- |PPF003 | |- |PPF004 | |- |PPM001 |There may be an issue with a memory module. | |- |PPM002 | rowspan="14" |There may be an issue with the onboard memory. | |- |PPM003 | |- |PPM004 | |- |PPM005 | |- |PPM006 | |- |PPM007 | |- |PPM008 | |- |PPM009 | |- |PPM010 | |- |PPM011 | |- |PPM012 | |- |PPM013 | |- |PPM014 | |- |PPM015 | |- |PPP001 | rowspan="3" |There may be an issue with the power adapter. | |- |PPP002 | |- |PPP003 | |- |PPR001 |There may be an issue with the processor. | |- |PPT001 |The battery was not detected. | |- |PPT002 | rowspan="2" |The battery will need to be replaced soon. It is functioning normally, but holds less charge than it did when it was new. | |- |PPT003 | |- |PPT004 |The battery requires service. The battery is not functioning normally, though you may not notice a change in its behavior or the amount of charge it holds. You can continue to use your battery before it’s checked without harming your computer. | |- |PPT005 |The battery is not installed properly. Shut down and discontinue use. The computer requires service. |Check battery communication cable on 2015 and later models. |- |PPT006 |The battery requires service. The battery is not functioning normally, though you may not notice a change in its behavior or the amount of charge it holds. You can continue to use your battery before it’s checked without harming your computer. | |- |PPT007 |The battery needs to be replaced. The battery is functioning normally but holds significantly less charge than it did when it was new. You can continue to use the battery until you replace it, without harming your computer. | |- |VDC001 | rowspan="6" |There may be an issue with the SD card reader. | |- |VDC003 | |- |VDC004 | |- |VDC005 | |- |VDC006 | |- |VDC007 | |- |VDH002 | rowspan="2" |There may be an issue with a storage device. | |- |VDH004 | |- |VDH005 |Unable to start OS X Recovery. | |- |VFD001 | rowspan="6" |There may be an issue with the display. | |- |VFD002 | |- |VFD003 | |- |VFD004 | |- |VFD005 | |- |VFD007 | |- |VFD006 |There may be an issue with the graphics processor. | |- |VFF001 |There may be an issue with the audio hardware. | |} ru08ry2a7jiiy052duz8zjj1icsr62g Apple MacBook Flat Rate Repair Pricing 0 727 6580 5683 2022-09-06T02:49:49Z IT-Solve 181 spelling 6580 wikitext text/x-wiki '''These are guidelines and may not be 100% accurate any longer, but a general idea for expectations and comparison with SC vs. Apple in order to discuss the best option with the customer.''' Use this manual as a guide while consulting customers on repair options. Example 1:  Edward Scissorhands brings in his 2017 15" MacBook Pro with a broken display.  Edward explains that he dropped his MacBook Pro and would like pricing on replacing the display.  You price replacement displays and find that an approximate repair quote for this is around $799 if repaired by Shiny Computers.  You check Apple tier pricing and find it is slightly cheaper through Apple.  You can now advise Edward that it would be best for him to go directly to Apple for this repair as not only will it be slightly cheaper, he is going straight through the manufacturer.   Example 2:  Aveline de Grandpre brings in her 2015 13" MacBook Pro Retina.  She is experiencing start up issues and after further diagnosis you determine that there is a bad trackpad cable and it does not appear to be caused by Aveline in any way.  By looking at the tier pricing, you see that Aveline will be charged $280 through Apple (Flat Rate 1) for the repair.  However, we can repair this issue for only $99.  You can now confidently advise Aveline that it is more beneficial for her to have Shiny Computers complete the repair.   Apple Flat Rate & Accidental Damage Repair Pricing (Depot) {| class="wikitable" |'''Flat Rate 1''' |'''Flat Rate 2''' |'''Tier 1''' |'''Tier 2''' |'''Tier 3''' |'''Tier 4''' |- | *Power adapter port *Right/Left I/O ports *Flex cables *Speakers *Fans *Microphone *Wireless cards *Trackpad *Removable RAM *HDD *Optical drive *Bottom case (with or without embedded battery) *Top Case (with or without embedded battery) *Top case/keyboard/bottom case with embedded battery *Touch ID | *SSD *MLB *LCD (Also includes combination of if there is also Flat Rate 1 repair needed in addition) | *RIO/LIO/MPM *Enclosure *Bottom case *Flex cables *Speaker *Fan *Microphone *Wireless Card *Removable RAM *HDD *Optical drive *Touch ID (Not caused by liquid) |Only 1 of the following: *LCD *Top case/keyboard (Not caused by liquid) |More than 1 of the following: *LCD *Top case/keyboard (Not caused by liquid) |Any of the below in addition to any lower tier parts: *Logic board *SSD 128GB or higher (Typically any liquid indicators that are red will fall under this tier regardless of the part) |} Flat Rate = Functional failure not customer-induced but out of warranty. Tier 1 - 4 = Customer-induced damages Pricing per model {| class="wikitable" | |Flat Rate 1 |Flate Rate 2 |Tier 1 |Tier 2 |Tier 3 |Tier 4 |- |'''MBA - 2017 or earlier''' '''13” MBP Retina''' |$280 |$475 |$280 |$475 |$635 |$755 |- |'''12” Macbook Retina''' |$280 |$575 |$280 |$475 |$735 |$975 |- |'''13” Macbook''' '''13” MBP with OD''' |$280 |$475 |$280 |$360 |$520 |$755 |- |'''13” MBP with TB''' |$280 |$475 |$310 |$475 |$825 |$1240 |- |'''15” MBP with OD''' '''17” MBP''' |$310 |$575 |$310 |$590 |$760 |$1240 |- |'''15” MBP Retina''' |$310 |$575 |$310 |$680 |$1030 |$1475 |- |'''15/16” MBP with TB''' |$310 |$795 |$310 |$680 |$1030 |$1475 |} 37w7os7s5sqnn0eyyge1sfn0lxenfxf Apple Mail Manual Transfer 0 2024 6013 6009 2021-08-13T22:48:16Z Chrisb 1 Chrisb moved page [[Apple Mail manual transfer]] to [[Apple Mail Manual Transfer]] without leaving a redirect: Title Case 6009 wikitext text/x-wiki Library: .../Accounts (folder) (DO NOT FORGET THIS ONE) for Mail .../Mail (folder) .../Mail Downloads (folder) .../Containers/com.apple.mail (folder) .../Preferences/com.apple.accounts.plist (file) .../Preferences/com.apple.accountsd.plist (file) .../Preferences/com.apple.mail-shared.plist (file) .../Preferences/com.apple.MailMigratorService.plist (file) .../SyncedPreferences/com.apple.mail-com.apple.mail.vipsenders.plist (file) .../SyncedPreferences/com.apple.mail.plist (file) for Keychain .../Keychains (folder) <br /> htlcbon0slt9sqrx1js7u0qh6c6ix8i Apple Manufacturing Plant Codes 0 709 5251 1490 2020-11-23T20:09:20Z Tim 169 Added plant codes and locations 5251 wikitext text/x-wiki This is a broad overview i was able to collect of the plant codes and corresponding locations/factories Apple uses.<br> If you are able to find out more information about a specific code or have completely new ones feel free to commit a change to this list {| class="wikitable" |- !Code!!Factory |- |E |Singapore |- |F||Fremont, California, USA/Fountain, Colorado,USA (varying sources) |- |FC |Fountain, Colorado, USA |- |XA||Elk Grove/Sacramento, California, USA |- |XB |USA |- |QP |USA |- |G8 |USA |- |RN||Mexico |- |CK||Cork, Ireland |- |VM||Foxconn - Pardubice, Czech Republic |- |SG||Singapore |- |MB||Malaysia |- |PT||Korea |- |CY |Korea |- |EE||Taiwan |- |QT |Taiwan |- |UV |Taiwan |- |FK||Foxconn – Zhengzhou, China |- |F1 |Foxconn – Zhengzhou, China |- |F2 |Foxconn – Zhengzhou, China |- |W8||Shanghai, China |- |DL||Foxconn - China |- |DM |Foxconn - China |- |DN||Foxconn - Chengdu, China |- |YM||Hon Hai/Foxconn - China |- |7J |Hon Hai/Foxconn - China |- |1C||China |- |4H |China |- |WQ |China |- |WQ |China |- |F7 |China |- |C0||Tech Com, Quanta Computer Subsidiary - China |- |C3||Foxconn - Shenzhen, China |- |C7||Pegatron - Shanghai, China/Foxconn, Changhai, China (varying sources) |- |RM||Refurbished/remanufactured |- |F5K |Flextronics - USA |- |CK2 |Cork, Ireland |- |C02 |Tech Com, Quanta Computer Subsidiary - China |- |C07 |Tech Com, Quanta Computer Subsidiary - China |- |YM0 |Hon Hai/Foxconn - China |- |C17 |China |- |C1M |China |- |C2V |China |- |C2Q |China |} cvzig5vkkwbwxok8ahlwo6nuhwtfsv9 Apple Mobile Device Public Repair Pricing 0 748 5904 5903 2021-06-12T22:17:32Z DeTigerBoy 428 wrong document 5904 wikitext text/x-wiki These are the public repair prices available through Apple Support. In most cases, we are able to beat Apple's repair pricing. However, if Apple can repair the part for lower than we can offer, or in some cases we cannot at all, you will need to refer to Apple. Pricing is as of 12/23/20<br /> {| class="wikitable" |+ !Device !Front Glass !Back Glass/Other Repairs !Battery |- |'''iPhone''' | | | |- |12 Pro Max |329 |599 |69 |- |12 Pro |279 |549 |69 |- |12 |279 |449 |69 |- |12 Mini |229 |399 |69 |- |iPhone SE 2020 |129 |269 |49 |- |11 Pro Max |329 |599 |69 |- |11 Pro |279 |549 |69 |- |11 |199 |399 |69 |- |XS Max |329 |599 |69 |- |XS |279 |549 |69 |- |XR |199 |399 |69 |- |X |279 |549 |69 |- |8 Plus |169 |399 |49 |- |8 |149 |349 |49 |- |7 Plus |169 |349 |49 |- |7 |149 |319 |49 |- |6s Plus |169 |329 |49 |- |6s |149 |299 |49 |- |6 Plus |149 |329 |49 |- |6 |129 |299 |49 |- |SE |129 |269 |49 |- |5/5c/5s |129 |269 |79 |- |4s |n/a |149 |79 |- |4 |n/a |199 | |- | | | | |- |'''Watch''' | | | |- |Series 5 - GPS Alum/Nike |299 |n/a |79 |- |Series 5 - Cell Alum/Nike |349 |n/a |79 |- |Series 5 - Cell Stainless/Hermes |399 |n/a |79 |- |Series 5 - Edition Titanium |499 |n/a |79 |- |Series 5 - Edition Cermamic |800 |n/a |79 |- |Series 4 - GPS Alum |299 |n/a |79 |- |Series 4 - Cell Alum |349 |n/a |79 |- |Series 4 - Stainless, Hermes |399 |n/a |79 |- |Series 3 - GPS Alum |159 |n/a |79 |- |Series 3 - Cell Alum |229 |n/a |79 |- |Series 3 - Stainless Steel/Hermes |329 |n/a |79 |- |Series 3 - Ceramic |800 |n/a |79 |- |Series 2 - Alum |229 |n/a |79 |- |Series 2 - Stainless, Hermes |249 |n/a |79 |- |Series 2 - White Ceramic |800 |n/a |79 |- |Series 1 - 2nd Gen Alum |199 |n/a |79 |- |Sport - 1st Gen |199 |n/a |79 |- |1st Gen |249 |n/a |79 |- |Hermes - 1st Gen |249 |n/a |79 |- |Edition - 1st Gen |2800 |n/a |79 |- | | | | |- |'''iPad''' | | | |- |Pro - 12.9" 3rd Gen |649 |649 |99 |- |Pro - 11" |499 |499 |99 |- |Pro - 12.9" 1/2 Gen |599 |599 |99 |- |Pro - 10.5" |449 |449 |99 |- |Pro - 9.7" |379 |379 |99 |- |5th/6th/7th Gen |249 |249 |99 |- |4th/3rd Gen |299 |299 |99 |- |1st/2nd Gen |249 |249 |99 |- |Air 1 |249 |249 |99 |- |Air 2 |299 |299 |99 |- |Air 3 |379 |379 |99 |- |Mini 3/4/5 |299 |299 |99 |- |Mini 1/2 |199 |199 |99 |- | | | | |- |Pencil 1st/2nd Gen |n/a |n/a |29 |- |Airpods - 1st Gen | |Lost - $69/each |$49/each |- | | | | |- |'''iPod - if available, select models/gens''' | | | |- |Shuffle |n/a |39 |39 |- |nano |n/a |99 |59 |- |Classic - L2009, 160GB |n/a |299 |149 |- |Touch |129 |129 |79 |- | | | | |} 0dgvz5xb5kpi8b9ndxd5zouh4oppsf2 Apple Public Repair Pricing 0 1929 5686 2021-03-19T14:11:32Z Chrisb 1 Chrisb moved page [[Apple Public Repair Pricing]] to [[Apple Mobile Device Public Repair Pricing]] 5686 wikitext text/x-wiki #REDIRECT [[Apple Mobile Device Public Repair Pricing]] p9x4l99xnnsinsnbbg6mt8hnretuge4 Apple Quality Programs 0 1423 5519 5518 2021-01-20T17:10:42Z Alan.l 19 /* iPhone */ 5519 wikitext text/x-wiki ==MacBook== ===MacBook Pro: Distorted video or no video issues (NVIDIA GeForce 8600M GT)=== https://support.apple.com/en-us/HT203254<br> Solution: replace defective G84-602-A2 (dark underfill) GPU with fixed revision G84-603-A2 (white underfill) ===MacBook Pro (15-inch, Mid 2010): Intermittent black screen or loss of video=== http://web.archive.org/web/20141121113458/http://support.apple.com/en-us/HT203554<br> Solution: replace C9560 with aluminum polymer or MLCC capacitor ===MacBook Pro Repair Extension Program for Video Issues 15" 2011 A1286=== https://web.archive.org/web/20150220164447/https://www.apple.com/support/macbookpro-videoissues/ <br>solution 1: demux to disable the GPU using dosdude method [https://doslabelectronics.com/Demux Link] or use CMIzapper Tiresias "the GPUkiller" solution [http://www.cmizapper.com/products/tiresias-gpukiller.html Link]. <br>solution 2: replace with 820-3330 logic board. ===MacBook Pro Repair Extension Program for Video Issues 15" A1398 Mid 2012 - Early 2013=== https://web.archive.org/web/20150220164447/https://www.apple.com/support/macbookpro-videoissues/ <br>solution: Resolder U8900 with leaded solder. Triple check all joints under a microscope. ===13-inch MacBook Pro Display Backlight Service Program=== https://www.apple.com/support/13-inch-macbook-pro-display-backlight-service/ <br>solution: replace the entire screen assembly or replace/repair backlight flex cable. ==iPhone== ===iPhone 6 & 6 plus Touch Disease=== https://www.apple.com/support/iphone6plus-multitouch/ <br>solution: remove the black touch chip (Meson) using heat, run a micro jumper (M1) to the damaged pad and put a new chip on. The problem goes away once this has been done. ===iPhone 6s and iPhone 6s Plus Service Program for No Power Issues=== https://support.apple.com/iphone-6s-6s-plus-no-power-issues-program <br>solution: replace tristar. ===iPhone 8 Logic Board Replacement Program=== https://support.apple.com/iphone-8-logic-board-replacement-program <br>Problem: cpu disconnect on logic board marked H3K5. solution: reball cpu and it will work again. <br /> ==iPad== ===iPad Air (3rd generation) Service Program for Blank Screen Issue=== https://support.apple.com/ipad-air-3rd-gen-program-for-blank-screen-issue <br>solution: replace screen assembly. not logic board problem. o4ou5xx8b96275bbs1jt6lqk163pxaq Apple SSD connectors and adapters list 0 1924 7126 7121 2024-06-22T15:25:07Z Joesipaq 20 added ssd model 7126 wikitext text/x-wiki ==Replaceable SSDs== {| class="wikitable" |+ !Gen.1 6I12 Pins !Gen.2 7I17 Pins !Gen.3&4 12I16 Pins !<nowiki>Gen.5 22|34 Pins</nowiki> |- |[[File:Macbook SSD Gen1.png|frameless|318x318px]] |[[File:Macbook SSD Gen2.png|frameless]] |[[File:Macbook SSD Gen3 4.png|frameless|351x351px]] |[[File:macssdgen5.png|frameless]] |- |SATA III 6 Gb/s |SATA III 6 Gb/s |AHCI, PCI x2&x4 |PCIe x4 |- |MacBook Air 2010L/2011M 11"&13" (A1369,A1370)<br /> |MacBook Air 2012 11" & 13" (A1465, A1466) MacBook Pro 2012L 13" & 15" (A1425, A1398) iMac 2012L 2013E 21" & 27" (A1418, A1419) |MacBook Air 2013-2017 11", 13"(A1465, A1466) MacBook Pro 2013L-2015E 13", 15"(A1502, A1398) iMac 21" & 27" 2014-2017(A1418, A1419) (Fusion) '''Please note: no connector on HDD version of iMac''' |MacBook Pro 2016-2017 2TBT |- |[https://www.ebay.com/itm/181915987093 Data Recovery kit (SATA/USB Adapter)] [https://www.ebay.com/itm/233743974229 M.2 NGFF Adapter] |[https://www.ebay.com/itm/253578524651 Data Recovery kit (SATA/USB Adapter)] [https://www.ebay.com/itm/123940200871 M.2 NGFF Adapter] iMac & Macbook Pro [https://www.ebay.com/itm/184692280150 mSATA Adapter] '''A1425-Only''' [https://www.ebay.com/itm/123147457213 M.2 NGFF Adapter] '''Air-Only!''' |[https://www.ebay.com/itm/175850962311 Data Recovery kit] (USB Adapter) Cheaper Desktop [https://www.ebay.com/itm/265017009461 PCIE Card] [https://www.ebay.com/itm/355395878517 M.2 NVME Adapter] '''WARNING''': for iMac please put capton tape on back side of m.2 connector |Known working adapter: NFHK [https://www.ebay.com/itm/175850904526 M.2 NVME 2240 Adapter] |- |Any brand M.2 SATA 2232..2280 SSD B-Key |A1425 fits only m.2 2260 SSD or mSATA |m.2 NVME 2280 2013/2014 devices need Bios update for nvme support (simply install High Sierra on original drive) once. [https://www.samsung.com/semiconductor/minisite/ssd/download/tools/ Samsung Firmware update] might be necessary Fix kernel panic on wake issue: sudo pmset -a hibernatemode 0 standby 0 autopoweroff 0 Kernel panic on wake should be fixed with the firmware update of Big Sur |Known working SSD: Sabrent Rocket 2240 2240 SSDs are difficult to obtain but some use 2280 which work very well but protrude from the adapter and are taped to the side |}'''Gen.5 OEM Compatibility:''' Macbook Pro 2016 (820-00875): 656-0041, 656-0041A, 656-0042, 656-0042A, 656-0043, 656-0043A, 656-0044, 656-0044A,656-0045, 656-0045A, 656-0046A, 656-0046B, 656-0066A, 656-0069A, 656-0070A All drives from 2016 model are compatible with 2017 model. Macbook Pro 2017-Only (820-00840): 656-0067A, 656-0074A, 656-0074B, 656-0074C, 656-0074D, 656-0074E, 656-0076B MacBook Pro 2017 model SSDs that are compatible with 2016: 656-0072A Piernov: Note that the SSD_BOOT_L/SSD_PWR_EN_L circuit is different between 820-00875 (2016) and 820-00840 (2017). Only the schematics for 820-00875 is available, in this one U8640/R8645 are populated while R8641/R8642 are not. On the 820-00840 it's the opposite. [[File:A1708 2016 to 2017 SSD MOD.png|none|thumb|605x605px|to make 2017 SSD work on 2016 board, simply remove stuffed components and add NOSTUFF + R8620|alt=]] [https://beetstech.com/blog/apple-proprietary-ssd-ultimate-guide-to-specs-and-upgrades long article with more detailed information] ==Soldered SSDs== <br /> ===T2 Macs=== T2 use Monolith SSD chips, combined into sort of RAID volume. Known method of replacement - use same board as a donor and keep IC position on board or preprogram NAND with [https://www.jcprogrammer.com/nand-programmer-p13.html JC P13] toolkit. 6fajdlwdfqw6o1wb3y380ur3e131rsi Apple Self-Service 0 2235 7019 6897 2023-11-26T15:33:48Z Oros 71 /* Repair IDs */ to be more clear on what type of ID are listed here 7019 wikitext text/x-wiki Apple Self-Service information USA: https://selfservicerepair.com EU: https://selfservicerepair.eu/ == Repair Manual IDs == These are used to verify before you can place some parts in the cart on the website ====== iPhones ====== 12 = RBQEVH 12M = 12P = FWRUJK 12PM = TAGYWX 13 = WLBXAK 13M = PMCEGT 13P = RENLTC 13PM = EGKCZN SE22 = GPCNKY 14 = LBWDCA 14+ = PHYGVK 14P = CBLXRW 14PM = XGTPKL ====== Macbooks: ====== Macbook Pro 13" M2 2022 QMXHLB Macbook Air M2 2022 PTGVKD MacBook Pro (13-inch, M1, 2020) GBTWXF MacBook Air (M1, 2020) JFDNFL MacBook Pro (16-inch, 2021) HFXVCU MacBook Pro (14-inch, 2021) BQEZWU ====== Desktops: ====== Mac mini (M1, 2020) DBZKXG Mac Studio (2022) CWQBNX iMac (24-inch, M1, 2021, Two ports) LVHLQJ iMac (24-inch, M1, 2021, Four ports) SNCHJB Studio Display YDVPMR 5piujpog36x2zymwmt7iejj490ndc34 Apple Software Diagnostics Sensor Names 0 207 613 608 2020-02-02T17:33:20Z Chrisb 1 Chrisb moved page [[Apple Hardware Test Sensor Names]] to [[Apple Software Diagnostics Sensor Names]] without leaving a redirect 608 wikitext text/x-wiki #REDIRECT [[SMC Sensor Codes]] 5ut2mu8gm3n1iv1pfzcrlwcw7bhsngn Audio Jack Repair and Plug Sense 0 2128 6684 6373 2022-11-30T00:45:39Z Crumblenaut 317 Updated to include a note about renamed aliases in later models. 6684 wikitext text/x-wiki A common issue, especially with unibody MacBooks and MacBook Pros (2008-2012 era) is that the system will stop giving sound output through their main speakers and/or through the headphone jack. This is most often due to having something stuck in the audio jack (e.g. a broken off headphone plug tip) OR due to AUD_CONNJ1_TIPDET losing default electrically disconnecting from AUD_CONNJ1_TIP when nothing is inserted into the jack. '''NOTE:''' ''In later models (like the MacBook Pro 2015 13in 820-4924 board, for example) AUD_CONNJ1_TIP has been renamed to AUD_CONN_HP_LEFT and AUD_CONNJ1_TIPDET has been renamed to AUD_CONN_TIPDET2. In TRS connectors (see graphic below) the tip is the left channel, and HP presumably is short for "headphone". Despite the different naming scheme, all of the principles described below apply in a one-to-one manner.'' <br /> ===Common Symptoms:=== *Still hear the Apple chime on boot (if it's not turned down in system preferences, and you can reset it to standard volume with a NVRAM reset for testing purposes); *Not hear any sound from within MacOS itself; *See "Digital Out" / "Optical digital-out port" as the name / type of the only output device listed in the System Preferences -> Sound -> Output tab (unless you have a second audio interface connected to the system); and *See a dim red illumination coming out of the headphone jack itself when the system is powered on and booted into MacOS. <br /> ===Background:=== Headphone jacks for most unibody and all modern Macs support several types of connectivity across different variations of the 3.5mm (1/8in) standard. These include: *The standard TRS (tip, ring, sleeve) analog headphone / line-out output where the audio signal for the left channel is passed to the output device using the tip of the jack, the right channel is passed to the output device using the ring of the jack, and both channels share a common ground in the sleeve around the base; *The increasingly common TRRS (tip, ring, ring, sleeve) analog in/out configuration where the tip is the left channel, the ring adjacent to the tip is the right channel, the ring adjacent to the sleeve is the common ground, and the sleeve is the integrated mic input; and *The mini-TOSLINK digital optical plug type which uses a single fiberoptic channel to transmit digital audio using the S/PDIF protocol and which is built with a nonconductive plastic sleeve. [[File:3.5mm Plug Types.png|alt=Three 3.5mm Plug Types: TRS, TRRS, and Mini-TOSLINK|thumb|Three 3.5mm (1/8in) Plug Types: TRS, TRRS, and Mini-TOSLINK]] MacBooks use a tip-detect pin and a sleeve-detect pin to determine which of these three types of plug is inserted into its headphone jack, or if no plug is inserted at all. The behavior described above is due to the jack passing erroneous tip and/or sleeve detection to the onboard audio codec chip. <br /> ===Functional Mechanisms:=== [[File:Audio Jack Schematic (820-2936).png|alt=Audio Jack Schematic (820-2936)|thumb|Audio Jack Schematic (820-2936)]] As indicated by the schematic, the audio jack is physically built so that AUD_CONNJ1_TIPDET normally has a physical electrical connection to AUD_CONNJ1_TIP. When a plug is inserted into the jack, the metal-to-metal conductive connection within the jack is physically opened by the plug's physical presence mechanically lifting the top arm up from the base with which it is normally in contact. This tells the MacBook's audio codec chip that there is something in the jack physically. Furthermore, the jack is built so that AUD_CONNJ1_SLEEVEDET will not have any continuity to AUD_CONNJ1_SLEEVE unless a conductive plug (TRS/TRRS) is inserted into the jack. When a TRS or TRRS plug is inserted into the jack, AUD_CONNJ1_SLEEVEDET is shorted to AUD_CONNJ1_SLEEVE, indicating to the audio codec chip that the plug in the jack is an analog audio plug. The configurations for the audio jack, then, are as follows: {| class="wikitable" |+''HEADPHONE JACK SENSE CONFIGURATIONS'' ! !TIP-TIPDET Closed !TIP-TIPDET Open |- |'''SLEEVE-SLEEVEDET Open''' |Sense: Nothing is inserted into the 3.5mm jack Output: Internal speakers ENGAGED |Sense: Mini-TOSLINK is inserted into the jack Output: Digital optical out only |- |'''SLEEVE-SLEEVEDET Closed''' |[https://www.youtube.com/watch?v=54e_EV3jXGc Where did you get that banana?] |Sense: TRS/TRS analog plug inserted Output: Analog audio out for headphones / line-out |- | colspan="3" |NOTE: The default configuration of the jack with nothing inserted is for TIP-TIPDET to be CLOSED and SLEEVE-SLEEVEDET to be OPEN. <nowiki>***</nowiki> Mic detection is not detailed here. See the "AUDIO: JACK TRANSLATORS" page of the schematic for more information. *** |} <br /> ===Dysfunctional Mechanisms:=== Assuming that there is nothing jammed in the jack that would cause the physical connection between AUD_CONNJ1_TIPDET and AUD_CONNJ1_TIP in the jack mechanics to open, then either: *The two metal pieces inside the jack have oxidized or accumulated debris at their point of contact, and as a result the connection now has too much resistance on the line to provide a reliable continuity and so the audio codec chip has decided that there is something in the jack when there is, in fact, nothing inserted; or *The top metal piece has developed fatigue and no longer makes physical contact with the plate to which it would normally make contact. <br /> ===Preoperative Diagnostic Testing:=== Before performing any invasive surgeries on your MacBook, be sure that faulty tip detection is your problem! A functional tip detection mechanism should give ~0 ohms resistance between the headphone jack's AUD_CONNJ1_TIP (pin 1) and AUD_CONNJ1_TIPDET (pin 2) when nothing is inserted, and when there IS a plug inserted, it should give an OL when measuring the resistance between those same pins. If the functional behavior is not as expected but the jack's electrical measurements ARE as expected, then you may need to trace the signal path deeper into the board, ensuring no filter caps are shorted to ground, that the filtering inductors on the line are not failed open, and that proper supply voltages are being passed to the logic gates that handle the detections and pass the AUD_SENSE signals on to the audio codec chip. <br /> <br /> ===Reference Photos (A1278):=== <gallery mode="packed-hover"> File:Mac Headphone Jack Revealed (3).jpg|alt=The TIP-TIPDET connection point is circled here. Note that when a plug is inserted the top piece of metal is lifted off of the base connection slightly, thereby opening the default-closed TIP-TIPDET connection.|The TIP-TIPDET connection point is circled here. Note that when a plug is inserted the top piece of metal is lifted off of the base connection slightly, thereby opening the default-closed TIP-TIPDET connection. File:Mac Headphone Jack Revealed (2).jpg|alt=Headphone jack with a plug inserted and the TIP-TIPDET interface OPEN|Headphone jack with a plug inserted and the TIP-TIPDET interface OPEN File:Mac Headphone Jack Revealed (1).jpg|alt=Headphone jack with no plug inserted and the TIP-TIPDET interface CLOSED|Headphone jack with no plug inserted and the TIP-TIPDET interface CLOSED </gallery><br /> ===Solutions:=== *'''Easy but unlikely to be a persistent fix:''' If the connection point is simply oxidized you may be able to resolve the issue by disconnecting the system battery, spraying [https://smile.amazon.com/dp/B00006LVEU/ DeoxIT D5] in the headphone jack, and then inserting and removing the 3.5mm plug repeatedly to break up the oxidation between the two contact points. *'''Involved but likely permanent fix:''' Expose the internal mechanisms of the headphone jack by removing the logic board from the system, exposing the jack's internal TIP-TIPDET connection point, and then cleaning / bending / modifying the exposed metal contacts so that they make reliable electrical contact (~0 ohms resistance between pins 1 and 2) when nothing is inserted and also separate reliably when a plug is inserted to the jack (OL between pins 1 and 2). **Usually DeoxIT and a slight bending will work for me ([[User:Crumblenaut|Crumblenaut]]), but in the past I've also had to file the contact a bit and then tin one or both sides with solder to get it just right *You can expose the internal mechanisms several ways, including by: **Desoldering, removing, and disassembling the jack to remove the shielding; or **Using flush cutters to snip the shielding connection points on the exposed side and the rear of the jack, leaving the unexposed side connected, and then by bending the metal shielding back; or **Using a Dremel drill and a fine cutting blade to VERY CAREFULLY cut through the exposed side and rear of the jack, leaving the unexposed side connected, and then bending the metal shielding back *'''ORRRRRRR... YOU COULD JUST REPLACE THE JACK.''' ¯\_(ツ)_/¯ <br /> GOOD LUCK, FRIENDS! :::D <br /> jrn02rwyhwtgd9l1hly5rv89lxrkd9l BBOX 0 761 1811 1810 2020-09-26T19:57:04Z Chrisb 1 /* Tools Needed: */ 1811 wikitext text/x-wiki ===Tools Needed:=== #Windows computer with internet access & a USB Port #original or mfi lightning cable for best results #JC BBOX C3 #JC Repair Operation Platform https://www.jcprogrammer.com/download-center #3utools http://www.3u.com/ ===Setup:=== #Download & run the JC Repair Operations Platform software from https://www.jcprogrammer.com/download-center #To open the software register for an account & login #skip the software update by clicking "next time" #For best speed results, change the server to the best zone for your location. [[File:BBOX Media 3.png|thumb|alt=|none]]5. Under install driver install CH341 driver (V1/B1/V1S/BBOX/Chip Module) [[File:BBOX Media 4.png|thumb|alt=|none]] 6. Go to the "nand repair" page by clicking the "nand repair" button in the top right [[File:BBOX Media 5.png|thumb|alt=|none]] 7. Connect the device & click the connect key until the BBOX shows "B-BOX: ONLINE" [[File:BBOX Media 6.png|thumb|please note, if you have many USB devices connected, you may have multiple "COMS" available. Your software may not recognize the BBOX if you have the wrong COM selected.|alt=|none]] <br />[[File:BBOX Media 1.jpg|none|thumb|BBOX online & device booted to home screen. you should be here before moving onto "Getting Into Purple ode"]] ===Getting Into Purple Mode:=== ======1. Get your BBOX into "online mode"====== To get your BBOX into online mode you must #2. While being plugged into your BBOX put the phone into [[DFU Mode Restore (iOS)|DFU mode]].[[File:BBOX Media 2.jpg|thumb|BBOX online & device booted to DFU. you should be here after completing step 2|alt=|left]] qgzsipuxl2c4ge8rysep1zh5p16suiy BCM15700 Camera 0 1901 5610 5609 2021-03-01T18:42:28Z Piernov 10 Category Mac/MacBook/MacBook Air/Pro 5610 wikitext text/x-wiki The A1398, A1465, A1466, A1502 from 2013 to 2015 (Haswell/Broadwell) as well as A1708 machines use a FaceTime HD camera connected through a MIPI bus to a BCM15700 controller, itself connected through PCIe to the PCH. Older machines use a USB camera, newer ones have the camera handled by T1/T2/M1, they are not covered here. The BCM15700 uses an external 4Gb framebuffer RAM through a DDR3 bus. The BCM15700 also includes various voltage regulators (LDO and buck converters) to drive its internal logic, the MIPI bus and the RAM. == Power rails == The BCM15700 only takes PP3V3_S3RS0_CAMERA as its power supply. The other power rails for the camera circuit are created by the BCM15700 itself. RAM voltages are the usual DDR3L power rails: * PP1V35_CAM: the VDDQ voltage for the RAM at 1.35V, 1.337kohms to ground on an 820-3476 * PP0V675_CAM_VREF/PP0V675_CAM_VREFDQ: feeds VREFDQ at 0.675V, 4.5Mohms to ground on an 820-3476 * PP0V675_CAM_VREFCA: feeds VREFCA, voltage divider at 0.675V from PP1V35_CAM == Crash during macOS boot == If the BCM15700 is unstable/defective, it can crash, causing the driver to crash when booting macOS and in turn causing a reboot of the machine. Linux would not crash in this situation. macOS Sierra and Mojave may show something like this when booting in verbose mode: <nowiki> AppleCamIn::init AppleCamIn::probe AppleCamIn::start</nowiki> Unfortunately these debug messages seem to have disappeared with Big Sur, and it crashes after: <nowiki> IOG Flags 0x3 Generation from SMC report as 2</nowiki> The 25MHz clock generated by the clock generator (SYSCLK_CLK25M_CAMERA from U1900 on an 820-3437) can cause it to crash if the clock generator itself is defective or if there is an issue on its power rail, such as a burnt resistor (R2042 on an 820-3437). Interestingly, Linux is less likely to have issues than macOS if the clock is not perfect. The BCM15700 can be disabled by disconnecting the CAMERA_PWR_EN line (removing R2030 on an 820-3437, R2033 on an 820-4924). This should avoid the crash mentioned above, but of course camera will not work. See https://boards.rossmanngroup.com/threads/820-3476-820-3437-stuck-on-progress-bar-with-applecamin.54959/#post-64298 == Troubleshooting using Linux == In a terminal: <nowiki> lspci</nowiki> can tell you if the BCM15700 is at least detected on the PCIe bus. You should see something like: <nowiki> Multimedia controller: Broadcom Inc. and subsidiaries 720p FaceTime HD Camera</nowiki> If it is not detected then you probably have an issue with its power supply or with the PCIe bus between the chip and the PCH (check the capacitors) or the chip itself is defective. If it is detected, you could have an issue with the camera itself rather than the BCM15700 controller. Linux does not have a native official driver for the BCM15700, however there is a reverse engineered driver that works perfectly fine but it must be installed manually. This driver is very verbose and show information about the controller and RAM initialization in the kernel log when it is loaded. The driver is available here: https://github.com/patjak/bcwc_pcie === Installation on Ubuntu 20.04 === In a terminal: <nowiki> sudo apt install git curl build-essential git clone https://github.com/patjak/facetimehd-firmware cd facetimehd-firmware make sudo mkdir /lib/firmware/facetimehd sudo cp firmware.bin /lib/firmware/facetimehd git clone https://github.com/patjak/bcwc_pcie cd bcwc_pcie make sudo make install sudo depmod sudo rmmod bdc_pci </nowiki> Then open a second terminal, type: <nowiki> sudo journalctl -f</nowiki> Go back to the first terminal and type: <nowiki> sudo modprobe facetimehd</nowiki> You should see the log in the second terminal. === Debug logs === ==== Successful initialization ==== Here is a picture of part of the logs of what a successful initialization looks like:<br> [[File:Linux facetimehd log.jpg|500px]] ==== Errors ==== Here is an example of an error, this one is related to RAM but it was in fact caused by the BCM15700 controller itself (which includes the framebuffer RAM controller):<br> [[File:Linux facetimehd error.jpg|500px]] [[Category:Mac]] [[Category:MacBook]] [[Category:MacBook Air]] [[Category:MacBook Pro]] ibnu5plrf0oj5megbtvw5d4fqnobmtx Backlight Troubleshooting 0 40 7695 7546 2024-09-13T17:17:03Z Inwerp 16 /* LUXE (RAA209100B) */ 7695 wikitext text/x-wiki [[File:steve-jobs.webp|thumb|Steve Jobs demonstrating corroded PPVOUT_SW_LCDBKLT_FB on his MacBook Air]] == First things first == # '''<u>MOST IMPORTANT THING EVER!</u>''' <u>Never work, test or turn on 13" devices without screwed in edp-tcon connector. I</u><u>f</u> <u>eDP</u> <u>Cable</u> <u>jumps out of the connector, it will destroy your CPU</u> <u>edp IO</u> <u>since backlight VOUT is 0.2MM away from EDP_AUX_N which goes directly to the CPU.</u> <u>on 15" you can swap edp mux IC, but 13" kills cpu instantly. the best practice is to use tweezers and actively discharge caps on backlight rail before disconnecting.</u>Always discharge Backlight caps before unplugging the Display (wait 20-30 seconds or use 10 ohm resistance to discharge it). # Before looking for Backlight problem, check if you really have an image. Dozens of times i've seen people troubleshooting backlight, narrowing it down to "no backlight enable" without having a picture too. It is really important to keep in mind, this is valuable for all macs''': if you do not have image, if display is not recognized - there never will be a backlight.''' If there was waterdamage on Display connector near the LCD VOUT pin, it is highly likely that CPU EDP Aux line is dead. On 15/16 inch Macbooks you can simply replace gmux IC which acts as sort of protection for CPU/GPU. # Check with known good Display if possible. Rule out Flexgate problem (might happen even on "fixed" models). Use [[MacBook LCD Screen Compatibility]] page to find test screen which should have a backlight. # '''Do PRAM reset''', on T2 and M1 Macs, do DFU revive/restore to rule out T2 IO problem. It is very rare, but not zero chance. especially if the device is clean and lost its backlight after an update. do not underestimate this, there is nothing dumber than having a backlight after 2 hours of soldering and then finally doing PRAM reset "just in case". ==Backlight Circuit ICs used in MacBooks== The backlight circuits in MacBooks manufactured from 2009 to 2020 operate on the same basic principle. Three controllers were used during this period: LP8550, LP8545, and a two-chip circuit consisting of LP8548 and LP8549. #LP8550 MacBook Pro PRE 2012 Retina / MacBook Air till 2017. [https://www.ti.com/lit/ds/symlink/lp8550.pdf?ts=1641743667771&ref_url=https%253A%252F%252Fwww.google.com%252F Datasheet] #LP8545 was used on first Retina Macbook 2012 (820-3332, 820-3662). This chip is almost identical to LP8550 [https://www.ti.com/lit/ds/symlink/lp8545.pdf Datasheet] is also publically available. BOOST SW FET is moved outside the IC, Feedback voltage divider too. #2-chip (LP8548 + LP8549) circuit was first introduced in year 2013 on Retina MacBooks A1502, A1398. MacBook Air uses this chip combination since 2018. There are a few later revisions, but they all seem to be compatible between same gen of the device. for example, all 2012-2015 would work fine. all TBT will work up to M1 models. There is no datasheet available, but basically this is the same LP8545 split into two parts: Boost part + Current Sink/Logical part. There is also driver for Keyboard backlight integrated into LP8548 part. <br /> ====LP8550 and LP8545 Basic operation principle==== The LP8550/8545 backlight driver can be divided into three parts: =====Boost converter.===== This section of the IC generates high voltage from PPBUS_G3H and boosts it to the default maximum for the platform when it receives the Enable signal. If the brightness is adjusted to a lower level, it generates a lower voltage to optimize power consumption. The main function of this circuit is to drive LED stripes within the screen, typically through the VOUT or VLED test points on the TCON board.<br />[[File:Booster circuit.jpg|frameless|415x415px]] <br />Simplified diagram from The LP8545 datasheet. T1 FET and feedback voltage divider are integrated in LP8550. =====LED-Retun / Feedback / Current sink part.===== [[File:LED Return.jpg|frameless|170x170px]] >> [[File:LED Return 2.jpg|frameless|374x374px]] LED return/feedback/current sink: This part of the IC connects the cathode part of the LED stripe to ground through PWM-controlled FETs (current sinks), which adjusts the brightness of the screen. LED_RETURN_1..6 lines are present on the eDP/LVDS connector, and a broken line can cause uneven lighting on some parts of the screen(so-called "Stagelight" effect). *Logical part [[File:LP8545 Logic part.jpg|frameless]] This circuit controls PWM, high voltage generation, I²C communication with PCH/MCU/gMUX/tCon processors, and has an EPROM with a stored brightness profile and slopes. =====Configuring Backlight Slope on fresh LP8550 after replacement===== Please refer to [[LP8550 Slope Configuration|Piernov's LP8550 Slope configuration software and instructional video.]] If you use new LP8550 it is quite easy to flash it with original smooth brightness change slopes. ====LP8548 + LP8549 Combination==== The LP8548+LP8549 combination is a split variant of the LP8545. The LP8548 is a BOOST IC with an I²C communication part, controlled by the LP8549 placed on the TCON board since the MacBook Pro 2014. The LP8549's main I²C interface is directly connected to the TCON LCD controller, freeing six pins on the eDP connector. Refer to the 820-3787 schematics/boardview for both chips' locations, as this board has both chips nearby and still has LED_RETURN lines on the eDP connector.[[File:820-3787.jpg|none|thumb|As you may see there is a communication line between two chips. LP8549 could be considered as "primary". ]] ==== LUXE (RAA209100B) ==== M1 + 2021 and later 14 and 16 inch models use quite different backlight system. It is BGA like LP8550 and there are SPMI lines to the SoC. As prior models it only outputs backlight if image is present. LED is now a matrix on all backligh Lid. One of common symptoms on damaged LCD panel would be very blurry monochrome image produced by backlight behind the reset / pixelated LCD. Instead of PRAM reset, first thing to check would be questioning if the device has original Display or not. If someone installed non original screen on A2442 / A2779 model without chip transfer, backlight will be off untill LID Open / Close trigger loop. Chip itself is a simple buck-boost converter, sending power to backlight driver inside of the LCD. Secondary backlight driver is located in separate tcon board inside of the screen. It has i2c and SPI lines attached to SoC, however it is most likely interfaced by Parade DP855A LCD MCU inside of the LCD TCON. Sometimes after fixing waterdamaged LUXE driver, there will be dead power regulator in Backlight tcon. Chip has only apple part number and most likely is some customized slim TI power driver. chip is located closer to the Camera/ALs cable and has PN A2485 is 338S00820. It is only donor-sourced chip ( A2442, A2485 and most likely A2779). A2442 338S00821 This backlight system also has flickering issue if LCD is transferred without SN cloning (either by editing ROM contents or by transferring Parade + SPI from old LCD) ==Repair and Troubleshooting== ===LP8550 / LP8545=== '''0. Before attempting any repairs, perform a PRAM reset and check the SMC_LID line.''' #Check Fuse, check if line is shorted / by any damage replace i-pex eDp connector (Refer to [[MacBook Parts List|MacBook Parts List)]] ALWAYS check for short on cable side, both connected and disconnected. If the pin is burned in many cases it will burn the insulation under the VOUT pin shorting it to ground once inserted. Normal resistance is kOhms. #Check if Enable is present on both Backlight power switch and IC itself. #Check if FB(Feedback) line is corroded on VIA near the Booster Diode. This is a common issue on MacBook Air boards. To check it, remove D7701 and measure in diode mode(Red probe to ground, black on pin 2 of the D7701). OL would indicate a broken connection to the LP8550 #Check if there is communication with the backlight IC, and if it has VDDIO and VIN power supply. #If nothing helps, replace LP8550 and before putting new one use diode mode to check if all traces are good (0.4-0.8V voltage drops on all relevant pins) Basically that's it. LP8550 troubleshooting is pretty straightforward compared to later models with dual chip system. <br /> ===LP8548 + LP8549=== '''0. Do a PRAM Reset, check LID, check [[A1706/A1708 TConn Backlight Pinout (FlexGate)|Flexgate]](2016+ Models), replace eDP Cable line before touching this circuit at all.''' Boost circuit part troubleshooting is quite similar (same feedback function, same PPBUS voltage if no boost, for example). However, it is actually being controlled by TCON board which makes troubleshooting a little bit confusing. If FUSE / boost circuit checks out, check these two testpoints on TCON Board (similar on all devices, new displays have no marks on them) [[File:TCON Backlight communication.png|none|thumb|300x300px|TCON Backlight SDA / SCL testpoints]] If there is communication going on and lines are not shorted (0.4-0.5V drop in diode mode) check VLED voltage under the backlight cable: [[File:TCON Backlight VOUT.png|none|thumb|300x300px|TCON Backlight VLED Voltage testpoint]] Please note that no backlight AND good voltage on VLED does not necessarily indicate flexgate or dead LED stripe. Since Current Sink side is on TCON Board, it needs to reach LP8548 on Logicboard before it runs PWM driver. (I2C_BKLT_SDA/SCL). It also needs communication with PCH/GMUX (I2C_TCON_SDA/SCL) or EDP_BKLT_PWM+SMBUS_SMC_0_S0_SDA/SCL on older boards. If you ever messed with 2017-2019 Display firmware you might have seen that ALS / Truetone / Backlight slope is a part of display firmware. Basically If communication between TCON and LP8548 is disturbed, you might have 50V on VLED and no backlight or 0v VLED but enable signal from GMUX. So basically, if you do not have high voltage on VLED, troubleshoot the logicboard (enable signal, VDDD / VDDA, Boost circuit, fuse, etc.) but also keep in mind that communication line is also necessary to turn on boost circuit, so the problem might be on TCON/Display side, so check PP5V_S0SW_LCD(display will have picture without 5V power but no backlight and no boost). If you have high voltage but no backlight, inspect communication lines first. This IC has two separate 5V supplies for booster and communication circuits, so check LP8548 VDDD/VDDA precisely: if it is corroded and supplies for example, only 4.3V to VDDD (oddly it is from the opposite side of datalines), BOOST will work, but SPI communication part of the IC will fail to properly talk back to the TCON board. (also, communication level is 5V unlike 1.8/3.3v on most lines) Most common symptom of bad TCON side/TCON power /TCON communication would be a short burst on backlight power, you will see it as some voltage on VOUT which will quickly go down as caps discharge. ====GAY-GAV Backlight repair==== If you have classic GAY-GAV PP5V_G3S short circuit and there is a hole in LP8548, after you replace both 5V voltage regulators(PVCCIOS0 U8110 and PVCCEDRAM U7710) and Backlight driver, check Feedback voltage divider (LCDBKLT) and PP5V_S0SW_LCD power switch. As you may guess, LP8550 may mainfest same symptoms as any of these two chips, so if you stuck with high voltage but no backlight - replace it before opening screen and checking if cable is bad. <br /> ===Known test possibilities:=== all screens from the same year will turn on backlight. (For example 2019 16" will turn on backlight on 13 and 15 inch screens or even provide sign of image) If for some reason backlight works during the Apple logo (on boot) and backlight is turned off on user login window or after boot completion, check LAS (Lid Angle Sensor) for liquid(Macbook 16" only). === T2-M1 Backlight Driver compatibility === T2 = LP8549B1-04 , M1 = LP8549B1 A07 With T2 donor = PPVOUT_BKLT is boosting to 50Volt but no backlight on LCD. No flexgate issue etc. You must have donor from M1. (credits to iBoff Matt) ==Old troubleshooting guide== ===820-00138 BKLT_EN high but LCDBKLT_EN_L is not being pulled down=== this is a pretty tricky one, i found 3-4 deadend posts on badcaps / Rossmann's with no solution for this issue . The problem is that there is no real 820-00138 boardview available, in most cases there is 820-3662 boardview or similar. however PDF seem to be the right one. The difference between commonly distributed boardview and real one is that there is no U7750 on board, and this is the source for BKLT_SCL + BKLT_SDA. To inspect backlight circuit use 820-00163 or 00462(this is DG board version) which is totally fine and has absolutely the same backlight circuit design. These two are critical for backlight to turn on, this is somehow similar to iMac design, where display is the one who really turns backlight and only once image output is stabilized. This might seem overenginered, but it is kind of bugfix for possible graphical artifacts on system poweron. On 820-00138 I2C_BKLT_SCL + I2C_BKLT_SDA are coming from eDP connector J8300, pins 3 and 4, they measure 5v unlike most other I2C lines (3.3v). '''For 820-4924 with LCDBKLT_EN_L is not being pulled down''' If the connection between U7700 and R7700 is broken on the ISNS rails LCDBKLT_EN_L will stay high. Make sure that there is continuity between U7700 Pin9 to R7700 Pin4 and U7700 Pin10 to R7700 Pin3. The trace goes between the board layers and might look perfectly fine. ===Rossmanns Guide=== (https://docs.google.com/presentation/d/1PkeO_lC5WTPScSV3ZzEEjVuDWeQtL2eHK6jEcf7axA0/edit#slide=id.gb813305ed3_143_1678) Pages 145-149 or search for "Standard backlight circuit faults!" if pages change over time<blockquote>PRAM RESET! Low boost can be the brightness being down. Check voltage after backlight diode. If backlight is 45V or more there is no load on the backlight circuit.  Use a known good screen and check the connector. If backlight is 25V-40V the boost circuit is working.  Check the connector, cable, and LCD. If backlight is PPBus voltage your boost circuit isn't working.  Check the feedback trace, LCD driver, and enables. If backlight is 0 check for short then work your way back toward PPBus. The LCDBKLT_FET, fuse, and enable transistors are all suspect at this point.  Also check the voltage dividers. checking SMC_LID (it shouldn't give an image either if it's missing) To have boost on this circuit, the LCD must communicate. Be sure to use a known good LCD when troubleshooting. Measuring before the inductor you should have PPBus, and after it you have some random rounded-square-ish (or triangle-ish) signal that a cheap multimeter won't know what to do with. Measure after the diode unless you are using an oscilloscope. Missing LCD_BKLT_PWM: Inject voltage or jumper from PP3V3_S0 or similar. Some great info from Louis Rossmann (User name - zzz) ifixit forum Most "common" problem with no backlight is ball A5 on LP8550 or LCD connector, but guessing is BS and should not be done here. put multimeter in diode mode, red probe on ground, black probe on pins 3/4 of LCD connector. 0.0 or 0.007 means direct short to ground, usually inside LCD connector or LCD cable. 0.200-0.300 is bad LED driver. 0.459-0.511 is bad feedback via or corroded away feedback ball under LP8550 0.565 is corroded solder ball or bad switch trace inside LP8550 Measure voltage along each point in the circuit. Before F9700, after F9700. At output. At backlight output, measured on pin 3 or 4 of the LCD connector, 0v means short to ground, blown fuse, or no LCD connected. Check that you see an image on the LCD, check backlight fuse, check board via from FET after fuse to boost coil. 8v means no short to ground, good fuse, but no boosting. Check BKL_EN is 2.7 to 3v at voltage divider going to enable pin of WLED driver, check BKL_PWM signal exists. 27v or higher means all good, but your LCD cable or LCD backlight itself is blown. If you see power along the line, where is it? Where does it stop? If you replace a fuse with a short to ground anywhere in the line you have wasted your time, and a precious little 0603 package. :( Lastly if it worked for a few months and then died most likely your problem is on bad feedback via/ball on LP8550, pins 3/4 coming corroded on LCD connector, or BKL_EN voltage divider resistors in that order. Have fun! Louis Rossmann<br /><ref>repair.wiki</ref></blockquote> [[Category:Mac]] [[Category:MacBook]] [[Category:Troubleshooting Guide]] <references /> mhllgr87z9kj82jm6jcn7evhh459z69 Basic Troubleshooting 0 682 6064 1586 2021-09-17T03:58:04Z IT-Solve 181 /* Problem - No display */ capslock check 6064 wikitext text/x-wiki <br /> ==Basic basic basic!== *PRAM/SMC reset first! *Remember to try booting in Safe Mode by holding left shift key during boot. *Have the proper tools ready and available - known good/functional spare parts, Shiny diagnostic boot drives, external monitors, proper adapters, known good keyboard/mouse, etc. ALWAYS have good bits in your kit! Periodic inspections and requesting replacements when needed is a must! *Instructions for malware cleanups, basic terminal commands, SAVE LINKS AS FAVORITES for good instructions, wikis, etc. for easy reference. *Utilize manuals and forums in Zoho! ---- ==Problem - No display== *Is Mac turning on at all? Check for sounds (fan, chime). Check MagSafe light - is it green/amber? *Check for response from the Caps Lock, which should respond if the system is up and loaded. If does, it is most likely a damaged screen. **If Mac is booting (chimes, signs of light, but no display), check to see if backlight is bad by shining a flashlight through the Apple logo on the other side of display. If you see a picture on the front of display where the light is shining in (login screen, desktop, loading progress bar, etc.), the backlight is bad and logic board repair/replacement should be considered. **If there are no signs of life, open bottom cover and check for liquid damage - corrosion/residue on logic board, cables, connectors, inside bottom cover, flex cables, etc. Check for abnormal smells or fried components. Check to make sure RAM is properly installed (can be displaced if dropped or hard bang). ***Disconnect all connectors (starting with the battery first ALWAYS) and see if any signs of life after everything is disconnected. If shows life, power down and reconnect one cable at a time (powering down before connecting each cable) until you can pinpoint what is causing the issue. If still no signs of life, logic board repair/replacement should be considered. ***Check keyboard and hard drive (if either are bad, they can cause no boot in some models). ---- ==Problem 2 - Keyboard stopped working== **Retina/Air models - a bad trackpad and/or trackpad cable can cause the keyboard to no longer function. Test with known working trackpad/cable and confirm issue. **If some keys are functional and others are not - check for evidence of liquid damage (inside Mac, keyboard connector, keyboard flex, sticky/crunchy feeling keys when typing, etc.). If it is a Mac with butterfly keyboard (newer models), check model number and see if it qualifies for Quality Repair Program through Apple (if no liquid damage is present). **Check with known working keyboard and see if issue is resolved. **Check for software issue - log in as another user or Guest and see if issue is still present. If issue is not present under different user, log back into original user and check Accessibility settings to make sure “Mouse Keys” is not enabled in the “Mouse & Trackpad” section. Check for malware or other applications which may interfere. ---- ==Problem 3 - No power== *Try SMC/PRAM resets. *Open Mac and inspect for liquid damage. *Disconnect batter and use genuine 85w MagSafe - does Mac boot automatically without pressing power button? *Remove existing battery and replace with fully charged, known good battery and try to boot. *Follow similar troubleshooting steps as mentioned above in display section - disconnecting all connectors from logic board and connecting one by one. *Disconnect battery and keyboard and try power on pads (non-retina models - instructions can be found here. *Check keyboard (power button attached) - try with known good keyboard. *Check DC board - try with known good board. *The following components are sometimes a cause for no power: bad keyboard, bad SSD, bad DC in board, bad DC in board flex cable, bad trackpad, bad trackpad cable, RAM not properly inserted or bad (you do not always get RAM beeps in some situations). ---- ==Common model specific issues== *Mid-2012 non-Retina - 13” A1278 models - LCD flickering and system freezing due to defective lower RAM slot. Solution would be to run with one stick of RAM in good slot or replace logic board. *2011 27” iMac and 15”/17” MacBook Pro models - AMD GPU failure - Symptoms include no boot, discoloration/vertical lines/artifacts, glitching, freezing during loading, rebooting, or gray screen. Other symptoms may present as well not listed here, but these are the common ones. Run GPU test to confirm issue if possible. The only model we can currently fix is the 15” MacBook Pro. We can replace the logic board with a 2012 15” MBP logic board. There are no fixes for 27” iMac or 17” MacBook Pro. *2012/Early 2013 15” MacBook Pro Retina - Power buck issues - Will not fully boot/black display - logic board repair is required. *Late 2013/Mid 2014 15” MacBook Pro Retina - black outs/random shut downs - CPU power state issue - logic board repair required. *2008/2009/2010 15”/17” MacBook Pro - Kernel panic due to bad component on logic board - logic board repair is required. *2015 MacBook Pro Retina 13” - Track pad cable defective causing no boot. *2012 MacBook Pro non-Retina 13” - Hard drive cable defective - symptoms include (but not limited) a prohibitory symbol or folder with question mark when starting up, slow drive, freezing at loading bar - confirm by booting into diagnostics drive and checking for CRC errors in Drive DX. [[Category:Troubleshooting Guide]] fp6ediptdl9b171lq0735jt4ai5hsa1 Basic iPhone LB Troubleshooting 0 43 6249 543 2021-11-23T11:45:50Z Brunorivera 597 Inserted some troubleshooting and organized the old text. 6249 wikitext text/x-wiki # '''Visual Inspection''' #* Check for any missing sticker or shield then follow next steps # '''Connect DCPS''' #* Draw max current? If draw max current you have VCC MAIN line shorted. #* Draw some current? So you have probably a cap leaking some current. Check for any liquid damage #* No current draw? Follow next steps # '''Press Power Button for 1 second''' #* Check for current next you pressed the power button. It should be something around 60-90mah #* High current? Check for any ugly cap around NAND or VDD_BOOST caps # '''Tristar test''' #* Check voltage on battery fpc without battery connect just with charger connected. This should jump around the charger voltage while it is looking for battery. If it goes below 3v like 0.6v flat you have a bad tristar. [[Category:iPhone]] ozc73c3ivp5tfd8si39ukw1eu145x8o Battery Lifespan 0 728 1555 2020-08-28T16:48:13Z Chrisb 1 Created page with "Batteries are considered consumed at * 500 cycles for iPhones * 1000 cycles for iPads * 1000 cycles for Watches * 300 cycles for A1181 and silver key MBP * 500 cycles for rem..." 1555 wikitext text/x-wiki Batteries are considered consumed at * 500 cycles for iPhones * 1000 cycles for iPads * 1000 cycles for Watches * 300 cycles for A1181 and silver key MBP * 500 cycles for removable unibody MacBooks * 1000 for non removable battery MacBooks If a battery is less than 80% capacity or greater than 80% of its consumed cycle count, it should normally be replaced when refurbishing. If a computer is under warranty only look at the capacity. Anything under 70% will likely perform badly. iy4ox84bk4qaewtwgu0exvijm2kq8f2 Beginner Troubleshooting 0 814 1795 1794 2020-09-20T18:21:20Z Chrisb 1 /* 2. What not to do */ 1795 wikitext text/x-wiki You have a laptop that does not power on, powers on but shows no image, crashes, etc… You want to fix it but you don't know where to start. There are 2 situations: #You just want your laptop fixed #You want to learn about fixing laptops # Sorry, but if you're in situation number 1, we recommend you to use the services of a trustworthy professional repair shop. Unfortunately, if you're not serious about learning, you will waste your time and money, and you will make us waste our time as well. If you are in situation number 2, then please continue and read until the end. This serves both as directions on how to deal with your laptop problems and how to post on a forum, Discord, or [[{{TALKPAGENAME}}|this discussion page]].<br /> Remember that this is a place for mutual help. It's free as in not paid, so when you ask for something you have to realize people invest their time out of their day for you, without counterpart. And when you help someone else, you do it for free without expecting anything in return. It's also free as in freedom. You are free to ask questions, but people are also free to answer them or not. If you want to help this community, the best way is to learn and help people back when you're confident enough. Tip: if you make effort in your communication and thinking process, people are more likely to want to help. [https://badcaps.net/forum/showthread.php?t=88758 Link to Piernov's original on BadCaps] =='''1. Where to begin'''== ==='''1.1 Identifying the hardware you are dealing with'''=== It is very important for you and us to know exactly the machine you are working with and what is inside.<br /> ===='''1.1.1 Machine model number'''==== Find the '''full''' model number of the machine. For example it may be "HP Pavilion 17-f166nf". "HP 17" or "HP Pavilion" is '''not enough''', there are hundreds of laptop that fit this name. If you find multiple model numbers, write them all.<br /> ===='''1.1.2 Specifications'''==== Find what CPU, GPU, RAM, storage device is actually in the machine. It is not always relevant to the problem, but it helps confirm the parts are compatible or recognize known unreliable parts. *'''CPU''': specify full model number. Not "Core i7", but "Core i7-3615QM". If you can't find it, read the sSpec from the CPU package, it starts with SL or SR like "SR0MP". *'''GPU''': specify full model number, like "Radeon HD 6490M". If you can't find it, read the part number on the GPU die. It starts with "216-" on mobile AMD GPU like "216-0809000". For NVidia it can be like "GF-GO7300-B-N-A3", "G84-602-A2", "N10M-GE2-S". *'''RAM''': specify capacity and frequency like 1600MHz or bandwidth like 12800. For DDR3, confirm if it's PC3 or PC3L. *'''Storage device''': capacity and type (IDE HDD, SATA HDD, SATA SSD, M.2 SATA SSD, M.2 NVMe SSD, eMMC…). Model number isn't necessarily required but in some cases it can help to know if there is a firmware upgrade available for exemple. ===='''1.1.3 Motherboard model number'''==== Motherboard model number is the most useful if you are troubleshooting a motherboard problem. It helps finding pictures, schematics, boardviews, known issues…<br />There is always a number written on the board itself. In some cases there's also a sticker that tells a variant.<br />There are several different board manufacturers, common ones are: *'''Quanta''': found in HP, Dell, Acer, Toshiba, a few Lenovo… Model number on the board is "DA''0''xxxxMByyy" (first ''0'' is optional), "xxxxx" is the actual model and "yyy" contains the revision. For example DAY11AMB6E0 for Quanta Y11A rev E. Warning: 0 and O are hard to distinguish when reading from the board, for example DA0OP6MB6D0 for Quanta OP6. *'''Compal''': found in HP, Dell, Acer, Toshiba, Lenovo… Model number is "LA-xxxx''P''" (''P'' is optional), the older, the lower the number is. Like LA-4082P from 2007 or LA-E541P from 2017. *'''LCFC''': found in Lenovo, it's actually Compal. Model number is "NM-xxxx" *'''Wistron''': found in Acer (Wistron was part of Acer a long time ago), some Dell, HP, Lenovo… Model number is a "xxxxx-x" (x being a digit), often associated with a name. For example "Richie MB 11241-1". *'''Inventec''': Toshiba, some Acer, HP… Model number is often "xxyyzz" with "x" being a letter, "y" a digit and "z" an optional letter. There's also a "6050xxxxxxxx-MB-xx" number that can be easier to spot. For example "SA10E" and "6050A2052401-MB-A04" for Inventec San Antonio 10E. *'''Foxconn''': Sony, some HP. HP have a weird model number like "CHICAGO_HR_HPC MV_MB_V1" or "PM_I_HPC_S MV_MB_V3". Sony come with an "MBX-xxxx" number that's easy to identify, and another number, like "MBX-202" and "M790". *'''Pegatron''': a few Acer and Toshiba. Acer in general have a "xxyyzz" with "x" being a letter, "y" a digit and "z" an optional letter. Toshiba have a weird model number like "PLF/PLR/CSF/CSR UMA" The following manufacturers make their own boards (except maybe a few models here and there): *'''Apple''': board model number is "820-xxxxx", like "820-3462". It's written black on black so it's hard to spot. *'''Asus''': board model number follows the same format as the laptop model number, it can be the same or similar, and sometimes different. *'''MSI''': model number is "MS-xxyxz", with x being digits, y a digit or a letter and z a optional digit for the revision. Some boards have 2 different model numbers like "MS-16J5" and "MS-1795" (with a 1 appended for the revision). *'''Samsung''': model number is name associated with a "BA41-xxxxxx" number, like "Bremen-D" and "BA41-01197A". *'''Clevo''': they manufacture laptops for a lot of "small local" brands. There are often 2 model numbers on the board, like "6-71-W25S0-D02" and "W251ESMB-D0". *'''Toshiba''': a few business grade machines only. Something like "FLESY3" or "FHNSY1" HannStar don't design boards, they manufacture the PCB. "J MV-4" and "94-V0" are not board model numbers, they are generic markings about PCB characteristics. If unsure, send high-resolution pictures of the board. They are always welcome in any case.<br /> ==='''1.2 History, symptoms, state of the machine…'''=== Always collect the most information you can about what happened to the machine. What's not working right? When did the problem happen? What was being done with the machine at that moment? Did it start acting up months ago? Was it ever in contact with liquid? Was it ever dropped? Was it repaired in the past already? etc… These give essential hints to where the problem can be. But of course, don't entirely trust what people tell you. Confirm the symptoms for yourself and write them down.<br />Once you identified what's not working as it should, do a visual inspection of the machine. Look for any physical damage (bent, broken, missing stuff) and liquid damage, both on the chassis and the board, and take pictures if there is any. Always make sure the correct AC adapter was used with the machine. Genuine original AC adapter of the correct brand and correct power rating. Even if the connector is correct, it doesn't mean it will work and it can even damage the machine.<br /> ==='''1.3 Troubleshooting'''=== As a first step you should always disconnect the battery. Also check RTC coin cell battery and perform a clear CMOS.<br /> ===='''1.3.1 Parts'''==== Always exclude the possibility of a part other than the motherboard being the problem before troubleshooting the board. Swap what you can, disconnect what you can and see if the behaviour changes. Write down your findings. Battery-related issues are 99% of the time the battery itself. Even if the battery is new. There are so many garbage batteries on the market that you sometimes get 2 or even 3 bad batteries in a row. This is especially true for Apple machines.<br /> ===='''1.3.2 Board'''==== Here we will give just a few pointers to what kind of troubleshooting has to be done if you suspect a board issue.<br />'''Powers on but no display''' *Check if it's no backlight, no image or both **If no image: ***Check if external display works, try with internal LCD disconnected as well. ***Measure voltage on LCD power rail(s) **If no backlight but image is present ***Try to locate the fuse (or resistor or inductor) to backlight rail and check if it's blown ***Measure voltage on backlight rail, backlight enable signal, brightness adjustment signal *Check if laptop is POSTing: pressing caps lock key triggers caps lock LED, activity of USB drive blinks when turning on, audio plays, HDD is being read, etc… If it's not POSTing: **Check RAM compatibility **Reseat RAM and clean RAM slots **Measure exact voltage on CPU VCore **Check CPU Reset signal **Follow power sequence if it exists in the schematics **Follow list of power rails if it exists in the schematics '''No power''' *Check if DC-in jack LED lights up *Check voltage on all the large inductors *Follow power sequence if it exists in the schematics *Follow list of power rails if it exists in the schematics Note: don't forget to trigger power button when measuring for the rails that only come up when machine is turned on. '''Powers on, display ok but something is wrong afterwards''' *Exclude software issue by booting from another drive with Windows 10/Linux/macOS <br /> =='''2. What not to do'''== ==='''2.1. Never reflow large BGA'''=== It won't fix the problem since 99% of the time it's not an contact issue between the BGA and the logic board. There's a high risk of damage the board even further. If you want to confirm if an AMD/NVidia chip is bad, you can heat it up to 200°C max for a minute and a half, no flux. It'll come back to life for a short while and then die again, because it's bad. In this case it has to be replaced. ==='''2.2. Don't suspect that something is shorted with no reason'''=== Shorted components are not the only failure mode of a laptop. Additionally, some places will measure low resistance to ground under normal operation. In general, high power low voltage (<2V) power rails will measure less than a few hundred ohms to ground. CPU VCore will measure a few ohms only. GPU VCore with newer NVidia GPU can even measure less than 1 ohm. It's normal. If you suspect a short to ground, always report your exact resistance to ground measurements. ==='''2.3. Never randomly inject voltage'''=== Voltage injection is used to find a short to ground. Only consider it '''after''' you found that there is a short to ground and '''after''' doing a visual inspection trying to find a broken component. ==='''2.4. Never inject 19V'''=== If the 19V main power rail is missing, there's a reason, often because a protection kicked in to avoid more damage. For example, the 19V power rail could be shorted to the CPU through a bad high-side MOSFET. In that case, the charging circuit protection kicks in and turns off the DC-in MOSFET. With enough luck, the CPU didn't take too much of a hit yet. If you inject 19V, you are sure to destroy it. Always measure exact resistance to ground to see if there is a possibility of high-side MOSFET short. Always start at 1V and check if any of the large BGA (CPU/GPU/PCH) is warming up. Monitor the power consumption. ==='''2.5. Never randomly replace components'''=== If you don't follow a proper troubleshooting process, randomly replacing components will rarely solve the problem and it can create additional issues. ==='''2.6. Never randomly bridge MOSFETs/fuse/components'''=== Bridging components can easily lead to the destruction of the board without no way to repair it. If it's a fuse, replace it with a matching fuse. If you don't, it will not be able to protect the board and if the source of the problem is still there, some other component will go up in flames. If it's a MOSFET, its purpose is to stop current from flowing through it when turned off, and allow current to flow through it when turned on. It's not necessarily always turned on, otherwise it wouldn't be there. If it's turned off when it shouldn't be, then there is an issue elsewhere in the circuit, bridging the MOSFET won't solve it. ==='''2.7. Don't apply power to the board with missing components'''=== As a general rule, if a component is on the board, it's because it's useful for something. Engineers don't like adding a bunch of useless components on the board, it's harder to draw the schematics and route on the PCB. Some of them can be removed without creating problem if power is applied, but others can kill the board with no possibility of repair. For example, if you remove a buck controller or a MOSFET driver, the MOSFET gates will be floating. They'll charge up enough so that the MOSFET turns on. Of course, you don't want the 19V from the main power rail to go straight through the CPU VCore MOSFET to the CPU. __FORCETOC__ [[Category:Mac]] [[Category:Troubleshooting Guide]] gby93tedes5t2zquvzy6smnwa8xn04o Beyond Economical Repair (BER) 0 1821 5349 2020-12-23T18:25:16Z QuiveryNut 206 Created page with "When a repair will cost the customer more than the device is worth." 5349 wikitext text/x-wiki When a repair will cost the customer more than the device is worth. i4lkr4kmu8dp6jx6ggxd1hp8xz2ecsw Big Sur Upgrade Loop 0 1891 5566 5565 2021-02-11T22:08:42Z Andrewh 195 Andrewh moved page [[Big Sur Install/Update Loop]] to [[Big Sur Upgrade Loop]] without leaving a redirect 5565 wikitext text/x-wiki When upgrading to Big Sur, some users<sup>[1]</sup> may get stuck in a loop in Boot Recovery Assistant where the user has two options: * "Select a user you know the password for:" ** No passwords work (normal login password, Apple ID password, 1234, [blank], etc.) * "Forgot all passwords?" ** Using Apple ID/password to attempt to reset the user account password or using FileVault recovery key fails (Message says "The supplied account was unable to unlock this volume.") and only gives the option to restart the computer, restarting the loop. To get around the loop, the best way (so far) is to: # Hook up the Target computer (ie the one in the loop) in Target Disk Mode to a Host computer running High Sierra or Mojave<sup>[2]</sup>. # Clone the data partition to a temporary drive (e.g. with Carbon Copy Cloner). # Erase the Target computer. # Install the desired version of macOS. # During macOS setup, migrate the data back from the temporary drive. [Note 1: Initial impressions from the couple cases I've run into are that it seems to happen when the user tries to upgrade when they have little to no free space on their drive, causing the upgrade to crash, leading to the computer loading into Boot Recovery Assistant with an error that says "An error occured preparing the software update." and showing the startup disk selection menu where there are no disks available to choose to startup from, only leaving the user the options to restart or shut down, where restarting causes the loop.] [Note 2: A Host machine running Catalina or Big Sur will not work; when attempting to mount the Target computer on Catalina or Big Sur, no matter what you type for the FileVault password it will not accept it, whereas it will accept it on High Sierra or Mojave.] nkc2r9sez23755sniybv67c6fmzxihs Board Number by A Number 0 99 7700 7699 2024-10-07T13:14:35Z Francis 4 7700 wikitext text/x-wiki See [[Schematics and Boardviews Availability]] to find out if the files are currently available on the internet. ==Summary table== {| class="wikitable" style="width: 100%" ; ! colspan="7" width="885" |<h3><strong>MacBook Pro Unibody</strong></h3> |- !<strong>Screen Size</strong> !<strong>EMC</strong> !<strong>Model N°</strong> !<strong>Date</strong> !<strong>Model ID</strong> ! colspan="2" |<strong>Board Number</strong> |- ! style="font-weight: 400;" |<strong>13</strong> | style="font-weight: 400;" |EMC 2326 | style="font-weight: 400;" |A1278 | style="font-weight: 400;" |Mid 2009 | style="font-weight: 400;" |MacBookPro5,5 | style="font-weight: 400;" |820-2530 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2351 | style="font-weight: 400;" |A1278 | style="font-weight: 400;" |Mid 2010 | style="font-weight: 400;" |MacBookPro7,1 | style="font-weight: 400;" |820-2879 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2419 | style="font-weight: 400;" |A1278 | style="font-weight: 400;" |Early 2011 | style="font-weight: 400;" |MacBookPro8,1 | style="font-weight: 400;" |820-2936 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2555 | style="font-weight: 400;" |A1278 | style="font-weight: 400;" |Late 2011 | style="font-weight: 400;" |MacBookPro8,1 | style="font-weight: 400;" |820-2936 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2554 | style="font-weight: 400;" |A1278 | style="font-weight: 400;" |Mid 2012 | style="font-weight: 400;" |MacBookPro9,2 | style="font-weight: 400;" |820-3115 | style="font-weight: 400;" | |- ! style="font-weight: 400;" |<strong>15</strong> | style="font-weight: 400;" |EMC 2255 | style="font-weight: 400;" |A1286 | style="font-weight: 400;" |Late 2008 | style="font-weight: 400;" |MacBookPro5,1 | style="font-weight: 400;" |820-2330 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2325 | style="font-weight: 400;" |A1286 | style="font-weight: 400;" |Mid 2009 | style="font-weight: 400;" |MacBookPro5,3 | style="font-weight: 400;" |820-2532 | style="font-weight: 400;" |820-2330 |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2324 | style="font-weight: 400;" |A1286 | style="font-weight: 400;" |Mid 2009 2.5Ghz | style="font-weight: 400;" |MacBookPro5,4 | style="font-weight: 400;" |820-2533 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2353 | style="font-weight: 400;" |A1286 | style="font-weight: 400;" |Mid 2010 | style="font-weight: 400;" |MacBookPro6,2 | style="font-weight: 400;" |820-2850 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2353-1 | style="font-weight: 400;" |A1286 | style="font-weight: 400;" |Early 2011 | style="font-weight: 400;" |MacBookPro8,2 | style="font-weight: 400;" |820-2915 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2363 | style="font-weight: 400;" |A1286 | style="font-weight: 400;" |Late 2011 | style="font-weight: 400;" |MacBookPro8,2 | style="font-weight: 400;" |820-2915 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2556 | style="font-weight: 400;" |A1286 | style="font-weight: 400;" |Mid 2012 | style="font-weight: 400;" |MacBookPro9,1 | style="font-weight: 400;" |820-3330 | style="font-weight: 400;" | |- ! style="font-weight: 400;" |<strong>17</strong> | style="font-weight: 400;" |EMC 2272 | style="font-weight: 400;" |A1297 | style="font-weight: 400;" |Early 2009 | style="font-weight: 400;" |MacBookPro5,2 | style="font-weight: 400;" |820-2390 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2329 | style="font-weight: 400;" |A1297 | style="font-weight: 400;" |Mid 2009 | style="font-weight: 400;" |MacBookPro5,2 | style="font-weight: 400;" |820-2610 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2352 | style="font-weight: 400;" |A1297 | style="font-weight: 400;" |Mid 2010 | style="font-weight: 400;" |MacBookPro6,1 | style="font-weight: 400;" |820-2849 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2352-1 | style="font-weight: 400;" |A1297 | style="font-weight: 400;" |Early 2011 | style="font-weight: 400;" |MacBookPro8,3 | style="font-weight: 400;" |820-2914 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2564 | style="font-weight: 400;" |A1297 | style="font-weight: 400;" |Late 2011 | style="font-weight: 400;" |MacBookPro8,3 | style="font-weight: 400;" |820-2914 | style="font-weight: 400;" | |} {| class="wikitable" style="width: 100%" width="885" ; ! colspan="7" width="885" |<h3>MacBook Pro Retina</h3> |- !<strong>Screen Size</strong> !<strong>EMC</strong> !<strong>Model N°</strong> !<strong>Date</strong> !<strong>Model ID</strong> ! colspan="2" |<strong>Board Number</strong> |- ! style="font-weight: 400;" |<strong>13</strong> | style="font-weight: 400;" |EMC 2557 | style="font-weight: 400;" |A1425 | style="font-weight: 400;" |Late 2012 | style="font-weight: 400;" |MacBookPro10,2 | style="font-weight: 400;" |820-3462 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2672 | style="font-weight: 400;" |A1425 | style="font-weight: 400;" |Early 2013 | style="font-weight: 400;" |MacBookPro10,2 | style="font-weight: 400;" |820-3190 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2678 | style="font-weight: 400;" |A1502 | style="font-weight: 400;" |Late 2013 | style="font-weight: 400;" |MacBookPro11,1 | style="font-weight: 400;" |820-3476 | style="font-weight: 400;" |820-3536 |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2875 | style="font-weight: 400;" |A1502 | style="font-weight: 400;" |Mid 2014 | style="font-weight: 400;" |MacBookPro11,1 | style="font-weight: 400;" |820-3476 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2835 | style="font-weight: 400;" |A1502 | style="font-weight: 400;" |Early 2015 | style="font-weight: 400;" |MacBookPro12,1 | style="font-weight: 400;" |820-4924 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2978 | style="font-weight: 400;" |A1708 | style="font-weight: 400;" |2016 2xTBT3 No TB | style="font-weight: 400;" |MacBookPro13,1 | style="font-weight: 400;" |820-00875 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 3071 | style="font-weight: 400;" |A1706 | style="font-weight: 400;" |2016 4xTBT3 TB | style="font-weight: 400;" |MacBookPro13,2 | style="font-weight: 400;" |820-00239 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 3164 | style="font-weight: 400;" |A1708 | style="font-weight: 400;" |Mid 2017 2xTBT3 No TB | style="font-weight: 400;" |MacBookPro14,1 | style="font-weight: 400;" |820-00840 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 3163 | style="font-weight: 400;" |A1706 | style="font-weight: 400;" |Mid 2017 4xTBT3 TB | style="font-weight: 400;" |MacBookPro14,2 | style="font-weight: 400;" |820-00923 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 3124 | style="font-weight: 400;" |A1989 | style="font-weight: 400;" |2018 4xTBT3 TB | style="font-weight: 400;" |MacBookPro15,2 | style="font-weight: 400;" |820-00850 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 3358 | style="font-weight: 400;" |A1989 | style="font-weight: 400;" |2019 4xTBT3 TB | style="font-weight: 400;" |MacBookPro15,2 | style="font-weight: 400;" |820-00850 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 3301 | style="font-weight: 400;" |A2159 | style="font-weight: 400;" |2019 2xTBT3 TB | style="font-weight: 400;" |MacBookPro15,4 | style="font-weight: 400;" |820-01598 | style="font-weight: 400;" | |- | |EMC 3456 |A2289 |2020 2xTBT3 TB |MacBookPro16,3 |820-01987 | |- | |EMC 3348 |A2251 |2020 4XTBT3 TB |MacBookPro16,2 |820-01949 | |- | |EMC 8162 |A2338 |Late 2020 M1 |MacBookPro17,1 |820-02020 | |- | |EMC 8162 |A2338 |Mid 2022 M2 |Mac14,7 |820-02773 | |- !<strong>14</strong> |EMC 3650 |A2442 |Late 2021 M1 |MacBookPro18,3 |820-02098 | |- | |EMC 3650 |A2442 |Late 2021 M1 |MacBookPro18,4 |820-02098 | |- | |EMC 8102 |A2779 |2023 M2 Pro |Mac14,9 | | |- | |EMC 8102 |A2779 |2023 M2 Max |Mac14,5 | | |- | |EMC 8407 |A2992 |2023 M3 Pro |Mac15,6 | | |- | |EMC 8407 |A2992 |2023 M3 Max 14-core |Mac15,10 | | |- | |EMC 8407 |A2992 |2023 M3 Max 16-core |Mac15,8 | | |- ! style="font-weight: 400;" |<strong>15</strong> | style="font-weight: 400;" |EMC 2512 | style="font-weight: 400;" |A1398 | style="font-weight: 400;" |Mid 2012 | style="font-weight: 400;" |MacBookPro10,1 | style="font-weight: 400;" |820-3332 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2673 | style="font-weight: 400;" |A1398 | style="font-weight: 400;" |Early 2013 | style="font-weight: 400;" |MacBookPro10,1 | style="font-weight: 400;" |820-3332 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2674 | style="font-weight: 400;" |A1398 | style="font-weight: 400;" |Late 2013 | style="font-weight: 400;" |MacBookPro11,2 | style="font-weight: 400;" |820-3662 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2876 | style="font-weight: 400;" |A1398 | style="font-weight: 400;" |Late 2013 | style="font-weight: 400;" |MacBookPro11,2 | style="font-weight: 400;" |820-3787 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2745 | style="font-weight: 400;" |A1398 | style="font-weight: 400;" |Mid 2014 | style="font-weight: 400;" |MacBookPro11,3 | style="font-weight: 400;" |820-3662 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2881 | style="font-weight: 400;" |A1398 | style="font-weight: 400;" |Mid 2014 | style="font-weight: 400;" |MacBookPro11,3 | style="font-weight: 400;" |820-3787 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2909 | style="font-weight: 400;" |A1398 | style="font-weight: 400;" |Mid 2015 | style="font-weight: 400;" |MacBookPro11,4 | style="font-weight: 400;" |820-00138 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2910 | style="font-weight: 400;" |A1398 | style="font-weight: 400;" |Mid 2015 | style="font-weight: 400;" |MacBookPro11,5 | style="font-weight: 400;" |820-00163 | style="font-weight: 400;" |820-00426 |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 3072 | style="font-weight: 400;" |A1707 | style="font-weight: 400;" |Late 2016 | style="font-weight: 400;" |MacBookPro13,3 | style="font-weight: 400;" |820-00281 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 3162 | style="font-weight: 400;" |A1707 | style="font-weight: 400;" |Mid 2017 | style="font-weight: 400;" |MacBookPro14,3 |820-00928 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC3215 | style="font-weight: 400;" |A1990 | style="font-weight: 400;" |Mid 2018 | style="font-weight: 400;" |MacBookPro15,1 |820-01041 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC3215 | style="font-weight: 400;" |A1990 | style="font-weight: 400;" |Mid 2018 | style="font-weight: 400;" |MacBookPro15,3 |820-01041 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 3359 | style="font-weight: 400;" |A1990 | style="font-weight: 400;" |2019 | style="font-weight: 400;" |MacBookPro15,1 | style="font-weight: 400;" |820-01814 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 3359 | style="font-weight: 400;" |A1990 | style="font-weight: 400;" |2019 | style="font-weight: 400;" |MacBookPro15,3 |820-01814 | style="font-weight: 400;" | |- ! style="font-weight: 400;" |<strong>16</strong> | style="font-weight: 400;" |EMC 3347 | style="font-weight: 400;" |A2141 | style="font-weight: 400;" |2019 | style="font-weight: 400;" |MacBookPro16,1 |820-01700 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 3651 | style="font-weight: 400;" |A2485 | style="font-weight: 400;" |2021 M1 | style="font-weight: 400;" |MacBookProXX,X | style="font-weight: 400;" |820-02100 | style="font-weight: 400;" | |- | |EMC 3651 |A2485 |2021 M1 |MacBookPro18,1 |820-02382 | |- | |EMC 3651 |A2485 |2021 M1 |MacBookPro18,2 |820-02382 | |- | |EMC 8103 |A2780 |2023 M2 Pro |Mac14,10 | | |- | |EMC 8103 |A2780 |2023 M2 Max |Mac14,6 | | |- | |EMC 8408 |A2991 |2023 M3 Pro |Mac15,7 | | |- | |EMC 8408 |A2991 |2023 M3 Max 14-core |Mac15,11 | | |- | |EMC 8408 |A2991 |2023 M3 Max 16-core |Mac15,9 | | |} {| class="wikitable" style="width: 100%" width="885" ; ! colspan="7" width="885" |<h3>MacBook Air</h3> |- !<strong>Screen Size</strong> !<strong>EMC</strong> !<strong>Model N°</strong> !<strong>Date</strong> !<strong>Model ID</strong> ! colspan="2" |<strong>Board Number</strong> |- ! style="font-weight: 400;" |<strong>11</strong> | style="font-weight: 400;" |EMC 2393 | style="font-weight: 400;" |A1370 | style="font-weight: 400;" |Late 2010 | style="font-weight: 400;" |MacBookAir3,1 | style="font-weight: 400;" |820-2796 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2471 | style="font-weight: 400;" |A1370 | style="font-weight: 400;" |Mid 2011 | style="font-weight: 400;" |MacBookAir4,1 | style="font-weight: 400;" |820-3024 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2558 | style="font-weight: 400;" |A1465 | style="font-weight: 400;" |Mid 2012 | style="font-weight: 400;" |MacBookAir5,1 | style="font-weight: 400;" |820-3208 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2631 | style="font-weight: 400;" |A1465 | style="font-weight: 400;" |Mid 2013 | style="font-weight: 400;" |MacBookAir6,1 | style="font-weight: 400;" |820-3435 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2631 | style="font-weight: 400;" |A1465 | style="font-weight: 400;" |Early 2014 | style="font-weight: 400;" |MacBookAir6,1 | style="font-weight: 400;" |820-3435 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2924 | style="font-weight: 400;" |A1465 | style="font-weight: 400;" |Early 2015 | style="font-weight: 400;" |MacBookAir7,1 | style="font-weight: 400;" |820-00164 | style="font-weight: 400;" | |- ! style="font-weight: 400;" |<strong>13</strong> | style="font-weight: 400;" |EMC 2334 | style="font-weight: 400;" |A1304 | style="font-weight: 400;" |Mid 2009 | style="font-weight: 400;" |MacBookAir2,1 | style="font-weight: 400;" |820-2375 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2392 | style="font-weight: 400;" |A1369 | style="font-weight: 400;" |Late 2010 | style="font-weight: 400;" |MacBookAir3,2 | style="font-weight: 400;" |820-2838 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2469 | style="font-weight: 400;" |A1369 | style="font-weight: 400;" |Mid 2011 | style="font-weight: 400;" |MacBookAir4,2 | style="font-weight: 400;" |820-3023 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2559 | style="font-weight: 400;" |A1466 | style="font-weight: 400;" |Mid 2012 | style="font-weight: 400;" |MacBookAir5,2 | style="font-weight: 400;" |820-3209 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2632 | style="font-weight: 400;" |A1466 | style="font-weight: 400;" |Mid 2013 | style="font-weight: 400;" |MacBookAir6,2 | style="font-weight: 400;" |820-3437 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 2632 | style="font-weight: 400;" |A1466 | style="font-weight: 400;" |Early 2014 | style="font-weight: 400;" |MacBookAir6,2 | style="font-weight: 400;" |820-3437 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC2925 | style="font-weight: 400;" |A1466 | style="font-weight: 400;" |Early 2015 | style="font-weight: 400;" |MacBookAir7,2 | style="font-weight: 400;" |820-00165 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 3178 | style="font-weight: 400;" |A1466 | style="font-weight: 400;" |2017 | style="font-weight: 400;" |MacBookAir7,2 | style="font-weight: 400;" |820-00165 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 3184 | style="font-weight: 400;" |A1932 | style="font-weight: 400;" |Late 2018 | style="font-weight: 400;" |MacBookAir8,1 | style="font-weight: 400;" |820-01521 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 3184 | style="font-weight: 400;" |A1932 | style="font-weight: 400;" |True Tone 2019 | style="font-weight: 400;" |MacBookAir8,2 |820-01521 | style="font-weight: 400;" | |- | style="font-weight: 400;" | | style="font-weight: 400;" |EMC 3302 | style="font-weight: 400;" |A2179 | style="font-weight: 400;" |Early 2020 | style="font-weight: 400;" |MacBookAir9,1 | style="font-weight: 400;" |820-01958 | style="font-weight: 400;" | |- | |EMC 3598 |A2337 |Late 2020 M1 |MacBookAir10,1 |820-02016 | |- | |EMC 4074 |A2681 |Mid 2022 M2 |Mac14,2 |820-02536 | |- | |EMC 8611 |A3113 |2024 |Mac15,12 |820-03285 | |- !<strong>15</strong> |EMC 8301 |A2941 |2023 |Mac14,15 | | |- | |EMC 8612 |A3114 |2024 |Mac15,13 | | |} ==11”== ===A1370 MacBook Air 11" MagSafe 1=== 820-2796 2010 MacBook Air 11"<br> 820-3024 2011 MacBook Air 11" ===A1465 MacBook Air 11" MagSafe 2=== 820-3208 2012 MacBook Air 11"<br> 820-3435 2013/2014 MacBook Air 11"<br> 820-00164 2015 MacBook Air 11" ==12”== ===A1534 MacBook 12"=== 820-00045 2015 MacBook 12"<br> 820-00244 2016 MacBook 12"<br> 820-00687 2017 MacBook 12" ==13”== ===A1181 MacBook=== 820-1889 2006/M2007 MacBook T2400/T2500/T5600/T7200/T7400<br> 820-2213 M2007 MacBook T7200/T7400<br> 820-2279 L2007/E2008/White L2008 MacBook<br> 820-2496 2009 MacBook<br> ===A1237 MacBook Air 2008=== 820-2179 MacBook Air 13" E2008 ===A1278 Macbook (Pro) 13" Unibody=== 820-2327 2008 MacBook Unibody<br> 820-2530 2009 MacBook Pro 13"<br> 820-2879 2010 MacBook Pro 13"<br> 820-2936 2011 MacBook Pro 13"<br> 820-3115 2012 MacBook Pro 13" ===A1304 MacBook Air 2009=== 820-2375 MacBook Air 13" L2008/2009 ===A1342 Plastic MacBook=== 820-2567 2009 MacBook Unibody<br> 820-2883 2009 MacBook Unibody (Early 2010 board revision)<br> 820-2877 2010 MacBook Unibody ===A1369 MacBook Air 13" MagSafe 1=== 820-2838 2010 MacBook Air 13"<br> 820-3023 2011 MacBook Air 13" ===A1425 MacBook Pro 13" Retina=== 820-3462/3190 2012/E2013 MacBook Pro 13" Retina ===A1466 MacBook Air 13" MagSafe 2=== 820-3209 2012 MacBook Air 13"<br> 820-3437 2013/2014 MacBook Air 13"<br> 820-00165 2015/2017 MacBook Air 13" ===A1502 MacBook Pro 13" Retina=== 820-3476 L2013/2014 MacBook Pro 13" Retina<br> 820-3536 L2013 MacBook Pro 13" Retina 4GB RAM<br> 820-4924 2015 MacBook Pro 13" Retina ===A1706 MacBook Pro 13" Touch Bar=== 820-00239 2016 MacBook Pro 13" Touch Bar<br> 820-00923 2017 MacBook Pro 13" Touch Bar ===A1708 MacBook Pro 13" Two USB C=== 820-00875 2016 MacBook Pro 13" Two USB C<br> 820-00840 2017 MacBook Pro 13" Two USB C ===A1932 MacBook Air 13"=== 820-01521 2018 MacBook Air 13" 820-01521 2019 MacBook Air 13" ===A1989 MacBook Pro 13" Touch Bar=== 820-00850 2018 MacBook Pro 13" Touch Bar<br> 820-00850 2019 MacBook Pro 13" Touch Bar ===A2159 MacBook Pro 13" Touch Bar Two USB C=== 820-01598 2019 MacBook Pro 13" ===A2179 MacBook Air 13"=== 820-01958 2020 MacBook Air 13" ===A2251 MacBook Pro 13" Touch Bar 4 TBT3=== 820-01949 2020 MacBook Pro 13" Touch Bar 4 TBT3 ===A2289 MacBook Pro 13" Touch Bar 2 TBT3=== 820-01987 2020 MacBook Pro 13" Touch Bar 2 TBT3 ===A2337 MacBook Air 13" M1=== 820-02016 2020 MacBook Air 13" M1 ===A2338 MacBook Pro 13" M1/M2=== 820-02020 2020 MacBook Pro 13" M1<br> 820-02773 2022 MacBook Pro 13" M2 ===A2681 MacBook Air 13" M2=== 820-02536 2022 MacBook Air 13" M2 ==14”== ===A2442 MacBook Pro 14" M1=== 820-02098 2021 MacBook Pro 14" M1 ===A2779 MacBook Pro 14" M2=== 820-02841 2023 MacBook Pro 14" M2 ===A2992 MacBook Pro 14" M3 Pro=== 820-02918 2023 MacBook Pro 14" M3 ==15”== ===A1150 MacBook Pro 15" E2006=== 820-1881 T2400/T2500/T2600<br> 820-1993 T2400/T2500/T2600<br> 820-2056 T2600 ===A1211 MacBook Pro 15" L2006=== 820-2054 ===A1226 MacBook Pro 15" 2007=== 820-2101 ===A1260 MacBook Pro 15" E2008=== 820-2249 MacBook Pro 15” E2008 ===A1286 MacBook Pro 15" Unibody=== 820-2330 L2008/E2009 MacBook Pro 15"<br> 820-2523 M2009 with dGPU<br> 820-2532 E2009 MacBook Pro 15" dGPU<br> 820-2533 M2009 MacBook Pro 15" iGPU<br> 820-2850 2010 MacBook Pro 15"<br> 820-2915 2011 MacBook Pro 15"<br> 820-3330 2012 MacBook Pro 15" ===A1398 MacBook Pro 15" Retina=== 820-3332 2012/E2013 MacBook Pro 15" Retina<br> 820-3662 L2013/2014 MacBook Pro 15" Retina iGPU<br> 820-3787 L2013/2014 MacBook Pro 15" Retina dGPU<br> 820-00138 2015 MacBook Pro 15" Retina iGPU<br> 820-00163/820-00426 2015 MacBook Pro 15" Retina dGPU ===A1707 MacBook Pro 15" Touch Bar=== 820-00281 2016 MacBook Pro 15" Touch Bar<br> 820-00928 2017 MacBook Pro 15" Touch Bar ===A1990 MacBook Pro 15" Touch Bar=== 820-01041 2018 MacBook Pro 15" Touch Bar<br> 820-01326 2018 MacBook Pro 15" Touch Bar Radeon Pro Vega<br> 820-01814 2019 MacBook Pro 15" Touch Bar<br> 820-01827 2019 MacBook Pro 15" Touch Bar Radeon Pro Vega ==16”== ===A2141 MacBook Pro 16"=== 820-01700 2019 MacBook Pro 16" Radeon Pro 5300M/5500M<br> 820-02037 2019 MacBook Pro 16" Radeon Pro 5600M ===A2485 MacBook Pro 16" M1=== 820-02100 2021 MacBook Pro 16" M1 Pro<br> 820-02382 2021 MacBook Pro 16" M1 Pro ===A2780 MacBook Pro 16" M2=== 820-02890 2023 MacBook Pro 16" M2 Pro ==17”== ===A1151 MacBook Pro 17" E2006=== 820-2023 ===A1173 iMac 17" E2006=== 820-1919 ===A1195 iMac 17" M/L2006=== 820-1960 M2006 iMac 17"<br> 820-2090 L2006 iMac 17" Intel GMA 950 ===A1208 iMac 17" L2006=== 820-2052 L2006 iMac 17" ATi Radeon X1600 ===A1212 MacBook Pro 17" L2006=== 820-2059 ===A1229 MacBook Pro 17" 2007=== 820-2132 ===A1261 MacBook Pro 17" 2008=== 820-2262 ===A1297 MacBook Pro 17" Unibody=== 820-2390 E2009 MacBook Pro 17"<br> 820-2610 M2009 MacBook Pro 17"<br> 820-2849 2010 MacBook Pro 17"<br> 820-2914 2011 MacBook Pro 17" ==20”== ===A1174 iMac 20"=== 820-1888 ===A1207 iMac 20"=== 820-2031 ===A1224 iMac 20" Aluminum=== 820-2143 2007 20" iMac<br> 820-2223 2008 20" iMac<br> 820-2347 2009 20" iMac<br> 820-2542 (2009)/2010 20" iMac Edu ==21.5”== ===A1311 iMac 21.5" Unibody=== 820-2494 2009 21.5" iMac<br> 820-2784 2010 21.5" iMac<br> 820-2641 2011 21.5" iMac i5-2400s<br> 820-3126 2011 21.5" iMac ===A1418 iMac 21.5 Slim=== 820-3302 2012 iMac 21.5"<br> 820-3172 E2013 iMac 21.5" Edu<br> 820-3482 L2013 iMac 21.5"<br> 820-3588 L2013 iMac 21.5"iGPU<br> 820-4668 2014 iMac 21.5"<br> 820-00034/820-00430 2015 iMac 21.5" Dual Core<br> 820-00431 2015 iMac 21.5" 4K<br> 820-00597 2017 iMac 21.5" 4K<br> 820-00629/820-01069 2017 iMac 21.5"<br> 820-01061 L2017 iMac 21.5" 4K Core i5 7400 3.00GHz<br> ===A2116 iMac 21.5" 4K=== 820-01237 2019 iMac 21.5" ==24”== ===A1200 iMac 24"=== 820-1984 ===A1225 iMac 24" Aluminum=== 820-2110 2007 24" iMac<br> 820-2301 2008 24" iMac<br> 820-2491 2009 24" iMac ===A2438 iMac 24" M1 4× USB-C=== 820-02009 ===A2439 iMac 24" M1 2× USB-C=== 820-02188 ==27”== ===A1312 iMac 27" Unibody=== 820-2507 2009 27" iMac Core2Duo<br> 820-2733 2009 27" iMac i5/i7<br> 820-2901 2010 27" iMac<br> 820-2828 2011 27" iMac ===A1419 iMac 27" Slim=== 820-3298 2012 iMac 27" 512MB VRAM<br> 820-3299 2012 iMac 27"1/2GB VRAM<br> 820-3478 2013 iMac 27" 1GB VRAM<br> 820-3481 2013 iMac 27" 2GB VRAM<br> 820-4652 L2014/M2015 iMac 27" Radeon R9 M290/M290X<br> 820-5029 L2014 iMac 27" Radeon R9 M295X<br> 820-00134 L2015 iMac 27" Radeon R9 M395<br> 820-00291 L2015 iMac 27" Radeon R9 M380/M390<br> 820-00292 L2015 iMac 27" Radeon R9 M390<br> 820-00609/820-01134 2017 iMac 27" ===A1862 iMac Pro=== 820-00967 2017 iMac Pro ===A2115 iMac 27" 5K=== 820-01236 2019 iMac 27"<br> 820-01779 2020 iMac 27" Radeon Pro 5300/5500 XT<br> 820-01823 2020 iMac 27" Radeon Pro 5700/5700 XT ==*== ===A1176 Mac mini 2006/2007=== 820-1900 ===A1283 Mac mini 2009=== 820-2366 ===A1347 Mac mini=== 820-2577 Mac mini 2010 320M<br> 820-2993 Mac mini 2011 Dual-core HD3000<br> 820-3017 Mac mini 2011 Server Quad-core HD3000<br> 820-3059 Mac mini 2011 Dual-core 6630M<br> 820-3227 Mac mini 2012 Dual-core HD4000<br> 820-3228 Mac mini 2012 Quad-core HD4000<br> 820-5509 Mac mini 2014 HD5000 ===A1993 Mac mini=== 820-00939 Mac mini 2018<br> ===A2348 Mac mini=== 820-02091 Mac mini 2020 M1<br> ===A2816 Mac mini M2 Pro=== 820-02832 Mac mini 2023 M2 Pro __NOEDITSECTION__ [[Category:Mac]] c7xo0qwf5971x4x9w8djbtweim8goa6 Board Number by Screen Size 0 528 1149 2020-04-29T16:39:43Z Chrisb 1 Redirected page to [[Board Number by A Number]] 1149 wikitext text/x-wiki #REDIRECT [[Board Number by A Number]] pxr0iml1jhl3li7zfctsg1q206jes2h Board Number by Year 0 527 1148 2020-04-29T16:38:36Z Chrisb 1 Redirected page to [[Board Number by A Number]] 1148 wikitext text/x-wiki #REDIRECT [[Board Number by A Number]] pxr0iml1jhl3li7zfctsg1q206jes2h Boot Camp 0 2102 6316 6311 2021-12-28T13:13:32Z Piernov 10 typo 6316 wikitext text/x-wiki ==Partitioning== When installing in Legacy BIOS mode, a Hybrid MBR is required. macOS Disk Utility will automatically create a Hybrid MBR when creating a MS-DOS FAT partition if it's one of the first 4 partitions on the drive. Note that the EFI partition at the beginning of the drive is hidden so it probably limits it to the first 3 partitions. ==Quirks by model== ===MacBook Pro 17" 2007 A1229=== ====Issues==== EFI 1.x with UGA only, see [[Boot Camp#EFI 1.x UGA/UEFI 2.x GOP|EFI 1.x UGA/UEFI 2.x GOP]]. Windows cannot be installed in UEFI mode, only Legacy BIOS mode.<br> Affected by the "Select CD-ROM Boot Type:" bug (see [[Boot Camp#"Select CD-ROM Boot Type:"|"Select CD-ROM Boot Type:"]]), the workaround does not seem to work<br> Seems to be affected by the Legacy BIOS USB boot bug. (see [[Boot Camp#Legacy BIOS USB boot|Legacy BIOS USB boot]]) To install Windows: * Use a DVD-ROM that does not trigger the "Select CD-ROM Boot Type:" bug * Or perform pre-installation in Legacy BIOS mode from another machine This machine can boot Windows XP to Windows 11, however Boot Camp drivers don't work on Windows 11 (see below). ====Drivers==== Latest Boot Camp drivers package for this machine is 4.0.4033 (https://support.apple.com/kb/DL1630).<br> =====Windows 10===== The Boot Camp drivers package is designed for Windows 7 but it will also work on Windows 10, provided you enable compatibility mode on "Drivers/Apple/BootCamp64.msi" and run this file from an administrator PowerShell.<br> Note that it will install an old version of NVidia drivers which can cause issues on Windows 10, so it has to be uninstalled before installing the newest version from Windows Update or NVidia website. =====Windows 11===== The Boot Camp drivers package is not compatible with Windows 11. It will cause two separate issues: * "WDF_VIOLATION" BSoD shortly after desktop appears * 99% CPU usage, slow as hell For now there is no known solution to these issues. Also, uninstalling drivers from safe boot can help solving the first issue but not the second one. Restoring to a system restore point taken before installing the driver package or resetting Windows 11 to factory (from recovery menu) is required. As a result the following features do not work on Windows 11: * Keyboard multimedia keys * Touchpad multi-touch/right click * iSight webcam * Bluetooth * Maybe others WiFi works with drivers provided by Microsoft. ==Issues== ===Eject optical disk during installation=== It is not possible to eject the optical disc during the installation process by pressing on the "Eject" key of the keyboard. As a result, it is not possible to swap discs during installation. Therefore, Windows "upgrade-only" discs cannot be used (as they require to insert the previous Windows version disc to allow installation), and Windows editions that came on multiple discs (such as Windows XP Media Center Edition 2005) cannot be installed properly either. Either the installation will fail or the additional packs for this special edition won't be installed). On the Mac Pro you might be able to press the physical eject button of the DVD drive, although it is not available on the front panel. ===EFI 1.x UGA/UEFI 2.x GOP=== Older Macs (2008 and older? not sure) only have UGA EFI drivers available. Windows is not compatible with UGA, , so it cannot be installed in EFI mode on these machines. Actually, Windows 10 installer will boot but there will be no display. Windows is only compatible with GOP, which is what can be found on all standard UEFI. To confirm whether the machine has UGA or GOP available, install rEFInd, reboot and at the rEFInd screen go into About menu. OpenCore's "GopPassThrough" does not solve this issue, although it is required to get OpenCore GUI to load. Modern Linux distributions are not affected by this issue, they handle UGA properly, however they may be affected by another issue (VBIOS not loaded in EFI mode so some graphics drivers don't work properly). ==="Select CD-ROM Boot Type:"=== Older Macs will not be able to boot some optical discs in Legacy BIOS mode and will get stuck on a "Select CD-ROM Boot Type:" message. Issue is mainly present with burnt Windows 7 and 8 DVD.<br> On some Macs, pressing repeatedly or holding the "1" key and the "Return" key may help get past this message. Other Macs will register the "1" key press but not the "Return" key so they will still get stuck there. There is a way to burn a DVD that will not trigger this. See https://apple.stackexchange.com/questions/172048/select-cd-rom-boot-type-error-during-windows-install . ===Legacy BIOS USB boot=== Older Macs (at least 2006, some 2007 and maybe newer) will have trouble booting from USB drive in Legacy BIOS mode, whereas booting in UEFI mode works. USB optical drives may still work properly. 1cw26cfig9qrgb9awjxe1c7onzy5pd9 Booting PPC from USB 0 137 546 393 2020-02-02T11:24:49Z Piernov 10 Category Mac PowerPC 546 wikitext text/x-wiki To boot a PowerMac (or an iMac, iBook, eMac, etc...) from an USB stick or drive<ref>Original source Macintosh Repository[https://www.macintoshrepository.org/articles/115-how-to-boot-ppc-powermacs-g3-g4-g5-from-a-usb-stick-or-drive-]</ref>, if you have a G5 or late G4 model, first refer to the boot from CD guide and if it does not work, then follow these instructions: 1. Plug your USB stick or drive in an USB port 2. Power the computer on (or restart it if it's already running) and immediately... 3. ...hold down those 4 keys together: [ CMD + OPT/ALT + O + F ] until you see the white Open Firmware screen. 4. Then at the Open Firmware command prompt, type this and press ENTER: '''boot usb0/disk@1:,\\:tbxi''' ''(Please make sure that there are '''2 backslashes''' before :tbxi just in case this page contents gets screwed up in the future)'' '''Note:''' You may have to change '''usb0''' for '''usb1''' depending on which port you plugged your USB stick in.  If it still doesn't work, you can try this command: '''boot ud:,\\:tbxi''' '''Note 2:''' If you want to boot a non-Macintosh partition, say for instance a PPC Linux distribution, then change '''tbxi''' for '''yaboot''' '''Note 3:''' If you get a CAN'T OPEN error, it means that you forgot to plug in your USB stick ''BEFORE'' powering on the computer, so turn the Mac off and start over from step #1. <references /> [[Category:Mac]] [[Category:PowerPC]] fpel971xz1vbk6yiglehgnkzmuy4oxa Bootup Signal Order 0 784 5207 5206 2020-11-08T17:19:21Z Piernov 10 5207 wikitext text/x-wiki ==Ivy Bridge Haswell and Broadwell== ===Legend=== '''GREY''' boxes are power rails<br>'''GREEN''' boxes are power good signals<br>'''BLUE''' boxes are enable/reset signals<br>'''YELLOW''' boxes are clocks<br>'''ORANGE''' boxes are not a signal "coming on" but still important steps in the sequence. ---- ===S3 to S0 State for Ivy Bridge Haswell and Broadwell=== [[File:S3 to S0 State.pdf|800x800px]]<br> This comes after "G3 to S3 State for Ivy Bridge Haswell and Broadwell" and before "S0 to Reset State for Ivy Bridge Haswell and Broadwell". All credit to Piernov. ----<br /> ===S0 to Reset State for Ivy Bridge Haswell and Broadwell=== [[File:820-00165-ALL SYS PWRGD-PLT RESET L-sequence.pdf|800x800px]]<br> This comes after "S3 to S0 State for Ivy Bridge Haswell and Broadwell" and before "Reset to EFI POST State for Ivy Bridge Haswell and Broadwell". All credit to Piernov. ====Errata==== Somewhere in there, PM_SYSRST_L is required to be high, otherwise the platform will stay in a reset state. ----<br /> ===Reset to EFI POST State for Ivy Bridge Haswell and Broadwell=== [[File:Reset to EFI POST State for Ivy Bridge Haswell and Broadwell.pdf|800x800px]]<br>This comes after [[G3 to S3 State for Ivy Bridge Haswell and Broadwell]]. All credit to Piernov. 90xz98z6pfxkuvf1ck6zeowjz2gwswb CD3215 Bootup Sequence 0 18 7033 6946 2023-12-16T14:21:30Z Inwerp 16 7033 wikitext text/x-wiki == CD3215 Revisions == CD3215 is a customized version of TPS65982/86 Texas Instruments power controller. Due to OTP configuration it is not compatible with OEM TPS chip. OTP configuration is coded in suffix: B01, B03, C01, C03. B and C series are not the same. B03 is used on some A1708/06 logicboards (2016) and can be replaced with C series if you swap all chips. B01 and B03 are interchangable on A1534 boards, but C revision seem not to work. == 20V Sequence == [[File:A1706_USB-C_Sequence.jpg|none|frame|20V sequence]] '''Bold text'''==Getting 20V on the charger== If a CD3215 does not have the LDO outputs, test the lines for shorts, otherwise the chip is missing power or bad. [http://www.ti.com/lit/ds/slvsd13c/slvsd13c.pdf Data sheet] of closest Ti chip.<br><br>A bad CD3215 can often cause a loop at step 10. All of the CD3215s need to be fully functional and communicate with the SMC before the CD3215 connected to the charger will request 20V. The TBT ROM is required to get to 20V. It is powered by the CD3215 on the opposite side. It will not boot unless it can communicate. It seems with liquid in that area, the trace between the LDO of the CD3215 and TBT ROM gets damaged at the test point. Without communication with the TBT ROM, the 1.1V BMC LDO (PIN 35) won't come up while other LDOs will be present. The 1.1V BMC LDO is used to drive the logic negotiating USB-PD (USB 2.0 communications to charger). When that happens, when USB-C is connected to this CD3215, it will not negotiate 20V and get stuck on 5V, not cycling. When one CD3215 in the system is bad, it will often cause others to not work as well, and they will often be power cycling after starting USB-PD negotiation as a result. The CD3215 in one pair work in a master-slave fashion. For example on 820-00281, U3200 is the master while U3100 is the slave. The master is connected directly to the TBT ROM (U2890), while the slave (U3100) reads the TBT ROM firmware through the master (U3200). As a result, if the master (U3200) is not working properly, the slave (U3100) won't work either. If all ports in all orientations are stuck at 5V, not power cycling, 1.1V BMC LDOs are good and the CC1/CC2 show good diode mode measurements, then there is probably an issue related to the communication between SMC and the USB-C controllers. Make sure to check that SMC_RESET_L and SMC_USBC_INT_L are properly pulled up to 3.3V. Please note, the chip designations and net names are from an A1706. {| class="wikitable sortable mw-collapsible" |+Steps Before 20V on Charger |- |'''Step'''||'''Source'''||'''Name of Net'''||'''Voltage''' |- |1||J3300||PP20V_USBC_XB_VBUS||5V |- |2||U3200 (Check these voltages on each CD3215) |PP3V3_UPC_XB_LDO||3.3V |- | || ||PP1V8_UPC_XB_LDOA||1.8V |- | || ||PP1V8_UPC_XB_LDOD||1.8V |- | || ||PP1V1_UPC_XB_LDO_BMC '''(On active port after reading TBT ROM)''' BMC stands for "Binary Mark Code" which is a communication protocol for PD interface. Lack of this LDO is a clear indicator that either cd3215 is failed or its bootcode is corrupted<br /> |1.1V |- |3||U3200||HV_GATE1||High(5v, later 20V)(Air 10v, later 20V) |- | ||U3200||HV_GATE2||High(5v, later 20V)(Air 7.8v, later 20V) |- |4||Q3200||PPDCIN_G3H||5V |- |5||U7000||TBA_VDDA (PPCHGR_VDDA)||5V |- |6||U7000||PM_EN_P3V3_G3H (NC_CHGR_EN_VR1)||3.3V (5V on many boards) |- |7||U6903||PP3V3_G3H||3.3V |- |8||U5000||PP1V2_G3H_SMC_VDDC or PP1V2_S5_SMC_VDDC||1.2V |- |9||U5165||PP3V0_G3H_AVREF_SMC or PP3V0_S5_AVREF_SMC||3.0V |- |9.1 |U7000 |SMC_RST |3.3v |- |10||U5000||SMBUS_SMC_4_G3H_SCL||3.3V (clock) |- | ||U5000||SMBUS_SMC_4_G3H_SDA||3.3V (data) |- |11||U3200||USB_XB_CC1 (USBC_XB_CC1)||0.8V (data) (verify) |- | ||U3200||USB_XB_CC2 (USBC_XB_CC2)||0.8V (data) (verify) |- |12||J3300||PP20V_USBC_XB_VBUS||20V |- | ||J3300||PP20V_USBC_XB_VBUS||20V |- |13||J3300||HV_GATE1||>20V |- | ||J3300||HV_GATE2||>20V |- |14||Q3200||PPDCIN_G3H||20V |- |15||R7015||TBA_AUX_DET||5V |- |16||U7000||SMC_RST_L||3.3 (verify) |- |17||U7000||Q7030 Q7040 opening||Unknown (low maybe) |} ==Booting fully== Thunderbolt ROM is required to get 20V o as well as proper communication between all CD3215 chips, TBT Rom and SMC/T2. However, Thunderbolt controller itself might prevent TBT ROM from being read. TBT SPI chip is shared between CD3215 and TBT Controller, so if you have damage around TBT area, it would be a good idea to disconnect TBT IC from TBT SPI (instead of desoldering just move straps between TBT IC and TBT SPI. TBT Rom is only necessary on the side you have charger plugged in. If you remove TBT rom on inactive side, it will not prevent other side to switch into 20V(confirmed on T2 boards). After you remove an underfilled chip, it is a good idea to check all pads which have vias underneath it. Even if pad seem fine, there might be a broken via. Use Diode mode and check such lines as i2C_UPC_T_SDA/SCL/INT. almost all datalines are usually 0.4V voltage drop. By waterdamage check UPC_TA_DBG* pulldown resisters - if this line is floating, this will cause master not to read SPI ROM. [https://logi.wiki/index.php/MacBook_Diode_Mode_Measurements#CD3215C Diode measurements on #CD3215C footprint] ==Troubleshooting Techniques== <youtube>6fEQS1MsZIw</youtube> ==Extra Data== ===piernov 11.8.2020 at 9:29 AM=== @ChrisB [VA, US] U3100/U3200 were 5V not cycling. U3200 was missing 1.1V BMC LDO. U3100 is missing it too, however it's the slave so it gets the TBT firmware through U3200 so that's normal. (I'm not sure if the slave could cause the master to have missing 1.1V BMC LDO though) At one point U3200 3.3V LDO was sending out 4.2V, so that was going to the TBT ROM (U2890) as well, I doubt it damaged it but it's a possibility. UB300 and UB400 were power cycling with 1.1V BMC LDO present, so they seem to be working fine, cycling being caused by the other pair. → Bad TBT ROM U2890 (1:24:00) <youtube>https://www.youtube.com/watch?v=alhLFikA3g8</youtube> ===Satyrcon 11.12.2020=== Issue: 820-00840 wont take anything from charger, either port, or orientation. Visible inspection resulted in marks on CC1/2 pins on both USB-C ports. Diode mode measurement showed ~0.550V on 3 of them, one ~0.040V. Replacing the port fixed the issue. Conclusion: One damaged CC pin can cause the whole lot to stop functioning. ===Nrjnapu 08.05.2021=== 820-00840 and 820-00875: U3100/U3200 were 5V not cycling. All LDO voltages were present. If battery is connected goes to 20V but 0mA and PPDCIN_G3H is 0V because Q32100/Q3200 closed due to 0v on UPC_XA_GATE1/UPC_XB_GATE1 . SMBUS_SMC_4_G3_SCL and SMBUS_SMC_4_G3_SDA at Step10 were 3.42V without any pull down, i.e. no communication between SMC and U3100/U3200. Resolved by reflowing SMC chip on 820-00875 and SMC replacement in case of 820-00840. Conclusion: communication between SMC and U3100/U3200 should be checked at Step10 by using oscilloscope. ===Dusten Mahathy 11.27.21=== 820-00928 5v and 100mA for about 10 seconds then would jump to 20v 60mA - PPBUS not being generated. Initially found short on SMBUS_SMC_5_G3_SDA caused by D6950. After diode replacement, same result. Resolved issue by replacing SMC. Voltages I had *PPBUS_G3H - 0.300 *PP3V3_G3H - 3.4 *TBA_GATE_Q1 - 0 *TBA_GATE_Q2 - 0 *TBA_GATE_Q3 - 0 *TBA_GATE_Q4 - 0 *PPVIN_G3H_P3V3G3H - 19.8 *TBA_AUX_DET - 5.07 *HPWR_EN_L - 3.36 *SMC_RESET_L - 3.4 *TBA_VDDA - 5.07 *TBA_VDDP - 5.07 *PM_EN_P3V3_G3H - 5.08 *PPDCIN_G3H_CHGR - 19.8 *SMC_BC_ACOK - 3.4 *CHGR_AMON - 0 *CHGR_BMON - 0 '''Guruji 17.01.2022''' 820-01041 I had no shorts in anyone of the usbc ports PP3V3_G3H_RTC_X 3.3V PP3V3_UPC_XA_LDO 3.3V USBC_XA_CC2 WAS GIVING ME COMMUNICATION ON OSCILLOSCOPE USBC_XA_CC1 SAME WAS COMMUNICATING UPC_XA_FAULT_XA FLAG IS 0V WHEN ANY PORTS ARE BAD PP1V8_UPC_XA_LDO 1.8V PP1V8_SLPS2R 1.76V 12C_TBT_XA_INT_L 1.8 PP1V1_UPC_XA_LDO_BMC 1.1V I2C_UPC_XA_BDG_CTL_SDA 0.8V ERROR R3108 I2C_UPC_XA_DBG_CTL_SCL 1V ERROR R3109 SO THE RESISTORS WHERE BAD r3108 &R3109 ARE 1MEG WHICH GAVE ME WEIRD VALUES AND ALSO THESE RESISTOR MUCH BE PULLED UP WHICH THE TRACE TO PP3V3_UPC_XA_LDO WERE OPEN TRACE . SOLUTION: CHANGED THE r3109 AND r3108 AND REPAIR THE TRACE GAVE ME 20v AND VOILA LAPTOP POWERED ON. '''Leshuq 17.02.2022 ''' Some words about '''820-00840''' and it's compatibility with different revisions of CD3215: As we know, 820-00840 comes with CD3215'''C00''' revision and won't accept anything else. Recently I've got my way around this. I've got 820-00361 '''DVT''' board that came with factory '''B03''' revision chips. Board looks quite similar to 00840. In charging curcuitry I think the only difference it the TBT ROM, which is U2890. So I decided to pull TBT ROM from 00361 and put it to 00840. Well, that worked. Now my 00840 board accepts '''B01''' and '''B03''' revisions as well. Didn't tried putting back C00, though. For those curious I've dumped the original contents of 00361 board's TBT ROM and uploaded them [https://repo.doslabelectronics.com/system_images/tbt/U2890_ROM_for_B01_B03_support.BIN here]. ===[https://it-solve.au/macbook-repairs-adelaide IT-Solve] - 13.09.2022=== For Reference: I got A1708 00875 with blown CD3215B03 and replaced both with CD3215C00. Did not work as not cross-compatible. Following '''Leshuq's''' experience, swapped TBT ROM from 00840 which uses CD3215C00 onto the 00875 and '''did not work'''. Still stuck at 5V 0.02A <br /> ===Crumblenaut - 16.09.2022=== [https://electronics.stackexchange.com/a/333099 This page] helps describe what USB-C power supplies need from USB-C devices in order to give ANY power on VBUS - namely a 5.1k pulldown resistance on BOTH the CC1 and CC2 pins, provided by the connected device. Until then, VBUS will provide no power - not even 5V. If you're not getting ANY USB-C multimeter readings, check diode mode on the CC lines of your CD3215 (they'll typically read ~0.35V to ~0.5V) and see if one stands out from the others. These often just have a capacitor and a diode between them and ground, and so the requisite resistance to engage ANY power on the given port is provided by a functional CD3215. If the ports themselves aren't damaged, then the issue is most likely one or many CD3215's. Note that the board that brought this to light for me is an A1707's 820-00281, and it had THREE ports that gave NO response to a USB-C power adapter via a multimeter, and ONE port that worked perfectly at 20V to power and charge the system. This also suggests that if you have any one CD3215 that's causing the system to stick at 5V, then it can prevent any of them from switching to 20V... but as long as you have a functional master CD3215 to TBT ROM connection and the others are failed to the point that they won't trigger any voltage input from a power supply, then the system may be able to function on that one port. ''Please take the information in my comment here with a grain of salt until it's verified further. ;)'' <br /> [[Category:Mac]] [[Category:MacBook]] [[Category:MacBook Pro]] k5wfcpsaleipx835ky53cyf29pnanwb CD3217 and T2 Power on Sequence 0 597 7697 7696 2024-09-23T20:29:11Z Inwerp 16 /* 820-02862 (MacBook Pro M3) */ 7697 wikitext text/x-wiki {{DISPLAYTITLE:CD3217 and T2 Power on Sequence}} === T2 power sequence checkpoints === Calpe PMU is a very complex chip with multiple functions and buck converters inside. There are numerous things to check before you replace it if you do not have T2 power. # primary power supply is PP3V3_G3H_RTC. This line is different from PP3V3_G3H supply and it is very important to understand that Calpe passes 3V3_G3H_RTC through to PP3V3_G3H before it issues PMU_VDDMAIN_EN which is a main enable signal for 3/5V regulator. It seems that it is issued once we got 20v on charger and ISL9240 switches into buck mode thus it is T2 firmware dependant. # one of the main checkpoints to look at is Calpe LDO section(Page called PMIC LDOs in schematics). everything except S5 outputs (which are switched proactively by T2 via i2c interface later) should be present. === CD3217 checkpoints === If a CD3217 does not have the LDO outputs, test the lines for shorts, otherwise the chip is missing power or bad. [http://www.ti.com/lit/ds/slvsd13c/slvsd13c.pdf Data sheet] of closest Ti chip.<br><br>A bad CD3217 can often cause a loop at step 10. All of the CD3217s need to be fully functional and communicate with the SMC before the CD3217 connected to the charger will request 20V These documents are for specific boards, but will likely apply to most T2 Mac. Any net names and designators will be specific to the board it is from. All 4 port macs require right side to be sourced from donor. Reason for that is preconfigured custom i2c address which is unlike CD3215 is hardcoded in internal bootrom. Left side uses straps to set i2c address but if you put OTP-Configured cd3217 from right side it wont work. inrush mosfet pair is integrated into CD3217, so after DCIN short (if it happened before Buck-Boost converter) you can expect weird charging behaviour. if your mac works from battery and from charger separately but stops taking DCIN once you plug in battery - try to replace CD3217. if all ports have same behavior, it is quite possible that customer plugged PD-passive power supply (some displays have 2-3A 5V supplies). into all ports sequenually and killed all of them. on M1 device might cause weird charging only if device is turned off. ==820-01055== [[File:820-01055 Component Placement.pdf|800x800px]] [[File:820-01055 Power Sequence.pdf|2319x2319px]] [[File:820-01055 Power On Chart.pdf|800x800px]] ==820-01598== [[File:820-01598 Prometheus Power Sequence Diagram LO2.pdf|800x800px]] ===T2 Power rails resistances (820-01700)=== PPVDDCPU_AWAKE 10-15 Ohm PP0V82_SLPDDR 30-40 Ohm PPVDDCPUSRAM_AWAKE 100-120 Ohm PP1V1_SLPS2R 1-2 kOhm PP0V9_SLPDDR 40 Ohm PP1V8_SLPS2R 4 kOhm ===820-001700 CD3217 Compatibility issues and OTP Config=== 4TBT port devices have mixed OTP/Strap configured i2C address for CD3217. On CD3215 each controller got its address with debug straps around it, however logicboards with more than 2 CD3217 use OTP (firmware configured) address. There is no known method of changing this configuration however it might be possible with devboard for similar TPS Chip, so most likely, it will not be ever possible to configure chips from other devices to be used on 820-01949 or 820-001700 [[File:820-001949 OTP.png|none|thumb|820-001949 Addresses]] Left side of the laptop uses hardware (Strap) configured addresses, right side gets address from OTP config burned into CD3217. Thus, 1949/01700 cd3217 is interchangeable but you need to match right side. If you have a logic analyzer, you can connect to the i2c line on the debug connector to see which exact port is malfunctioning. This might be also helpful if you have a bunch of randomly sourced cd3217s and you wish to find one with the right address. 820-01949 and 820-001700 are not interchangable because they seem to use different 5V output control. charging will work but usb connectivity wont. '''<s>Information below might be obsolete/incorrect since it was more or less speculation based on repair experience, not actual board / datasheet analysis</s>''' <s><br /> CD3217s from 2020/M1 boards will not work.</s> <s>Symptoms of compatibility issue: PPBUS ~12.30, all ports are switching to 19V with T2 boot/or one side will turn 19v, another stays on 5v (19v 0.05-0.1A) there will be a visible heat spot on T2 1st pin corner (inner side since T2 itself is approx 2 smaller than IC)</s> <s>Device will start from charged battery, there will be no issue with usb devices but charger wont be recognized.</s> <s>Generally 001700 behaviour is very inconsistent. some boards might start with only one cd3217 present on board (should be the one connected to tbt rom of course), some will stuck in 5V 0.2A, some will stuck in 19v 0.1A(basically same power consumption).</s> <s>Probably there are multiple revisions of the board, images pending. If you can add some more info, please report your revision / cd3217 behaviour below.</s> [[File:T2 PMIC 001700 revision 2.png|thumb|<s>T2 PMIC 001700 revision 1(black dot inductors)</s>|alt=|none]] <s><br /></s> [[File:T2 PMIC 001700 early revision.png|thumb|<s>Revision 2 (white dots)</s>|alt=|none]] ===820-001700 CD3217 revisions list=== Case 1: MacBook Pro 16" 2019 With CD3217 rev. 9AP0NVQ No power with one side of newer 12P1FXQ(took from 2020 board), Symptoms: quick T2 boot, 19V mode + hot T2 Corner on original side, 5v 0.2A on another. PPBUS 12.3V ===820-01987=== CD3217 B12 09P09CQ Possibly alternative revision with TI logo on chip, CD3217 B12 02P04ES ===820-01598=== CD3217 B12 97P146Q === OTP Configuration on M1+ devices === all 2 TBT port machines without magsafe - no OTP configuration all 3 TBT port machines (14, 16"): Magsafe (U5500 i2c: 0x3A) and HDMI side (UG400 i2c: 0x3B) are OTP-configured and need to be sourced from donor. Macbook Air M2 has only one OTP configured port which is Magsafe (U5500 i2c: 0x3A). this means it might be interchangable with U5500 on 3USBC+Magsafe machines OTP Register contents: ATC0 0000000: 81 01 00 17 18 18 AA 02 9F 66 B2 82 00 00 01 55 .........f.....U 0000010: D9 38 00 00 00 00 00 00 00 00 .8........ ATC1 0000000: 01 00 02 17 1F 1F AA 02 9F 66 B2 82 00 00 01 55 .........f.....U 0000010: D9 38 00 00 00 00 00 00 00 00 .8........ HMP1(Magsafe) 0000000: 81 01 00 17 0F 1A FE 4B 9F 66 C2 81 00 00 01 55 .......K.f.....U 0000010: D9 38 00 00 00 00 00 00 00 00 .8........ === 820-02862 (MacBook Air M2) === this board seem to have 2 strap-configured and 1 OTP configured chip for Magsafe(U5500) CD3217B13 is not compatible with any other revisions. While buying chips beware of 1/3 chance of getting magsafe chip which will most likely not work on strap-configured position (UF400, UF500). There is also a high chance of getting chips from 14 and 16" macs which would have 50/50 chance of having OTP i2c address override configuration. Try to find supplier with chip position markings or use donor board. === 820-02862 (MacBook Pro M3) === Like all other 14/16 inch M macs it has CD3217B13 controllers like all other models with >2 usbc ports, 2 OTP and 2 Strap-configured. It is not clear from the schematics, which ones are strap configured, which ones are OTP. Most likely UF400 UF500 are strap-configured, UG400 and U5500 are also OTP. ==Small T2 top side diode measurements== There are more power lines than 1v1slps2r, they just somewhat got lost in the process of uploading. Maybe I'll fix that later. Those are in case you wonder if you have a broken line between T2 and it's RAM, or have some pins torn. [[File:T2 RAM Pinout.jpg|none|thumb|650x650px|credits to @leshuq / @lisochenko]] ==T2 types== А2159, А2289 - Big T2 Package (PMU is also different!) А1932, А2179, А1989, А1990, А2141, A2251 - Small T2 Package Important note: T2 have differences in the supported amount of SSD. T2 supporting up to 512GB has 1GB RAM, T2 supporting up to 1TB and above has 2GB RAM. When replacing RAM, it is important to take into account the amount of RAM, otherwise the replaced memory of the wrong size will not work. Also, if you want to increase the size of the SSD (for example, from 512GB to 1TB on the A2141), it will not be enough to replace only the T2 RAM from 1GB to 2GB, you will need to install the T2 that can work with 2GB RAM, in other words, you need a T2 that originally came with 2GB of RAM. Known types of RAM + APL number: *APL1027 with h9hknnn8kumuvr 1GB Hynix Chip. *339S00467 - 2GB *339S00533 - 1GB There is also BOM table in schematics, but it listed apple part number(339Sxxxxx) does not seem to correlate (based on 5 boards). However, it lists 2 different Ram manufacturers, Hynix and Micron. __FORCETOC__ {{DEFAULTSORT:CD3217_and_T2_Power_on_Sequence}} lk56s7w60zszkug51tljz07vljluw16 CPU/PCH code table and stencil list 0 2166 6533 2022-06-10T22:05:35Z Inwerp 16 Created page with "{| class="wikitable" |+PCH !Code !Name !Stencil ! |- |SR2C4 |HM170 |Look for amaoe stencil and reball kit. Could be found in [https://aliexpress.com/store/5049291 SATYL] stor..." 6533 wikitext text/x-wiki {| class="wikitable" |+PCH !Code !Name !Stencil ! |- |SR2C4 |HM170 |Look for amaoe stencil and reball kit. Could be found in [https://aliexpress.com/store/5049291 SATYL] store |[[File:SR2C4.png|frameless]] |- |SR40F |QMS380 |Look for amaoe stencil and reball kit. Could be found in [https://aliexpress.com/store/5049291 SATYL] store |[[File:Intel SR40F.png|frameless]] |- |SR40B |HM370 |Look for amaoe stencil and reball kit. Could be found in [https://aliexpress.com/store/5049291 SATYL] store |[[File:SR40B.png|left|frameless]] |- |SR17D |HM87 |Only 90x90 Stencils available. seek for [https://aliexpress.com/item/32405210982.html?s SUHMS 90x90 Stencil] + universal base. Unfortunately it would be hard to match IC height. Look for 90x90 Reballing kit. |[[File:SR17D.png|frameless]] |} ihtxr6smai3hw61t488as4iaj6lbcky CRT Safety and Basic Guidelines 0 2017 6418 6061 2022-02-09T23:08:08Z Nobluesky 182 Added repair.wiki page beacuse it's different and a good resource as well. 6418 wikitext text/x-wiki ==Guidelines for working safely on CRT monitors or TVs :== <big>'''DISCLAIMER : very high voltage up to 40 KV (40 000V) depending on the model is present inside and the electric charge can still be deadly for a long while after unplugging the device from mains. The electric charge may last months in the worst cases.<br>''' If you don't know what you are doing, I strongly advise against tinkering inside a CRT as a first project. They are cool looking, but not safe. <br> The following information is only here for informational purposes and to reduce risks while working. If you still want to proceed, it's at your own risk and we deny any responsibility should anything bad happen.</big> <br> <br> Always work inside the CRT with power cord unplugged (duh). While unplugged, turn it on to start discharging some capacitors (it's a start, it's not enough).<br> Carefully open the device without touching the insides.<br> Keep one hand behind your back at all times until the tube and capacitors are discharged or while mains power is still present so you avoid current circulating through the heart. Take off any metal jewel, ring or watch, those are entry points into the body for the electricity. <br> And to avoid releasing the vaccum abruptly or shattering the tube, don't bump into the fragile tip and the board socketed on the end of the tube, called the neck board. Also avoid touching or messing up the yoke and its adjustment rings (the enamled copper wires assembly around the tube), or it'll be a nightmare to make the thing work properly again. <br> The tube has a positive, the anode, under a rubber cap that you must not touch either as rubber can loose its insulating properties in such old devices. Avoid the high voltage wire as well (usually red) connected to it coming from the board. The other danger zones in a CRT are around the black high voltage flyback transformer on the board (usually covered in black dust from the static electricity, refer to pics below), and the large capacitors on the board (their leads go behind the PCB so you may touch them from under the circuit board, where the solder joints are). These capacitors are usually rated between 100 to 200V, sometimes up to 400V. Avoid touching the neck board too. And if ever you test the thing open, note the metal heatsinks on the board can be energized or tied to live potential. Older CRTs (1960s to 1980s or so can even have the whole metallic chassis tied to live, especially in arcade cabinets). Also in vacuum tube TVs, some tubes under a metal shield emit X-rays so don't open the shield or stand near those while it's on! <br> ===Discharging procedure=== First, find an insulated screwdriver, a copper cable with insulation (stripped on both extremities) and a pair of thick gloves, preferably heavy duty leather or real electrician gloves. Strongly attach one end of the wire to your screwdriver shaft, ensuring a good contact. Tie or alligator clip the other end to chassis ground, aka the metal shielding of the case. Sometimes you have a massive metal sheet shield all around the largest side of the tube, sometimes you only have small naked metal braids running along the tube from the corners to the back, usually with one or several springs attached to them (see images at bottom of the page). Locate the proper place and tie your wire to it. Avoid using the retaining screws in the corners of the tube as contact point, they have a rubber ring and don't make contact with the chassis ground. <br> Once both ends are properly connected, with one gloved hand, while touching only the screwdriver plastic handle, you can insert the tip of the screwdriver under the rubber cap, reaching for the center. Touch the center part a few times. You may hear a pop or simply nothing. <br> Remember, you are short circuiting a giant glass capacitor with two plates, so the outside and the inside of the tube. It's like a large Leyden jar. Positive is the anode leading inside, negative is the outside shielding and conductive paint. The charge is held between the two with the glass as an insulator. <br> Note the tube may even get charged again by sitting alone because of static electricity, so you want to do that again before reconnecting the anode, even if the buildup charge is not as strong. <br> Next, once you're certain you did the previous step properly, you can separate the anode cap from the tube like this : [[File:anode cap removal.png|x300px]] <br> Take pictures from all angles before disconnecting any connectors inside, it'll help greatly while putting it back together. <br> Next come the large capacitors on the board. Reaching them can take a few careful steps disconnecting and removing the board from the device. Be careful you're not touching the solder joints side of the PCB or you could be severely shocked. <br> Wear safety glasses, like the ones used for grinding, to avoid melted metal in your eyes in case you short circuit the capacitors accidentally. Start by measuring the 100V or more capacitors between their two corresponding solder joints under the board with a reliable multimeter and probes (real CAT safety rating for such voltages, not a chinese crappy one). Firmly apply the probes on the solder joints without slipping (don't short the cap) in Volts DC, highest caliber of the meter (600VDC usually). If you read below 10V, you may short them with an insulated screwdriver. <br> If it's higher, they must be discharged with resistors. You have to find a compromise between speed and thermal dissipation. I used a 1 meg resistor because it was 0,5w but it took around 30 minutes for the largest one in my particular monitor. You could also find a large wound resistor of the appropriate rating, let's say around 15-30K ohms and 10 Watts. Secure the resistor legs to your multimeter probes and monitor the voltage until it goes down to safe levels, around 10V. More can still generate a huge spark, even around 20-30V. Remove your meter and free the probes from the resistor, then measure again after a minute (it could climb back up). Do that with all large 100V+ capacitors. <br> Congratulations, your board is now safe to work on. Take off the annoying safety gear and enjoy recapping/RGB modding/dusting with a soft brush :-D <br> The more dust there is inside, the more the CRT was used and may be worn! <br> ===Common issues, as a starting point (does not replace a full diagnostic with schematic or measurements) :=== Unstable, unreliable, won't stay on, takes an unusually long time to light up or image bouncing : replace electrolytic capacitors, possibly bad flyback, issue with inrush limiting NTC or power regulation <br> Bad geometry, curved image side changing a lot with brightness : Bad ceramic caps for vsync, Bad flyback <br> Dim picture brightness or washed out colors : bad voltage regulation, issue with inrush limiting NTC, worn tube <br> Middle bright spot or vertical straight line on black screen : bad yoke? Major deflection issue <br> Collapsed image (horizontal straight line in the middle of black screen) : Bad joints on the neck board (micro-cracked) or bad main vertical transistor, convergence circuit issue <br> Colored patches (mostly green, orange and pink) in large concentric patterns or in a specific spot : degaussing circuit not working because of bad PTC (can you hear it engaging at power on ?) Ensure no unshielded speakers are nearby. Your CRT may have been exposed to unshielded monitors for a long time and degaussing is not enough. Waving a large electromagnet in front of it may help. <br> Image sideways more than the OSD menu can fix or deformed corners : The yoke has moved, is not stuck properly to the screen. The magnets on plastic tabs glued on the tube have detached, other electronic issue. <br> Colors overlapping (RGB borders superimposing on image details) : The yoke rings or yoke itself have been moved. <br> ===Useful videos and links=== Another take on the matter at repair.wiki that can be a great complement to this page : https://repair.wiki/w/CRT_repair_and_troubleshooting Safety and discharge : <br> https://www.youtube.com/watch?v=a6FMpvs71pc<br> https://www.youtube.com/watch?v=1CVXzlkOjGg<br> https://www.youtube.com/watch?v=N39PZB8gYhk<br> https://www.youtube.com/watch?v=d1mQupQHFkc<br> https://www.youtube.com/watch?v=DEC75Gb4I-w<br> https://www.youtube.com/watch?v=JeX5Y7Amk0o <br><br> Repair dim image : <br> https://www.youtube.com/watch?v=hCopsoy0lQI <br><br> Choose capacitors for recapping (replaçing all electrolytics) : <br> https://www.youtube.com/watch?v=zNhjXvzdcLU<br> https://www.youtube.com/watch?v=uyBjMWzzmf8 <br><br> Why you should not discharge capacitors with a screwdriver : <br> https://www.circuitspecialists.com/blog/discharge-capacitors-in-switch-mode-power-supplies/ <br><br> Useful info about all kind of picture discolouration issues : <br> http://wiki.diyfaq.org.uk/index.php/CRT_picture_discolouration<br> https://www.electronicsrepairmadeasy.com/2017/08/solving-crt-television-color-picture.html ===Illustrating images with a Sony monitor from 1999 and an US TV ( TV base pictures courtesy of user RogerB from Discord)=== [[File:crt monitor details 1.jpg|left|thumb|x600px]] [[File:crt monitor details 2.jpg|left|thumb|x600px]] [[File:crt tv details 1.jpg|left|thumb|x900px]] [[File:crt tv details 2.png|left|thumb|x500px]] [[File:crt tv details 3.jpg|left|thumb|x500px]] 8rqq1t1lyh08vyizrrih8d1hgswzng7 Catalina 0 101 548 219 2020-02-02T11:25:18Z Piernov 10 Category Mac 548 wikitext text/x-wiki == File System == https://eclecticlight.co/2019/10/08/macos-catalina-boot-volume-layout/ [[Category:Mac]] 7k0gx14eqnew2mnknwrx5u2zryb1mfy Change macOS System Version 0 749 1578 2020-08-28T17:43:15Z Chrisb 1 Created page with "Follow this procedure when you need to update macOS from a version prior to 10.8 to a more recent OS. Make sure a password is set up for the admin user. THIS WILL NOT WORK..." 1578 wikitext text/x-wiki Follow this procedure when you need to update macOS from a version prior to 10.8 to a more recent OS. Make sure a password is set up for the admin user. THIS WILL NOT WORK IF THERE IS NO PASSWORD. <br /> # Log in to the customers admin user account. # Open Terminal. # Copy and paste the following command: ''sudo nano -w /System/Library/CoreServices/SystemVersion.plist'' # Press enter # Enter the admin password (it will not show any characters as you type!) and press enter. # Use the arrow keys to navigate to the end of the version number where shown highlighted below. Replace this number with 10.8.6[[File:Image 2-28-20 at 1.19 PM.jpg|none|thumb]] # Use the arrow keys to navigate to the end of the second number shown below and replace again with 10.8.6 # [[File:Image 2-28-20 at 1.22 PM.jpg|none|thumb]]<br /> # Press control + x to exit and when prompted to save modified buffer type y to save. # Press enter to accept the default file name. # Exit Terminal. # Restart and run the OS installer that you wish to upgrade to. 2nkkiuu2nskb1eq5k9sjfkr780k3zhv Charging Current Graphs 0 2158 6486 6485 2022-04-19T22:18:25Z Chrisb 1 6486 wikitext text/x-wiki ===iPad Pro 11 Inch First Generation=== ====iPad Turned On, showing display turned off and on==== [[File:iPad Pro 11 Display on offreal.jpg|alt=iPad Turned on, showing display turned on and off|900x900px|iPad Turned on, showing display turned on and off]] ==== iPad Pro 11 Board Only ==== [[File:iPad Pro 11 Board Only.jpg|alt=iPad Pro 11 Board Only|900x900px|iPad Pro 11 Board Only]] ==== iPad Pro 11 Drained Battery ==== [[File:iPad Pro 11 Drained Battery.jpg|alt=iPad Pro 11 Drained Battery|900x900px|iPad Pro 11 Drained Battery]] ==== iPad Pro 11 LDO Short ==== [[File:Not charging pro 11 PP3v3 LDO SHORT.jpg|alt=Not charging pro 11 PP3v3 LDO SHORT|900x900px|Not charging pro 11 PP3v3 LDO SHORT]] i3klpctndgj2xg59xedw5vsdmsf8dw2 Clean EFI ME Region 0 1822 7128 6865 2024-06-25T21:53:10Z Crumblenaut 317 Updated the dead link to the Intel FIT repository to a new, working one. 7128 wikitext text/x-wiki ===Problem, Symptoms, and Background:=== There are many issues that can be addressed by cleaning the Intel Management Engine (ME) region of your Mac's firmware. When clean, the ME region performs an initial handshake with your board's PCH on first boot and stores values related to that specific PCH in its EEPROM memory. When the ME region gets damaged or when swapping an SPI ROM chip from one logic board to another, there will more than likely be a mismatch between what the firmware expects to see and what it actually registers. This can lead to a number of issues, including: *A long POST delay (prior to Apple chime and boot menu) *The system hanging indefinitely on its loading screen with the Apple icon and a partially or even fully filled bar *The system being able to boot into Windows/Linux/etc. but never successfully into MacOS or any MacOS installers *The system being able to boot into EFI ASDs but not OS ASDs *Freezing or kernel panics while booting macOS *Error messages during verbose boot mode resembling "busy timeout[0], (60s): 'IGPU'" *The fan always running at full speed *Hard, spontaneous shutdown after 30 minutes *No POST situations *More obscure, fringe symptoms like the webcam not working on some Mac boards To resolve these issues, the ME region has to be cleaned with a specific procedure. Using copy/paste hex editing or tools like MEInject will write in a raw ME region without Apple's Mac-specific manufacturer settings for the ME region, which can result in similar symptoms as a "dirty" ME region. Many replacement chips purchased off of the internet may not have a properly cleaned ME region - either they'll be dirty or raw, and neither will function properly. The proper and reliable way is to use the Intel Flash Image Tool (FITC) from the Intel Management Engine Tools set that matches your firmware's ME version. <i>The following instructions have been derived directly from the "How to clean ME Region on Apple machines" video posted by the legendary Piernov here: https://www.youtube.com/watch?v=exfG5Iywmjk </i> <br> ===Quick Notes:=== <b>In short, the process involves these steps:</b> #Desolder and attach the board's SPI ROM chip to your programmer. #Save a full image of the firmware exactly as it was found. #Analyze the image to know what ME version you're working with. #Extract and save the settings stored in the original firmware. #Extract a clean ME region file from a firmware in a repository. #Create a clean ME region binary from the extracted region file. #Replace the ME region binary from your original image with the clean ME region binary you've just created. #Rebuild the firmware image with your original settings and a clean ME region. #Verify your rebuilt firmware image. #Reflash the rebuilt image to your SPI ROM chip. #Reattach the chip to the logic board, NVRAM reset, and enjoy a clean ME region! <b>Some helpful context:</b> *Firmwares are identical amongst all logic boards with the same model number - e.g. 820-00165. Different board specs do NOT require different firmwares - e.g. An 820-00165 i7 / 8GB board will use the same firmware as an 820-00165 i5 / 4GB board. *ME regions are generally intercompatible within the same primary model line of Macs - e.g. MacBook Air 7,1 and MacBook Air 7,2 use the same ME region. This process depends on access to a repository of firmwares uploaded by gdbinit on GitHub, and within that repository for any given Mac___ X,Y, as long as there's an image that matches your generation's primary model number (X), you can use that even if there may not be a ME region for your specific submodel (Y). *Always use the most recent firmware that matches your model. *Always use the Intel Management Engine Tools package that matches the ME version found with ME Analyzer. *If it becomes necessary to replace the original BIOS chip on your logic board, BE SURE TO ONLY USE A BIOS CHIP FROM THE SAME BOARD MODEL (or, if necessary, at least the same model year). Different years may have different voltage or SPI mode settings that could be fully incompatible. *This is the manual, guaranteed-to-work, straight-from-Piernov means of getting a clean ME region in your board's firmware. Other folks have found success using the Apple-EFI-Patchers created by sadponyguerillaboy and uploaded on GitHub, found here: https://github.com/sadponyguerillaboy <b>For this method, you will need:</b> *A EEPROM programmer and appropriate adapters to fit your SPI ROM chip. A common recommendation is the TL866II Plus. *A WSON8 8x6 and 6x5 combo adapter board for MacBook Pro and MacBook Air SPI ROM chips (or 6mm / 0.25in width kapton tape and a SOP8 ZIF riser) *Reading/programming software for your EEPROM programmer. For the TL866II Plus, that software is called Xgpro. *ME Analyzer: https://github.com/platomav/MEAnalyzer *UEFITool: https://github.com/LongSoft/UEFITool *Intel Flash Image Tools: https://winraid.level1techs.com/t/intel-converged-security-management-engine-drivers-firmware-and-tools-2-15/30719 *Firmware with a clean ME region, pulled from a repository hosted by gdbinit on GitHub: https://github.com/gdbinit/firmware_vault <b>A FINAL NOTE BEFORE YOU BEGIN:</b> *<b>The symptoms exhibited by a dirty, mismatched, or raw ME Region can also be induced by a faulty PCH [ME Disable Strap] circuit. Therefore, before going through all of this work, <u>be sure you've checked to see that your PCH ME Disable Strap circuit is intact, undamaged, and functional</u>. No matter how clean your ME Region is, your system will not function properly with the PCH ME Disable Strap engaged. See [[ME Disable Strap]] for more info.</b> <br> ===Step-By-Step Guide:=== <b>1) Desolder and attach the board's SPI ROM chip to your programmer.</b> *Before beginning work, take a reference photo of the SPI ROM chip on your logic board, making sure the SPI ROM chip's text is clear and legible. *Desolder original or donor SPI ROM chip from the source logic board. *Solder the new chip to the appropriate side of your WSON8 ZIF riser. Be sure that pin 1 of the chip - indicated by a dot etched/silkscreened in one of the corners - is aligned with where pin 1 should be on your riser. **If you don't happen to have a WSON8 ZIF riser on hand you can use the SOP8 riser that most likely came with your programmer, but you'll need to insulate the WSON8's central ground plane from the pins on the SOP8 riser, as there will be overlap. A small strip of 6mm kapton tape placed on the edge of one side of the SOP8's pads should overlap over the other side's pads enough so that the chip's ground plane is prevented from shorting on any of the SOP8 riser's pads. ***IF YOU DO THIS, USE A MULTIMETER TO CHECK ALL POINTS AGAINST GROUND TO ENSURE NOTHING IS SHORTED TO GROUND! ONLY PIN 4 OF WSON8 PACKAGE CHIPS SHOULD CONNECT TO GROUND. *Install the ZIF riser in your programmer so that pin 1 of the riser is aligned with slot 1 of the ZIF connector. Typically pin 1 of the ZIF connector is closest to the ZIF lever. *Connect your programmer to your computer. <b>2) Save a full image of the firmware exactly as it was found. Create EXTRACTED.BIN</b> *Open your programmer software on the connected computer. *Detect and select the SPI ROM chip model from the software's list. **Within Xgpro (the software that comes with a TL866II Plus), and go the "Select" menu --> "25 Flash Detect". Press the "Detect" button to have the software approximate the connected model of chip, but then be sure to select the specific chip from the software's menu BASED ON THE ACTUAL PRINTING ON THE CHIP ITSELF, not just what's detected. The photo you took in step 1 will be a great reference! *Read the firmware into the software, then save the entirety of what's read off the chip as a BIN file. (You can name it whatever you like but for the purposes of this guide, I'd suggest naming it <b>EXTRACTED.BIN</b> and placing it in a temporary folder for use with this project that we'll refer to as your "working folder" throughout this guide.) --> EXTRACTED.BIN **Within Xgpro, you read the chip with the green-circled READ button, and once it's completely read, you can use the Back button to close the read window. **Once the chip data has been read, just use File --> Save to create your EXTRACTED.BIN file. All of default settings for reading and saving should be just fine. **It wouldn't be a bad idea to create a duplicate of the file as a backup and call it something like EXTRACTED.BIN.BACKUP *You can either close or leave Xgpro open after this, but if you close it, be sure that you have the correct SPI ROM chip model selected when you reopen it! <b>3) Analyze the extracted image to know what ME version you're working with. Create EXTRACTED.TXT</b> *Duplicate your saved BIN file to the folder with the ME Analyzer tool (MEA.exe). *Run the MEA.exe *Load the BIOS you've just saved by typing in its filename or dragging the file into the command prompt window where MEA.exe is running, then press enter. *Copy/paste the output displayed in the command prompt window into a text file and save it as a text file. --> EXTRACTED.TXT <b>4) Extract and save the settings stored in the original firmware. Create EXTRACTED.XML</b> *Download and unpack the Intel ME System Tools for the ME Version listed from the ME Analyzer output. *Open the extracted folder, then the Flash Image Tool subfolder, then launch fitc.exe. *Open EXTRACTED.BIN by dragging it into the Flash Image Tool window. *Verify that "ME Region\Configuration\Boot Guard" has the "Boot Guard Profile Configuration" item value set to "Boot Guard Profile 0 - No_FVME" *Verify that "ME Region\Configuration\Integrated Clock Controller" has the "Default Lock Enables Mask" item value set to "0:Default" *Save the settings into an XML file in your working folder. --> EXTRACTED.XML <b>5) Extract a clean ME region from a firmware in a repository. Create REPOSITORY.RGN</b> *Access gdbinit's firmware repository at https://github.com/gdbinit/firmware_vault *Find the most recent (highest numbered) firmware in the firmware repository that matches your device and duplicate it into your working folder. **If there isn't a perfect match to your Mac model - e.g. MacBookAir7,2 - then use the most recent file matching the first number of your model instead. (e.g. Both MacBookAir7,1 -AND- MacBookAir7,2 would use MBA71_0178_B00.fd) *Open UEFITool and load the firmware file you pulled from the repository. *In firmwares for systems from 2015 and later, you'll see "ME Region" at the top level of the hierarchy displayed upon loading the file. Right click on "ME Region", select "Extract As Is", and save that file with a .rgn extension --> REPOSITORY.RGN *In pre-2015 EFI files you will probably have to dig deep to find the "Raw section" of the EfiCrc32GuidedSectionExtract folder, then right click on the "Raw section" select "Extract Body", and safe that file with a .rgn extension --> REPOSITORY.RGN **In Piernov's video, the firmware from an 820-3437 board for a 2013/2014 13in MacBook Air has its ME region stored in the following path: ***UEFI Capsule / UEFI image / EfiFirmwareFileSystemGuid / EfiUpdateDataFileGuid / EfiFirmwareFileSystemGuid/MeRegionUpdateVolume/Compressed section / EfiCrc32GuidedSEctionExtract/Raw Section <b>6) Create a clean ME region binary from the extracted region file. Create ./REPOSITORY/ME Region.bin</b> *Open the Intel Flash Image Tool you used earlier (FITC.exe), drag the REPOSITORY.RGN file into the window, and then close the Flash Image Tool without saving anything. (This seemed counterintuitive at first, but this actually does something - when FITC.exe opens the region file, it creates a file we'll pull out and use now.) *Now browse into the folder where FITC.exe is stored and you'll see a folder named after your RGN file - "REPOSITORY" in our case - and within the "REPOSITORY" folder there will be a "Decomp" folder that's storing a "ME Region.bin" file in it. *View the "ME Region.bin" file's properties and note its file size (specifically "Size", NOT "Size on disk"). **You can save that file size info into your EXTRACTED.TXT file if you want, but it's not necessary. <b>7) Replace the ME region binary from your original image with the clean ME region binary you've just extracted. Overwrite ./EXTRACTED/ME Region.bin with ./REPOSITORY/ME Region.bin</b> *Navigate back to the Intel Flash Image Tool folder with FITC.exe in it, and alongside the REPOSITORY subfolder you'll see another folder named after your original BIN file - "EXTRACTED" - and just like in the previous step, within the "Decomp" folder contained therein, you'll see several binary files that were decompiled out of your original chip's firmware, including one called "ME Region.bin". *View THAT file's properties and ensure that its file size (again, just "Size", NOT "Size on disk") are identical. *Assuming they are, you want duplicate the ./REPOSITORY/ME Region.bin over to the ./EXTRACTED/ folder, thereby overwriting the original "ME Region.bin" file (which you don't need anymore) with the one you exported from firmware pulled from the repository. <b>8) Rebuild the firmware image with your original settings and a clean ME region. Create ./Build/outimage.bin</b> *Finally, open the Intel Flash Image Tool - FITC.exe - again. *Go to File --> Open and select the EXTRACTED.XML file you saved earlier. (It will point to all of the assets you need - no need to load any BIN files manually.) *From the menu, choose Build --> Build Image. **You may have a BootGuard warning pop up, as well as a warning about setting PTT HW to Disabled. Say yes to continue, ignoring both warnings - they are expected, okay, and those settings are REQUIRED for Macs, despite the scary text about irreversible changes being locked in. *Congratulations! With that, you have created your complete firmware image with a properly cleaned ME Region in the "Build" subfolder of the Flash Image Tool. --> outimage.bin <b>9) Verify your rebuilt firmware image.</b> *Duplicate the outimage.bin to your working folder. *Double check that everything went as it should by running outimage.bin through the ME Analyzer again as described in step 3. **If it doesn't pop any errors you should be good, but you can also compare it to the output from your original run of MEA.exe that you copy/pasted into EXTRACTED.TXT. <b>10) Reflash the rebuilt image to your SPI ROM chip.</b> *Open your programmer software, load the outimage.bin file that you copied to your working folder, and write it back to the chip! **If you closed your software after step 2, be sure that the correct SPI ROM chip is selected before attempting to program it! **Before writing back to the chip, it would be a good idea to be sure that the programmer, software, and SPI ROM chip are all talking to each other properly by reading the chip again by following the instructions in step 2. If you do this, you'll need to reopen the outimage.bin file again before attempting to reprogram the chip! **With Xgpro, you use the PROG button to rewrite the SPI ROM chip! All of its default settings work just fine. <b>11) Reattach the chip to the logic board, NVRAM reset, and enjoy a clean ME region!</b> *Desolder the SPI ROM chip from your ZIF riser and resolder it to the logic board, ensuring that you have the chip in the proper orientation by using the photo you took before you began work and/or the dot on the SPI ROM chip (which indicates pin 1) to match where pin 1 is on the schematic. *Rebuild and power on the computer, but for good measure perform a series of 3x NVRAM resets on first boot by holding Cmd + Opt + P + R until the system has chimed a total of FOUR times before releasing the key combination. *After this if your issues were caused by a damaged or dirty Intel ME Region, they should now be fully resolved! <b>ENJOY! :D</b> <br /> === Using older version UEFITool on old EFI (ME version 10 and below) Macs === It seems using FITC results in a "no image" on 820-00045 board and probably some others. As a solution i found that if you simply use older UEFITool (0.21.5 for example) which allows you to write blocks to EFI image, to both cut and import configured ME region it will work. Please note it will only work if you take ME image from update file (which means it would be preconfigured) So step by step would be: # Open update file with UEFITool, navigate to ME region and "Extract As Is" # Open original image, navigate to ME refgion and "Replace as is" with newely created file # Save result image and enjoy. 1k6h5uaadsg68bmdyq3ogl3wbhkpueg Clean ME Region 0 1823 5368 2020-12-24T13:46:03Z Chrisb 1 Chrisb moved page [[Clean ME Region]] to [[Clean EFI ME Region]] 5368 wikitext text/x-wiki #REDIRECT [[Clean EFI ME Region]] d1ywc7h30izmbizposb1fh14fz12lup Cleaning Policies From Chrome 0 729 6288 6147 2021-12-06T11:45:16Z Francis 4 Typo 6288 wikitext text/x-wiki #Open the '''Terminal app''' (Go > Utilities > Terminal or press Command+Space and search Terminal) #Enter the commands below, hit Enter after each<syntaxhighlight lang="bash"> defaults write com.google.Chrome HomepageIsNewTabPage -bool false defaults write com.google.Chrome NewTabPageLocation -string “https://www.google.com/” defaults write com.google.Chrome HomepageLocation -string “https://www.google.com/” defaults delete com.google.Chrome DefaultSearchProviderSearchURL defaults delete com.google.Chrome DefaultSearchProviderNewTabURL defaults delete com.google.Chrome DefaultSearchProviderName </syntaxhighlight> #Restart Chrome After cleaning the policies from Chrome, go back to chrome://policy and look for any more malicious looking entries. Use the above syntax as a guide to remove them. As a last resort use the following command. They will remove all Chrome settings:<syntaxhighlight lang="bash"> defaults delete com.google.Chrome </syntaxhighlight> qwr24rp2uxjrpqil7q8r7x0wqn31tgw Common Mac Issues/Models 0 730 6672 6671 2022-11-09T16:49:34Z Chrisb 1 /* 2015 MacBook Pro retina 13" A1502 */ 6672 wikitext text/x-wiki Below is a list and information on common issues with certain Mac models.  This list is strictly a guideline and all diagnostics should be completed before confirming any issue.  Do NOT assume every Mac in a certain model has the "common" issue without first confirming! Additional Apple Quality Repair Programs are available for newer model Macs with known issues which can be found [https://support.apple.com/exchange_repair here]. <br /> ==2011 - 27" iMac A1312 / 2011 MacBook Pro 15" A1286 & 17" A1297== Many of these Macs experience GPU failure which present the following symptoms: *Display shows discoloration or vertical lines throughout. *Freezing during loading *Rebooting during loading *White/Gray screen (These are typical symptoms and not all inclusive.  Run GPU/VST test in order to confirm.) [[A1286/A1297 Common Issues]]<br /> ==2012 MacBook Pro 13" A1278 (non-retina, with optical drive)== *Hard drive cable failure - You may see a very slow, yet healthy drive, CRC errors, failure to complete updates, prohibitory symbol upon start up (circle with slash), or folder with question mark.  You may need to reinstall the OS after replacing cable. *LCD flickering/system freezing - This is due to defective RAM slot.  Running off of one RAM stick in the good slot or replacing logic board resolves issue. [[A1286/A1297 Common Issues]]<br /> ==Mid 2012 - Early 2013 MacBook Pro retina 15" A1398== *Start up issue where fans spin, but display remains black and does not fully boot - This is caused by a power issue with GPU.  Repairing the logic board resolves the issue.  (Note:  This is not the ONLY cause for this symptom, just common.  Please rule out other issues in order to confirm.) [[A1398 Common issues]]<br /> ==Late 2013-2015 MacBook Pro retina 15" A1398== *Random shutdowns - This is caused by low voltage in one of the cores of the CPU if that core is unstable.    This requires logic board replacement or possible repair if approved.  You must rule out liquid/bad RAM/software issues/battery, etc. [[A1398 Common issues]]<br /> ==2010 MacBook Pro 15" A1286== *Random shut downs - After ruling out obvious issues (liquid/RAM/battery), repairing the logic board resolves the issue.   [[A1286/A1297 Common Issues]]<br /> ==2015 MacBook Pro retina 13" A1502== *Trackpad/keyboard not working - Replacing the trackpad cable may resolve this issue.   [[A1502 Common Issues]] qpc7kozx6zm81gok64696r5dccv3hzx Common iPhone Problems 0 2101 6295 2021-12-08T19:08:07Z Chrisb 1 Created page with "iPhone 7 A1660 Baseband - No service and unable to activate iPhone 7 Audio IC - Grayed out speakerphone icon, no or intermittent audio from device. Bluetooth audio will stil..." 6295 wikitext text/x-wiki iPhone 7 A1660 Baseband - No service and unable to activate iPhone 7 Audio IC - Grayed out speakerphone icon, no or intermittent audio from device. Bluetooth audio will still work. af29ptx5g9gn6xynp0uwsr7hwjv3w25 Compatible Schematics and Diode Measurements 0 1409 3052 2020-10-06T15:49:13Z Chrisb 1 Chrisb moved page [[Compatible Schematics and Diode Measurements]] to [[Compatible Schematics and Diode Mode Measurements]] 3052 wikitext text/x-wiki #REDIRECT [[Compatible Schematics and Diode Mode Measurements]] qv9f1m2bd5c6kr7bem7npkah50n99ih Compatible Schematics and Diode Mode Measurements 0 618 3051 1278 2020-10-06T15:49:13Z Chrisb 1 Chrisb moved page [[Compatible Schematics and Diode Measurements]] to [[Compatible Schematics and Diode Mode Measurements]] 1278 wikitext text/x-wiki #REDIRECT [[MacBook Compatible Schematics and Diode Measurements]] f0qjdc2dzb552nb3vk2mf97ecybx6qc Critical Update Required 0 117 254 2019-12-09T22:21:22Z Chrisb 1 Redirected page to [[Critical Update Required Troubleshooting]] 254 wikitext text/x-wiki #REDIRECT [[Critical Update Required Troubleshooting]] 965lf4xuws4qsa2syj1mhgi5hwncjzi Critical Update Required Troubleshooting 0 116 1588 1449 2020-08-28T21:12:16Z Chrisb 1 1588 wikitext text/x-wiki [[File:Critical Update Required.jpg|thumb|Critical Update Required]] The Critical Update Required error message can appear when either [[bridgeOS]] is corrupt, or there is a hardware fault that affects bridgeOS. Troubleshooting this error is difficult, follow the steps in order below to isolate the cause:<br> *Boot in to Safe Mode (by holding shift) and download MacOS 10.X combo update dmg. *Create Time machine backup from safe mode (if possible/needed) and Reinstall a newer macOS if available. *Make sure the Lifeboat connector cover is on the logic board. It is required to boot even to a known good external drive. *Boot to a known good, [[Compatible macOS]]. *[[DFU mode restore]] (T2 Macs only. Backup data if important) *Boot the bare board with a known good USB C port, connect it to power, keyboard, USB C to video output, and known good macOS. Please note that not all USB C to video output adapters will display during the EFI portion of boot. The original [[Apple USB-C Digital AV Multiport Adapter]] did not. The second generation HDMI 2.0 adapter has not been tested. **If the bare board will not boot, you have a logic board problem. ***Use a detailed visual inspection to look for bad [[test points]], [[solder pads]], and components. Repair any obvious damage. ***Check power supplies of all components that can cause bridgeOS to fail (check list below). ***Check all data lines of components that can cause bridgeOS to fail (check list below). ***Check all data and power lines of NANDs. There are a couple of test points that tend to corrode and fail. ***Flux and clean any BGA chips that might have been affected by liquid. ***Check around Apple pay NFC Chip (U3905), PMU (U4200) area and check L4202-L4205 for outputs. That area is prone for corrosion, re-ball chip if necessary. (820-00239) ***Ultrasonically clean the board. This is a last resort since it will likely erase signs of liquid damage. Take high resolution pictures before cleaning any board you work on. Bake the board at 125C for an hour with a [[PID Controlled Oven]]. Tiny amounts of residual liquid can disrupt some high speed communication lines under larger BGA chips. **If the bare board boots, you have a problem with a connected device. Connect them one by one until you get the Critical Update Required error again. The following components are known to cause this problem. ***Touch Bar display ***Touch Bar digitizer ***[[T-Conn]] (this can be be cleaned with an [[Ultrasonic Cleaner]].) ***[[Touch ID]] (this can be be cleaned with an Ultrasonic Cleaner.) ***Power button (this can be be cleaned with an Ultrasonic Cleaner.) ***Anything controlled by T1/T2 [[Category:Mac]] [[Category:MacBook]] [[Category:Troubleshooting Guide]] o8pnh19jt8igxeithwdj9reodrd2nk6 DFU Mode Restore 0 732 1560 2020-08-28T16:51:23Z Chrisb 1 Created page with "DFU mode can be done on Mac or iOS devices: [[DFU Mode Restore (Macs)]] [[DFU Mode Restore (iOS)]] <br />" 1560 wikitext text/x-wiki DFU mode can be done on Mac or iOS devices: [[DFU Mode Restore (Macs)]] [[DFU Mode Restore (iOS)]] <br /> 2dqydrnh2r7mx238pghmjnk4ni1qf20 DFU Mode Restore (Macs) 0 118 7602 7584 2024-08-11T23:29:23Z Inwerp 16 /* T2 SoC ROM Manipulation and Serial Number Restore */ 7602 wikitext text/x-wiki [[File:DALL·E 2023-10-25 02.17.34 - Photo of a child's drawing depicting a yellow beware sign with the text 'DO NOT REFLOW T2!'. The drawing is attached to a refrigerator with colorful m.png|thumb]] ==Supported Macs:== All MacBooks starting with T2 support this feature. *2018+ A1989/A2159 13" MacBook Pro *2018+ A1990 15" MacBook Pro *2019 A2141 16" MacBook Pro *2018+ A1932 13" MacBook Air *2018+ A1993 Mac mini *2017 A1862 iMac Pro *2019 A1991 Mac Pro *2020 A2338 13" M1 MacBook Pro *2020 A2337 13" M1 MacBook Air *2020 A2348 M1 Mac mini *2021 A2442 14" M1 Pro / M1 Max MacBook Pro *2021 A2485 16" M1 Pro / M1 Max MacBook Pro *2022 A2681 13" M2 MacBook Air *2022 A2338 13" M2 MacBook Pro *2023 A2779 14" M2 Pro / M2 Max MacBook Pro *2023 A2780 16" M2 Pro / M2 Max MacBook Pro ==Scenarios for restore:== '''DO NOT EVER "REFLOW" T2 or any other chips, even if you seen someone did it it "magically worked". If you found this page, probably you are suspecting T2 issue, so even if DFU won't help you - DON'T REFLOW T2.''' DFU on Beta software might brick the device so keyboard method wont work anymore, however it does not seem to affect anything if you do jumper method DFU. DFU mode is needed to restore the T2 firmware when: *Failed macOS upgrade/reinstall/Security Update *Failed Combo or Delta update *Unable to boot into the current OS Internet Recovery using command + option + R *Unable to successfully create computer account and log in after erasing and reinstalling (M1 computers specifically) *Looping apple logo with no loading bar after waterdamage on power button (820-00850 confirmed case) *CPU / PCH replacement: since ME+EFI image is located on BridgeOS partition, to do classical "clean ME" procedure after PCH swap, you need to do full DFU restore. Whis will put uninitialized ME image to BridgeOS partition. Revive is enough to perform CleanME, so if you swapped CPU for data recovery, you can first backup with Target Disk mode, then try revive and full boot. *waterdamage on TouchID / Power button connector. One of weirdly common reasons for currupt BridgeOS firmware is corroded TouchID connector. It is hard to tell why, but many devices stuck in G3H/T2 state are being repaired after revive. *5V 0.2a>0.05A loop and no battery charge, unable to DFU from keyboard (SoC Rom corruption) *some sources claim that PP3V3_S5 power output might be "shorted" to ground(10-50 Ohm) if there is T2 iBoot&BridgeOS corruption. possible explanation is that this output is firmware/configurable pin which is turned to ground per default but it is really questionable claim. Other reasons to restore: Essentially anytime you see something that communicates with T2 not function, a DFU restore may resolve. However, rule out other possibilities first! A few examples: #Battery communication lines being pulled down - but not short causing battery not being recognized and not charging. T2 handles SMC communications now. Battery stats and settings are stored in SoC Rom and will be reset with Revive, so DFU Revive might be considered as SMC configuration reset. #Raise/Wake not working properly. I've had two scenarios: *1: LID_OPEN_LEFT, LID_OPEN_RIGHT, and IPD_LID_OPEN would all function properly when triggered, however the unit would not sleep when lid closed. DFU restore fixed *2: (820-01958) SMC_LID_RIGHT was low - 1v1 instead of the 1v8 it should be. Causing the unit not to fully wake when raising the lid (did respond when lid was closed) The camera also did not work, which lead me to U4850. I replaced U4580, which fixed the camera, however the SMC_LID_RIGHT line was brought even lower to .110v I isolated the issue to T2. I attempted a restore, this did not work. I tied IPD_LID_OPEN to SMC_LID_RIGHT to put a bandaid on the situation. Obviously this way the unit won't functional properly. The moral of the story here, is before you attempt a DFU restore, for something that could be T2, attempt to rule out everything else before the restore, as you could brick the unit, and be in a worse condition. ===Beware of the risk!=== Rule out parts or any other board issue that is possible before DFU restoring the unit. There are many things that can cause a DFU restore to fail. The problem is, if you fail a DFU restore, you may end up in a different error state than your original issue. For example: If you have a board that comes in, with no power. You plug it into another unit, to check if its in DFU mode. It's not. Let's say PP3v3_G3H is shorted. Let's call this '''Failure State A'''. Now you're in '''Failure State A''', and you decided to force the unit into DFU, and attempt a restore. At this point, it would fail, and you would be stuck in recovery, let's call this '''Failure State B'''. Now you're at '''Failure State B''', it makes it 10x harder to diagnose '''Failure State A''', simply because you can't follow the power structure anymore. At this point, if you find you're short on PP3v3_G3H and remove it, you would have to restore again and PRAY that it works. It does not always. There have been many cases, where the unit came in with liquid damage, clearly a '''Failure State A''' type of situation, but the client attempted to restore before sending it, making it into a '''Failure State B'''. It seems half the time, after I fix '''Failure A''', that I am able to get out of '''Failure B''' after restore. The half that is unsuccessful, is, I'm sure because of a damaged trace or something like that - however, with it being in recovery, or '''Failure State B''', it's much harder to diagnose. ===Requirements:=== Most boards require touchpad, some boards require Touchpad + Touchbar for full restore. Check trackpad/use known good part on waterdamaged devices before doing DFU Restore. You will need: *a host Mac which has minimum OS of 10.13.5, Apple Configurator 2.6 or newer installed (from App Store), and an internet connection. *USB-C cable which supports data, USB A to C cable, or Thunderbolt 3 cable. Apple OEM charging cable will work too. *Target Mac (one that is being put in DFU) is connected to power. Do not use the left port closest to track pad for power - you will need this for data. *Target Mac has charged and functional battery/you have power supply plugged in into functioning port. After initial Phase of iBoot restoer (SoCrom) there will be issued a reset signal which resets external power supply but in theory it keeps being powered from DFU port. If PPBUS voltage sinks below threshold, T2 will lose its power and reset into recovery mode. This usually seen as a "usb connection" error roughly after approx 30-40 sec. If something like that happens with your mac, monitor PPBUS / T2 SLP Voltages to confirm and try good known precharged battery. Make sure Host Mac is powered up, iTunes is not open if applicable (fully quit) and open Apple Configurator 2. ==How to put Mac into the DFU mode== === If the host machine is Apple silicon, you can follow this guide to put targets in DFU through terminal: https://www.bkurtz.io/posts/macvdmtool/ === ==== '''Keyboard method for Intel MacBook Pro and MacBook Air''' ==== Make sure Mac is shut down (hold power button for 5 seconds). Plug in data cable to Host Mac (any port) then into the left port closest to track pad in the Target Mac. Hold right shift + left option + left control + power keys simultaneously for about 3 seconds (according to Apple, other sources say 4-8 seconds). NOTE: We found that if you press the power button for 1 one thousand and then simultaneously hold the right shift + left option + left control, you should be successful each time. We also found that we were able to get in DFU mode around 4 to 6 (one one thousand, etc.) seconds. The Target Mac will remain as a black screen but you should see the DFU box pop up in Apple Configurator window on the Host Mac. ==== '''Keyboard method''' '''For Apple silicon M1 MacBook Pro and MacBook Air''' ==== Make sure Mac is shut down (hold power button for 5 seconds). Plug in data cable to Host Mac (any port) then into the left-side port closest to the screen in the Target Mac. Press the power button for about half a second, then also press and hold Left Control + Left Option + Right Shift for 10 seconds, then release all keys except power and hold power until the Target Mac shows up in Apple Configurator on the Host Mac. '''For Intel Mac mini and iMac Pro''' - Disconnect power cord fro m Target Mac. Plug in data cable on Target Mac to port closest to the HDMI port. Hold down power button and plug the power cord back in. Continue holding power button for about 3 seconds. The Target Mac will remain as a black screen but you should see the DFU logo in Apple Configurator window. '''For M1 Mac mini''' - Disconnect Target Mac from power for at least 10 seconds. Plug in data cable on Target Mac to port closest to ethernet and into any port on Host Mac, then press and hold power while reconnecting power, then release power. The status indicator color should be amber. '''For 2019 Mac Pro''' - Disconnect power cord from Target Mac. Plug in data cable on Target Mac to USB-C port farthest from the power button. While holding the power button, connect the power cord and continue to hold the power button for about 3 seconds. [[File:SOC FORCE DFU Jumper.jpg|alt=A DFU jumper that's been installed and then cut once the board booted into DFU mode properly.|thumb|A DFU jumper that's been installed and then cut once the board booted into DFU mode properly.]] ====DFU Mode using Jumper method==== logic behind that: T2 signal lines are in many cases not inverted like on intel platform, but they need to be pulled high to trigger. SOC_DFU_RESTORE should be pulled either to 1.8v on T2 or 1.25V on M1 models. #locate FORCE_DFU jumper. on some Macbook Air boards there is just a testpoint which needs a wire to connect it with 1.8V. This signal needs to be pulled up to 1.8v to activate FORCE_DFU #power-reset the device (unplug the battery, plug it back). #Jump FORCE_DFU to 1.8v line, keep it jumped #connect DFU cable to the device. It will both activate and autostart the macbook which will act as a proper "power button" trigger, switching the device straight into DFU. #release the jumper (otherwise board would never be able to go past 1st stage of DFU restore) This results DFU mode in 10/10 cases unless there is something wrong with T2/Jumper/CD321*/Cable MacBook Air 2018 820-01521 board needs a physical jumper wire from testpoint (there is no debug "button" footprint on board). you can use PP1V8 ouput of T2 PMU as a pullup on the other side of the board M1(820-02020, 820-02016 and similar) Most apple silicon boards will not have populated pullups or jumpers on board, so you need to check the schematics for your particular board and figure how to really pull FORCE_DFU to 1.25V Example: [[File:MacBook M1 Air 2020 DFU Jumper.png|none|thumb|MacBook Air M1 2020 DFU Jumper. '''RV020''' is not stuffed on most boards, so even though pullup is here, FORCE_DFU is not really connected. so instead of jumping pads use lower pin of the RV020 to connect it to SWV011 PP1V25_S2 pin or populate it with 0 Ohm, resister. |403x403px]] Opposite on MacBook Pro M1 13" (820-02020) - there will be a missing 1.25V pullup resister RV005 which is unfortunately located on the keyboard side of the board. if you do not want to disassembly the device, so you have to find PP1V25 somewhere else. Since it is located quite far away, it would be better to solder a small wire between any exposed line and debug pad. If you have trouble using tweezers, just solder a jumper wire and cut it once you see device is in DFU mode. Silicon Mac DFU restore also restores operating system partition. You can use a better cable(TBT4) to speed up the process. ====DFU Mode using external switch==== Apple offers the option to access DFU in manual mode, forcing SOC_FORCE_DFU signal to 1V8_SLPS2R power rail; for T2 machines. Almost all the boards have the pads available for this purpose. Be aware, A1932 & A2179 don't have such pads! For long time wire jumper method has been used. However, is not easy to reach DFU and you need to resolder new wire each time. For this reason, I recommend to attach an external switch connected to the corresponding pads: #A1989 RE032 #A1990 SWK003 #A1932 & A2179 between pin 1/R8010 to pin 1/C7845, or other convenient 1V8_SLPS2R point #A2141 SWK003 #A2159 SE032 #A2251 RE032 #A2289 SE032 In case of Mx machines, 1V25_S2 (or 1V2_S2) is used instead of 1V8_SLPS2R: #A2337 SWV011 solder RV020 first, or connect the switch directly to its pad 1 #A2338 SV004/5 solder RV005 first, or connect the switch directly to its pad 2 #A2442 SV100/10 solder RV120 first, or connect the switch directly to its pad 2 [[File:DFU + ONOFF.jpg|thumb]]How to use the mentioned switch: #Connect power cable and DFU cable. #To avoid any weird symptom, force the machine off, pressing power button 5-8 seconds. #Press FORCE_DFU switch for 3-5 seconds; you should see DFU logo now. If machine resists to enter DFU, try "playing" with FORCE_DFU and power button. Sometime, the touch ID may cause problems; doesn't allow to enter DFU, or causing DFU failure. To avoid such problems, I recommend to use an external switch soldered on the PMU_ONOFF_L pads, similar with FORCE_DFU switch. ==== DFU mode using MacVDMTool ==== You can also use [https://github.com/stacksmashing/macvdmtool MacVDMTool] to put your mac into DFU mode. This tool uses your TBT Controller on Host mac to send VDM message to your M1 and Intel target macs. VDM means "Vendor Defined Message" and this is a custom PD signal which is sent directly to CD3217 controller to trigger DFU mode. The host device must be Apple Silicon in order to work! Run as SUDO. == NO DFU Mode Troubleshooting == #measure DFU_STATUS voltage. 1.8v indicates T2 is in DFU mode. In some cases pin might be shorted in T2 and needs external Pullup so CD3215/17 would be switched into DFU. #If DFU Status is high but device is not visible with known good cable - inspect TBT ROM and CD3215/17. To properly allow DFU Connection CD321* should be initialized and TBT rom should be loaded. If you suspect TBT controller, remove SPI straps betweeт TBT SPI ROM and TBT Controller. #if DFU_status is low, inspect if T2 is fully powered and receivesd signal. The easiest way to get DFU is described above. #if you have low resistance on DFU_STATUS line and it comes from SoC, try to temporarily force it high state with 100-200Ohm resister to pullup voltage (1.8/1.25 depending on platform) == T2 SoC ROM Manipulation and Serial Number Restore == The SoC ROM is an SPI Flash chip that contains the iBoot bootloader as well as all SMC variables, such as battery statistics and charge logs. It also stores the machine's serial number (SN). While the iBoot bootloader is encrypted, the remaining information is stored in ASCII format. This allows you to determine the machine's serial number without needing access to the chassis or booting the machine. One alternative method for repairing a "no DFU" device is to erase the SoC ROM, which forces the T2 chip into DFU mode as if a jumper were present. This approach has been promoted by many channels that sell T2 Flash tools, which are typically CH341 chips with soldered WSOP8 adapters, priced between $200 and $300. Due to numerous instructional videos on this subject, there's a non-zero chance of purchasing a board with an incorrect SoC ROM dump, possibly downloaded from random sources like badcaps or vinafix. Let's clarify some misconceptions: * DFU Restore fully restores the SoC ROM with an "original dump," but AC2 may transfer some information from the old dump, including variables that could potentially be the cause of the problem. * SoC ROM corruption can lead to issues like no power, no charge, and the inability to enter 4-Finger DFU mode. This might be the primary reason people have started manipulating the SoC ROM rather than simply using a jumper, however there might be cases where moving variables from old dump bricks the machine again. * The machine's serial number is tied to the T2 chip. If you don't have it or you have SN mismatch, activating the Mac and installing the OS may be impossible. If you want to attempt flashing the SoC ROM, follow these steps: # Back up the old dump. # Completely clean the SPI Flash. # Perform a DFU Restore. # Read the fresh dump and restore the serial number block from backup. The T2 SoC ROM SN block offset is: 28A000. Please note: This is not a method for changing the serial number. Although changing it will reflect the new number in "About This Mac," doing so will disable the Mac's ability to be activated the next time you restore it. For further information check the [https://logi.wiki/index.php/T2_Diagnostics_and_repair#T2_SoCROM_Programming T2 repair page], thanks to Muerto <br /> '''M1 devices do not need any manipulations, SoC rom will be restored with serial number in it.''' ==DFU error codes and troubleshooting== TO check if device is in DFU state, check voltage on SOC_DFU_STATUS. This goes directly to CD3217 on this port to switch it in DFU mode. If T2 is switched to DFU mode, proper level is 1.8V DFU_STATUS high but no DFU visible in Apple Configurator might indicate problem with TBT ROM or CD3217 '''1''' - The trackpad is not connected (For successful firmware, the MacBook needs a connected working trackpad). '''6''' - Probably could not write BridgeOS into service partition. Most likely SSD failure. There might be one hot NAND. Common symptom - T2 does not turn on S5 rails at all. If you have it in revive mode, try restore (All data will be lost!). Common symptom of Bad SSD volume is T2 tries SSD power resets every few seconds or up to 23 seconds. '''9''' - This error can have many causes, so quickly finding the cause of its occurrence is quite difficult. Here are some of the causes of this error: *BridgeOS partition not found (Use restore instead of revive, will format SSD), NANDs partition corrupted, NAND chips damaged or some similar. *Malfunctions on the processor itself or power lines of the processor / RAM. Also if there is no processor on the motherboard. *Flashing without a part of the cooling system (heat pipe) on macbooks with a large TDP. *T2 / SEP ROM mismatch (Different T2 and SEP ROM should be restored, not revived) or SEP ROM was damaged and needs to be replaced. '''10''' - Bad cable / unstable connection. '''21''' - Resolved with SoC ROM replacement. On macbooks with an M1 processor, this error also means problems with NAND chips such as: *Failure of one or two NANDs. *Mismatch between the NAND model and the reference designation on the board (When replacing memory chips, you no longer need to write anything to them using the programmer, just follow the model/place on the board). *Attempting to restore from recovery after replacing NANDs (After replacing NANDs, it is possible to restore only from DFU). '''35''' - probably bad trace on one NAND, sysconfig block cofiguration => NAND mismatch. '''56''' - bad or cracked stockholm chip. '''75''' - T2 booted in recovery mode (Revive wont work). '''3004''' - Bad or no internet connection on the MacBook. '''3501''' - (0xDAD) - target Mac is not connected to power. '''4005''' - SSD not detected error. '''4013 / 6 -''' errors indicate bad NAND Sysconfig or wrong position. '''4014''' - Unexpected reset. Might be caused by T2 RAM error, power rail failure or even a bad battery. '''4045 / 4042''' - Timeout error. Bad SSD will also cause T2 to power cycle its power supply every 20 seconds. this wont give any 100% related to SSD error but it is fully reliable method to confirm bad SSD. If you have Lock sign but no power after DFU revive, it is safe to say that both T2 and SSD work fine and problem is on Intel side. inspect S0 rails, no power might be caused by short on something like 5v rail or something what is used for communication pullups. It is always a good idea to check if after T2 boot device goes to S5 /S0 state. '''Post-DFU errors on OS Recovery''' GUI rendering issue/artifacts on loading screen - sometimes caused by throttling and maybe a bit bugged EFI Loader even on working machines. Happens with low/no battery, also if there is temp.sensor issue. '''-2003F -''' in most cases caused by internet connection. try using thunderbolt-LAN adapter. '''-1008F''' error while loading recovery even after DFU is related to icloud Lock device. Speculation is that most likely FMM lock or icloud block forces machine to load other environment which is in some cases not possible. If you have this error and DFU did not help (it helps in most cases because updated EFI probably fixes some bad link/certificate in Recovery loader) - remove device from FMM (Find My Mac) and icloud and try again. === DFU Fail Troubleshooting === Try known good battery and Trackpad. Disconnect all unnecessary equipment ( Touchbar, Keyboard, Fingerprint sensor). On some macs disconnecting battery and using external power supply helps to pass through 4014 error (device did unexpectedly reset itself and did not go to restoreOS state). Try different cable, inspect if device keeps being visible in DFU for long time. If it ocssionally disappears, troubleshoot connectivity (USBC Controller, Cable, usbc connector, etc) === iBoot log troubleshooting === === T2 devices === One way to get access to iBoot log, is a leaked potassium/banana cable device(this was used on apple factories to test/investigate failures on preproduction stage), this device sends VDM message to CD3215/17 and it starts passing through T2 debug port which yields hmac-sha1 hashes as log messages. Most actual panics are not encoded so you can define problems like NAND, RAM failure with much more precision. Messages are very similar to iPhone iboot logs. You can also use this device to read PCH logs on some machine. PCH logs might be helpful to define GPU failure or some other POST Intel EFI-level problems like bad wlan firmware or issue with thunderbolt. Messages are unencrypted. To read RAW iboot log you can use any serial adapter with 1.8 level compatibility, for example " '''FTDI USB to 1.8V 2.5V 3.3V 5V TTL UART Switch Serial Adapter Module"''' does have 1.8v support. If you solder direclty to the SOC_DEBUG RX/TX pins, you will see something like that: [[File:RAW SoC Debug log.png|none|thumb|763x763px|Serial log using '''"FTDI USB to 1.8V 2.5V 3.3V 5V TTL UART Switch Serial Adapter Module"''' + Simple Serial terminal on Windows Wires are connected to TP_SOC_DEBUGPRT_TX and RX (do not forget to cross it as you connect it with the adapter, RX goes to TX and vice versa)]] this log might be helpful during DFU, since it will show some panic logs in clear text. Unfortunately all other messages are "encrypted" with truncated hmac-sha1 hash which cannot be decrypted. However i am working on making a reference table for some messages. Some known, easy to interpret panics might be ANS2 - "Apple Nand Storage 2" panic would be related to one or multiple NAND chips failure. === M1+ === On M1 you can use and compile [https://github.com/AsahiLinux/macvdmtool macvdmtool]. This software allows you to send force dfu, reset and force serial commands to the cd3217. To get serial log you need to compile/run it on Big Sur since newer versions need you to disable <code>AppleSerialShim</code> kernel extension which is not possible on newest versions due to lack of Kernel Dev packages. This log would be very similar to T2 and will definetely help with troubleshooting if you have issues in DFU. It can also be used to send FORCE_DFU VDM message which works exactly like jumper method but no need to open the device. To use it you need to find proper TBT cable with SBU1/2 lines populated (any charging cable wont work, best way is to check USBC pinout and use MM to confirm.) === Sonoma Finder restore === since MacOs Sonoma, DFU restore can be performed directly from finder. For some not quite obvious reason, this type of restore provices way more verbosity in Console logs, in some cases it can even pinpoint failed component on board. [[File:DFU on Sonoma.png|none|thumb|700x700px|found by @leshuq. This particular log indicates firmware update fail ('''madea''') which was caused by bad power switch for dp2hdmi converter on board. This issue would be close to impossible to troubleshoot or find without exact error.]] == Experience == ===(inwerp):=== Case: Macbook Pro 2018 15', 5V shortly 0.3A, than 0.04A-0.08 floating, all G3HOT present. Died with no particular reason, stopped charging and simply did not start up after next reboot. - Did not work with USBA-USBC adapter (claimed to work by [https://help.apple.com/configurator/mac/2.7.1/#/apd0020c3dc2 Apple Article]), used thunderbolt cable. - Apple Configurator shows DFU logo without key combination, but flashing in this mode will end up with a undefined error. - Key combination works like 50/50, no particular pattern, best looks like DFU LOGO - SMC RESET Combo 4 Sec till DFU Logo disappears, shows again, now flashing works. may end up with the connection timeout, target device will start to boot, then shutdown at some point. Macbook Pro 13 2019 820-00850 After minor liquid spill on power button / cd3215 chip. After cd3215 repair device freezes on apple logo without progress bar, does not boot into internet recovery. For some reason DFU Restore fixed the device, probably waterdamage on power button connector might somehow damage BridgeOS? ==='''(Liminalsunset):'''=== DFU Restore on T2 Mac: MacBook Pro 16" 2019 It's possible to restore the T2 firmware on this machine using a MacBook Air, Mid-2013 13" laptop. It appears that a USB-C mac is not required to initiate the process. Both systems were running Catalina 10.15.7. This does erase the SSD. I used Internet Recovery to restore a backup and it worked fine after. Activation Lock and FileVault were enabled prior to procedure and do not appear to affect it. Works with Target MacBook Pro powered off of battery. To enter DFU mode I used: 1) Turn off MBP and plug in USB A to USB C cable (third party) from MacBook Air into MacBook Pro, port closest to you facing computer on the left side 2) Locate left Control and Option keys on MacBook Pro, as well as right Shift key. 3) Press Power button for 1 second, then hold keys above down with power button for 8 (real) seconds. MBP will flash Apple logo, then it will disappear 4) DFU device should show up in Apple Configurator 2. Rest of process is uneventful and works normally. Once restore is complete MBP may need manually powered off and on to start into Internet Recovery ===(Dusten Mahathy)=== '''Case 1:''' 820-01700 Unit not booting without battery present. This board will boot on a 96watt adapter normally. I have seen 3 cases where the board doesn't boot on the adapter alone, and wouldn't charge a stone dead battery normally. Without battery connected: 20v with a jump to 300-500mA then back to 70mA and kind of sit there. With battery connected: It would very slowly raise to charging amperage. (It would take 2 to 3 minutes for it to reach 4 and a half amps, vs the normal 30 seconds to a minute) After diagnosing the charging circuit, and seemingly everything on the board is physically okay, I decided to DFU restore the unit, thinking something with the SMC, that T2 is now handling. This resolved the issue. '''Case 2:''' 820-01700 Prohibition Symbol: This seems to be caused by the board being disabled. Flashing the T2 ROM, and restoring via DFU resolved the issue. ===(Ed Hallman / crumblenaut)=== Exact same deal as Dusten's Case 1 above - 820-01700 board, user reported crashing after liquid exposure and previous board-level work, eventually ending with the system not booting even WITH the battery present. With no battery we saw 20v with a jump to 300-500mA then back to ~70mA and kind of sit there, and with the battery connected we saw a slowly raising charge amperage. DFU ''REVIVE'' would fail with the error code 6, despite (going off of the table below) the fact that all SSD rail resistances were good and voltages were present. After confirming that the user had a backup (thank the dark lord), I performed a proper DFU ''RESTORE'' and that got it powering on and booting again. After first boot with Apple logo the system would power off. Second power took some time with fanspin and nothing on the screen, then fans stopped, then fans spun backup and screen initialized. Cmd+Opt+R got it reinstalling right away. From Experience: (Dusten Mahathy) 820-00958 The unit came in with slight liquid damage on U7650, U6940, and Q7660. Shorted was PP5V_G3S. The shorted component was U8245. After replacing U8245, I found that PP5V_G3S was 10v, instead of the 5v that it was intended for. After only a few seconds of having the board on again after replacing U8245, to check measurements, it was shorted again. At this point, I replaced U7650, Q7660, and repaired several traces and capacitors, resistors. Once again, replacing U8245. This time when powering on the board PP5V_G3S, was at its normal voltage. However, the unit still would not boot. Hovering about 20v 100mA. So after further investigation, I found PPVCCIN_AUX_PCH was not being generated. This was due to PPVCCINAUX_VCC being shorted to ground. This failed component was U7400. Which was powered by PP5V_G3S. So, after replacing U7400, I was making progress. The unit would start the boot process, getting 1v8 on PPVCC_S0_CPU for a second, then 0v, but pulsing. So on/off/on/off scenario. I found the pulsing started all the way back at PP1v8_SLPS2R. I did find, however, that if I removed R7210, R7220, and R7230 the system would be stable again. These are the three resistors that powers PPVCC_S0_CPU. At this point, I am pretty certain that I have some sort of CPU failure. Wether it be the CPU itself or not, I am not sure. I felt that it was, as I have a suspicion the 10v going through the CPU MOSFETs probably killed the CPU. However, as a last desperation, and for research, I decided to attempt to DFU the machine. At his point, it failed, and I got '''error code 9'''. This was somewhat expected, as all the power rails are pulsing currently. So what I decided to do, was remove the three resistors mentioned early, to make the system stable again. At this point, the DFU restore went through successfully. This leads me to believe that CPU failure can cause '''error code 9''' == Links / Video == DFU on T2 Machines <youtube>https://www.youtube.com/watch?v=e0jevSCQxGE&</youtube> '''Comprehensive guide''': https://mrmacintosh.com/how-to-restore-bridgeos-on-a-t2-mac-how-to-put-a-mac-into-dfu-mode/ Error codes [https://t.me/mobility_labs/120 Source] [[Category:Mac]] jzz1y199q4zv217gwi1h61jh60mdjbx DFU Mode Restore (iOS) 0 731 2913 1726 2020-10-02T22:32:53Z Chrisb 1 2913 wikitext text/x-wiki '''DFU mode restores on iOS devices should only be necessary if a traditional restore fails.''' and for the people in the back... '''DFU mode restores on iOS devices should only be necessary if a traditional restore fails.''' In terms of troubleshooting software issues on an iOS device, it is always advisable to progress from least invasive steps first: Level 1 (least invasive): Normal device operation software update via iTunes. Just plug the phone into a computer with an updated version of iTunes. Level 2: Recovery mode (device rebooted into connect to iTunes screen) iTunes update. If successfully there will be no data loss and device will be updated to latest Apple signed iOS version compatible with iOS device. Level 3: Recovery mode restore. This WILL erase everything on device and update device to latest signed iOS version Level 4 (most invasive): Device Firmware Update (DFU) resotore (device rebooted and and powered on to a blank black screen. When in DFU mode, the only available iTunes option will be to restore device. If device receives itunes error message with KGB (known good) cable, then hardware issues are suspected. If data is not important, this should be done before opening a device. ==='''How to enter device into recovery mode:'''=== =====iPhones 6s(+) and older:===== #Connect device to iTunes or 3utools computer via lightning cable #Press the side/power button and home button simultaneously. #Once the screen has turned black continue to press both button until the connect to iTunes logo has appeared. =====iPhone 7(+):===== #Connect device to iTunes or 3utools computer via lightning cable #Force restart device by simultaneously pressing the side/ power button and volume down. #After device has rebooted continue to press both button until the connect to iTunes logo has appeared. =====iPhone 8(+) and newer:===== #Connect device to iTunes or 3utools computer via lightning cable #Force restart by rapidly tapping volume up, then volume down, then press and hold side/ power button until device restarts. #After device has rebooted continue to press side/power button until the connect to iTunes logo has appeared. ==='''How to enter device into DFU recovery mode:'''=== =====iPhones 6s(+) and older:===== #Connect device to iTunes or 3utools computer via lightning cable #Press the side/power button and home button until the screen goes black #Once the screen goes black continue to press both button for a count of approximately 7 seconds #release side/power button while still pressing the home button. #Keep pressing the home button until iTunes or 3utools recognizes the device in DFU mode. #If done correctly, device will be powered up to a blank black screen and will appear in iTunes. If unsuccessful, force restart and try again... =====iPhone 7(+):===== #Connect device to iTunes or 3utools computer via lightning cable #Press the side/power button and volume down simultaneously #Once the screen has turned black, continue to press both button volume down and side/power buttons for approximately 7 seconds #Release side/power button while still pressing volume down button #If done correctly, the device will continue to have a black screen & will appear in iTunes or 3utools with only the option of a full restore #If unsuccessful, hold side/power button & volume down to force restart and try again =====iPhone 8(+) and newer:===== #Connect device to iTunes or 3utools computer via lightning cable #press & release volume up, followed by volume down #then press and hold side/power button until the device screen goes black (approx 13 seconds) #Once the screen goes black continue to press both button volume down and side/power buttons for approximately 7 seconds #release side/power button while still pressing the volume down button. #Keep pressing the volume down button until iTunes or 3utools recognizes the device in DFU mode. #If done correctly, device will be powered up to a blank black screen and will appear in iTunes or 3utools. If unsuccessful, force restart and try again... ''<nowiki>*</nowiki>note: the timing for iPhone 8 and higher is far more precise and it is quite difficult to achieve on first try. You can put an iPhone 8 and newer into DFU mode, you just have to try harder.'' <br /> [[Category:iPhone 5]] [[Category:iPhone 5c]] [[Category:iPhone 5s]] [[Category:iPhone 6]] [[Category:iPhone 6+]] [[Category:iPhone 6s]] [[Category:iPhone 6s+]] [[Category:iPhone 7]] [[Category:iPhone 7+]] [[Category:iPhone 8]] [[Category:iPhone 8+]] [[Category:iPhone SE]] [[Category:iPhone SE (2020)]] [[Category:iPhone X]] [[Category:iPhone XR]] [[Category:iPhone XS]] [[Category:iPhone XS Max]] [[Category:iPhone 11]] [[Category:iPhone 11 Pro]] [[Category:iPhone 11 Pro Max]] [[Category:iPhone 12]] [[Category:iPhone 12 Max]] [[Category:iPhone 12 Pro]] [[Category:iPhone 12 Pro Max]] ip2tsygag08dkgait61dewlsco2p76k DFU mode restore (Macs) 0 1421 3122 2020-10-07T14:57:57Z Chrisb 1 Redirected page to [[DFU Mode Restore (Macs)]] 3122 wikitext text/x-wiki #REDIRECT [[DFU Mode Restore (Macs)]] ffwafb1mmeejqblo6hlc51jl5p1p92v Data Recovery with Open Source Software 0 1918 6528 6411 2022-06-10T19:55:35Z Inwerp 16 6528 wikitext text/x-wiki [[File:hddboy.png|thumb]] ==Overview and SMART data== There are some cases when customer can't afford data recovery and it does not hurt if you fail or make it worse. Following procedure should not be considered as any sort of sollution for important data recovery - if data worth recovery lab(400-600€ ++ ) - DO NOT TRY IT. One of the most important thing to check before even trying to access data is SMART report of the hard drive. on Ubuntu/Debian based Linux distribution you can access it directly through standard disk utility. There are plenty of programs for MacOS / Windows, the most important thing you need to know is that many of them do not interpret "pending sectors" value and might show almost dead drive as something like "80% health" which might be absolutely wrong, so ignore this "summary" information. [[File:FailedSmart.png|none|thumb|Example of a garbage software, showing "caution" on almost dead drive. F4B pending equals 3915 unreadable sectors. 0 Reallocated Sector Count indicate none of them could be read by firmware.]] If you connect it via SATA, be sure SMART reporting is enabled in Bios settings. There are many values in list, but there are few which are most important: '''Current Pending Sectors Count''': This value represents the number of sectors which are marked as "unstable" and will be transfered by HDD internal firmware as soon as they are successfully read. The problem is, that if you actually have that value with a number more than zero - you have already lost some data and your drive is already failed. Since reading of one sector and moving it to another place takes just a tiny amount of time, you should not ever catch it in SMART. As soon as unstable sector is found, drive tries to read it multiple times untill it is being transferred to another potentially good block and it adds its position to the Translator(map of the LBA sectors on drive) and G-List(Growing list of bad sectors on drive). The problem is, that higher than zero value is almost always indicates major reading problem: either scratch or (much worse) head damage. If you see this value growing rapidly while transferring data - '''STOP immediately'''. First of all, it might switch your drive into a "busy" mode and drives stops being recognised by the OS. Second of all, constant writing to the service area (updating G-List + Smart values) might lead to firmware corruption which will also render drive unmountable. '''Reallocated Sector Count:''' once unstable sector is successfully transferred, CPSC value is decreased, RSC value is increased. Having 100-500 bad sectors is not as bad as it seem to be (Note that many programs show hex values, so you might need to convert it to decimal because "F00" would indicate 3840 bad sectors). '''Uncorrectable Error Count:''' in theory, CPS which were failed to read will be marked as lost and moved to UEC. In practice this value might stuck on zero and drive might stop being recognized by the OS because firmware might be configured to figure pending sectors before going into ready state (during this process it might as well hit some bad sectors in the service area and after you power-reset the drive, it will not be able to boot/initialize at all) '''High Fly Writes:''' this value is a common indication of failed head. 1-100 writes are mostly fine, but you will see this value increasing very rapidly if you have bad head. '''G-Sense Error Rate:''' this value indicates how many times drive indicated some mechanical steress and disabled operation. For example if you turn your laptop too fast or drop it while its on - this value will increase. '''Ultra ATA CRC Error Count:''' this value might indicate bad sata connection(for example on MacBook Pro 13" 2012 Mid this is a clear indication of broken cable) So long story short: while transferring your data it is really important to check and update SMART values every 5-10 seconds and keep an eye on Pending / Reallocated sectors. You should not try to clone drive with increasing pending sectors, maximum what you could do is to backup most important files. Not VERY important though because it might, as well, make professional data recovery impossible(for example, if due to multiple retries head crashes to the surface and scratches it... exactly on the location of your most important data). '''If you have a HDD drive with bad sectors, NEVER use any sort of file recovery software. Most basic rule of data recovery - work with an image/clone, not source.''' ==Software/Hardware:== #Linux (Ubuntu/Mint/etc) #[https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html gddrescue] (sudo apt install gddrescue). Read its manual at least briefly. #[https://www.smartmontools.org/ smartmontools] and [https://sourceforge.net/projects/ddrescueview/ ddrescueview] #[https://github.com/sgan81/apfs-fuse APFS Fuse] #SSD Adapter. It does not really matter if you use USB-SATA or direct SATA connection. For macbook drives use usb-apple adapter, thats totally fine (there are gen.4 PCI-E cards, but they are difficult to find / too expensive. Check [[Apple SSD connectors and adapters list|Apple SSD page for some links]] #KVM switch or USB with on/off button '''IMPORTANT NOTE: you should disable SSD trim on data recovery device especially if you use some file signature-search software like Diskdrill or Photorec.''' '''Ubuntu/Mint: sudo rm /etc/cron.weekly/fstrim''' '''Windows: fsutil behavior set disabledeletenotify 1''' '''MacOS: sudo trimforce disable''' ==Recovery(Terminal commands):== Theory: #If you have failing/freezing SSD drive, you should try to make an image of it as soon as possible. You may try to copy 1-2 most important files if you can mount it but never try to transfer big amounts of data. Obviously Photo Library is actually a huge folder with thousands of files. After you cloned the drive you may try data recovery software, disc utility repair, etc. DO NOT ATTEMPT TO FIX ORIGINAL DRIVE. #Note on Apple-Samsung SSDs: they tend to freeze once they hit a bad block. If it is frozen, you need to power-reset the drive and continue data recovery. This might skip few block of data, but in most cases it is 0.1-5% of whole drive so it might not be critical for most of the data sudo lsblk this will show you list of block devices. if you cant understand it, simply open Disk utility or gparted to see dist identities in graphical manner. Linux disks look like that: /dev/sdXY where X is disk number and Y is a partition. my normal command looks like that: sudo ddrescue -df -r0 /dev/sdX /dev/sdZ customername.log X is a SOURCE ID , Z is TARGET ID. -df uses forced overwrite (to write on other drive) -r0 means it will not retry failed block and go further. Log is necessary so if you re-run the command it will continue from the point it was stopped. I usually use a physical drive as target, brand new clean drive or pre-wiped(owerwritten with zeroes) one. now you should see whats going on with the cloning process: if it goes through with couple of errors - you are lucky. If it freezes for more than 10-20 seconds, disconnect the drive ( or use KVM switch ad a reset button). Example bash script for such cases: #!/bin/bash while : do sudo ddrescue -df -r0 /dev/sdX /dev/sdZ customername.log sleep 5 done if device disappears, ddrescue quits and script sleeps a little bit. After you restart it it starts with the next block and goes further. if you have 100-300Mb/sec transfer rate, it might take you 1-2 hours to clone a drive. after you have a 90%+ clone, you can try to mount APFS partition with APFS Fuse(link above) or use known good data recovery tools like Diskwarrior (HFS-only) iBoySoftware or Diskdrill. In some cases you might be able to mount cloned drive or fix it with MacOS disk utility ==Some interesting articles for further research== [https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html GNU DDRescue Manual] [https://www.stderr.nl/Blog/Software/Linux/HfsFilesystemRecovery.html HfsFIleSystemRecovery] HFS file system repair/recovery in Linux https://photobyte.org/recover-damaged-mac-hfs-disk-linux/ Images and corrections pending, by questions you can reach me on Rossmann's discord as @inwerp aqoim3w3mdci1dv5mowxo1g4kgd3744 Data recovery with PC-3000 0 2005 5926 2021-07-02T21:06:09Z Inwerp 16 Created page with "This page is not intended to be a PC-3000 guide but it will mainly describe some features and techniques to recover data from Apple SSD drives. This matter is barely documente..." 5926 wikitext text/x-wiki This page is not intended to be a PC-3000 guide but it will mainly describe some features and techniques to recover data from Apple SSD drives. This matter is barely documented even on ACELAB website so i decided to gather some info. Long story short, PC3000 is (at the moment) almost as good as ddrescue with asmall difference which will be described later. One of the most important things to keep in mind before you consider buying PC-3000: it does support apple AHCI Gumstick (gen.4) drives but controller used by apple drives is not supported and probably will never be. This means that if you have firmware/NAND problem, most likely it wont really help you unless device works for a while after you power-cycle the drive. In this case Data Extractor (part of PC-3000) will provide excellent job: it can soft and hard reset the drive and you can configure it to skip few blocks and try further. Since Chris is interested in building ddrescue-helper which would use power switch to power cycle the device, i think it worth trying to replicate this feature as a DIY project, basically we need bash script, relay/power switch with command-line interface and some RTFM to make skip-ahead configurable. combined with ddrescue log viewer it might be possible to create a device which will do everything pc3000 can probably do with apple SSD drives. if you check [https://blog.acelaboratory.com/pc-3000-portable-pcie-x16-and-apple-ssd-adapters.html Acelab website], you may see that it supports "logical issues" for all drives(except onboard), but "physical issues" are not supported. This means that PC3000 will not be able to inject "Loader" (PC3000-friendly firmware which can rebuild its own translator or do some other magic to get your data). Basically that means that if your drive is in BSY state or not detected (cant read serial) - the only option you have is a freezer/heatgun method. (of course, LDO ICs worth checking first - maybe you are lucky and your drive simply lacks of power on NAND). One of common problem of SSD drives is that service data might be corrupted or drive might stuck in self-check. I also noticed that Apple SAMSUNG AHCI drives freeze as soon as they meet single bad block. The bad thing is that if you do not power-cycle and skip block, it will eventually damage the G-List (lifetime badblock list which grows as drive finds bad blocks) and drive will fail to initialize at all. There might be only one shot to clone such drive, so use it wisely. One of the core DataExtractor features is a possibility to extract only needed data, so it kind of combines file manager and ddrescue-like reader. The main issue of DDrescue is that if you start from bLBA 0 and go further, you will save 5-7GB of useless data (operating system, programms, temp files) and might never reach customer's data till drive fails. I spent some time looking for this chart. These are fancy blinking lights in PC3000 Utility, worth checking to understand wtf is going on: '''Status register:''' BSY — Drive Busy DRD – Drive Ready DWF – Drive Write Fail DSC – Drive Seek Complete DRQ – Drive Request CRR – Corrected by controller IDX – Index ERR – Error Received from the drive’s error Register '''Error register:''' BBK – Bad Mark Block: A bad sector mark was found in the ID field of the sector or an Interface CRC error occurred UNC – Uncorrectable Data: An ECC in the data field could not be corrected (a media error or read instability) IDNF– ID Not Found: The required cylinder, levitra, head, levitra, and sector could not be found, levitra, or an ECC error occurred in the ID field ABRT– Aborted Command: The requested command was aborted due to a device status error TONF– Track 0 Not Found: Track 0 was not found during drive recalibration AMNF– Data Address Mark Not Found: During the read sector command, levitra, a data address mark was not found after finding the correct ID field for the requested sector (usually a media error or read instability) g34bzsan9nbsofd0s5369l5fcmp296b Demux 0 2219 6791 6790 2023-03-17T16:12:35Z Chrisb 1 6791 wikitext text/x-wiki Demuxing is the process of disabling the dGPU to bypass failing/failed GPU chips. This process is common on the 2011 MacBook Pros with AMD GPUs. The preferred method is to flash the graphics mux (gmux) FPGA chip with programming to disable the dGPU. It keeps the GPU powered down to save power and routes the iGPU to the internal display. The process removes the ability to use an external screen. [https://doslabelectronics.com/Demux DosLabs] sells keys to flash the gmux and retain keyboard brightness control. You will need to install a kernel extension on High Sierra. macOS before High Sierra works automatically. High Sierra is the newest Apple-supported macOS for the 2011 MacBook Pros. Running an unsupported macOS newer than High Sierra can be accomplished with the [https://dosdude1.com/software.html DosDude patchers] or [https://dortania.github.io/OpenCore-Legacy-Patcher/ Open Core Legacy Patcher] (OCLP). DosDude1's patcher automatically applies the patch. The OCLP has the patch as an option. It may not be applied by default. The process to flash the gmux is in the DosLabs link above. Afterward, on High Sierra, follow these [https://doslabelectronics.com/Demux#backlight instructions]. Here is the [https://redi.rs/bkltpkg link to the mirror]. The instructions are also included below:<syntaxhighlight line=""> Reboot the machine while holding CMD+R. Once recovery mode is booted, open the terminal and enter the following: csrutil disable Reboot the machine. Install the package. </syntaxhighlight> 5gxddkg9unooqksidbzu3k47gbxuk7w DeployStudio Catalina 0 707 6838 1489 2023-05-17T20:58:36Z Chrisb 1 changed allowing imaging of newer systems 6838 wikitext text/x-wiki DeployStudio does work with Catalina. Please be aware you will need to ensure your Boot ROM has been updated to enable APFS booting. There is a BootROMUpdate NetBoot image floating around. Please note, DeployStudio does NOT support restoring APFS to HDDs at all. You will only be able to do the top workflow on a SSD. You can do the bottom workflow on a HDD. You will need a USB updated to Catalina. *Install and Update Catalina *Install DeployStudio 1.7.9 ([https://web.archive.org/web/*/http://www.deploystudio.com/Downloads/DeployStudioServer_v1.7.9.dmg archive]) *Open System Preferences : Security & Privacy : Full Disk Access *Click the lock to authenticate *Open Finder : click go : type /bin and Enter *Drag sh from /bin to the Full Disk Access window The DeployStudio Runtime should now work on your USB drive To create the Catalina Image you should be booted to the USB created above in the Mac you would like to image. Be sure to have plenty of free space on your USB. *hdiutil create -size 30g -type SPARSE -fs APFS -volname "Macintosh HD" filename.dmg *hdiutil attach -nobrowse -noautoopen -noverify -owners on filename.dmg.sparseimage *diskutil apfs listsnapshots /dev/disk1s1 | grep "+--" | cut -d" " -f2 | xargs -I{} sudo diskutil apfs deleteSnapshot disk1s1 -uuid {} (substitute your source volume device name. Run once for the Data volume and once on the System *sudo asr restore --source /dev/disk3 --target /dev/disk5s1 --erase --noprompt (please substitute /dev/disk3 with the container of the volume to be imaged and /dev/disk5s1 with the output of hdiutil for the volume named Macintosh HD) *Use Disk Utility to eject the image file *hdiutil convert -format UDZO filename.dmg.sparseimage -o filename.dmg *asr imagescan --source filename.dmg Now you can put this in the DeployStudio/Masters/APFS directory and make a normal workflow incorporating this image. To make a workflow in DeployStudio that will update the Boot ROM and bridgeOS *Build a workflow that installs 10.13.6 HFS *Add a generic script called copy_catalina.sh *<syntaxhighlight lang="bash"> #!/bin/sh cp -R "${DS_REPOSITORY_PATH}/Files/Install macOS Catalina.app" "${DS_LAST_RESTORED_VOLUME}/Applications/" exit 0 </syntaxhighlight> *Add a generic script to the workflow called update_catalina.sh. Check the Postponed execution *Create a script that contains *<syntaxhighlight lang="bash"> #!/bin/sh "/Applications/Install macOS Catalina.app/Contents/Resources/startosinstall" --agreetolicense exit 0 </syntaxhighlight> d9i7u9ekpx2841c19e6668yvload4p8 Diagnostic Shortcuts 0 425 973 972 2020-04-04T14:28:34Z Inwerp 16 /* PM_SLP_S* rails quick check */ 973 wikitext text/x-wiki ===PM_SLP_S* rails quick check=== Most boards have DEBUG LED No-Stuff circuit on board. [[File:Debug Led.png|left|frame|You have all PM_SLP rails as well as PP3V3_S5 all together, on most MacBooks this circuit is placed on top of the board which means you can start the diagnostics without even removing it from case. Search for DBGLED to locate the area. Many test points here represent SLP signals. PP3v3_S5 can also be checked here. Since it is being enabled by SMC and generated from PPBUS, it also indicates functional PPBUS, PP3V42_G3HOT and SMC. ]] <br /> lc1e0rbaka8ysjf0ba0zp6fu1gbwr0c Diode mode BGA continuity check 0 1429 4999 4996 2020-10-11T07:04:39Z Chrisb 1 4999 wikitext text/x-wiki There are many cases when you do not have time to reball or resolder SMC or any other BGA chip but you need to check if there is continuity between IC and some line. In most ICs there is a diode between ground and data line. If you isolate the part of the circuit, you can see if you got 0.4..0.6 Voltage drop from ground to pin. Red probe on ground, as always. Example: 820-00165, no backlight, PPBUS on backlight, no boosting. # Disconnect LCD, Remove diode on pos. D7701 to isolate the circuit[[File:Diode7701.png|none|thumb]]<br /> # Put red probe on ground, black probe on D7701 pin 2. As mentioned, OL means no continuity to IC. Example 2: Quarter spin 820-00165, U5110 is okay and PP3V3_S5_AVREF_SMC is also present/not shorted to ground. Remove U5110 and check continuity same as mentioned above. [[File:diode7701.png|none|thumb]] oe1cz3zhjgj4rhb4ws8a8v1gqejsi5b Disable Spotlight on External Drives 0 529 1150 2020-04-29T23:05:31Z Chrisb 1 Created page with "To have <code>mds</code> ignore all external volumes including network volumes run the following command: $ sudo defaults write /Library/Preferences/com.apple.SpotlightServer..." 1150 wikitext text/x-wiki To have <code>mds</code> ignore all external volumes including network volumes run the following command: $ sudo defaults write /Library/Preferences/com.apple.SpotlightServer.plist ExternalVolumesIgnore -bool True To be able to re-enable indexing for certain external volumes, run this command instead: $ sudo defaults write /Library/Preferences/com.apple.SpotlightServer.plist ExternalVolumesDefaultOff -bool True Full article [https://enterprisemac.bruienne.com/2015/09/15/disable-spotlight-indexing-of-network-volumes/ here] 12vyh97lli83nxn0861kb3tpkjt6yqp EFI 0 28 6891 6297 2023-08-22T19:02:49Z Muerto 527 6891 wikitext text/x-wiki ==EFI Bootup CS Graph== ===820-4924=== SPI CS during a successful bootup on an 820-4924. The first 200ms burst seems to signify there is good communications with the EFI. With bad traces, that initial burst lasts around 2ms. Near the start of the 1.2 second burst the chime sounds and backlight turns on. [[File:Successful_Boot_EFI_1.jpg|400x400px]][[File:Successful_Boot_EFI_2.jpg|400x400px]] ===820-3437=== ====Communication issue==== CPU VCore, SLP_S5# and SPI_CS0_L when R6120 is removed on an 820-3437, simulating communication issue with SPI ROM causing power cycling. <div><ul> <li style="display: inline-block;"> [[File:820-3437 Pulsing CPU VCore.jpg|thumb|none|400px|CPU VCore]] </li> <li style="display: inline-block;"> [[File:820-3437 Pulsing PM SLP S5 L.jpg|thumb|none|400px|PM_SLP_S5_L]] </li> <li style="display: inline-block;"> [[File:820-3437 Pulsing SPI CS0 L.jpg|thumb|none|400px|SPI_CS0_L]] </li> </ul></div> ====Commmunication ok==== Expected SPI_CS0_L behaviour before RAM initialization. This board has RAM issue, on a working board there will be more activity afterwards when EFI is copied into RAM. [[File:820-3437 Beeping SPI CS0 L.jpg|thumb|none|400x400px|SPI_CS0_L]] ===820-00840=== ====EFI ONLY==== [[File:820-00840_2.4s_EFI.png|alt=]] SPI_MLB_CS_L 2.4 second graph [[File:820-00840_12s_EFI.png|alt=]] SPI_MLB_CS_L 12 second graph [[File:820-00840_24s_EFI.png|alt=]] SPI_MLB_CS_L 24 second graph. Charger chime happens at the end of the communications [[File:820-00840_SPIROM_USEMLB_B_SPI_MLB_CS_L_Y_24s_EFI.png|alt=]] SPI_MLB_CS_L in blue, SPIROM_USEMLB in yellow. 24 second chart. ====EFI + SMC==== [[File:820-00840 LPC FRAME L B SPI MLB CS L Y 2.4s EFI SMC.png|alt=]] LPC_FRAME_L in blue, SPI_MLB_CS_L in yellow. 2.4 second graph. [[File:820-00840_LPC_FRAME_L_B_SPI_MLB_CS_L_Y_24s_EFI_SMC.png|alt=]] LPC_FRAME_L in blue, SPI_MLB_CS_L in yellow. 24 second graph. ==EFI Quad SPI== because they switched to Quad SPI, they can't use HOLD# directly to bypass SPI ROM as it's now an I/O pin. It uses a different SPI ROM chip (the smaller WSON8 footprint IIRC) which supports Quad SPI. Typically it has to be enabled by setting the "QE" (Quad Enable bit) with a programmer, then those 4 pins will act as I/O all the time. With Dual SPI that was used before, the communication starts in standard (single) SPI and then a command is used to switch to Dual SPI. [5:01 PM] piernov: SPI is originally a protocol that works with 2 simplex data lines(only one direction, one transmit MISO, one receive MOSI, viewed from the SPI ROM). In dual mode, those 2 lines are now half-duplex data lines (bidirectional, but not at the same time, it alternates directions) and data is shared across them (so that the device can send or receive twice as fast). In quad SPI mode, it's similar to dual SPI but you now have 4 data lines because you use the Hold and Write Protect signal lines as data lines, so you can transmit 4 times as fast as on a standard SPI bus. ==EFI Tools== [https://github.com/sadponyguerillaboy/Swift-Apple-EFI-Patcher GUI EFI Tool]<br> [https://github.com/sadponyguerillaboy/Python-Apple-EFI-Patcher Script EFI Tool]<br> [https://github.com/MuertoGB/MacEfiToolkit Mac EFI Toolkit (mefit)] ==EFI ME Cleaning== How to clean the Intel ME (Management Engine) region of the EFI:<br> <youtube>exfG5Iywmjk</youtube> The user Crumblenaut has created a guide based on Piernov's video above that should spell out this process in a series of hopefully easy-to-follow step-by-step instructions. You can find it on the [[Clean EFI ME Region|Clean ME Region]] wiki page. ==EFI Change Serial Number== How to edit the serial number of a Mac<br><br> <youtube>poA8HByYqTM</youtube> ==EFI Bootup Diagram== [[File:EFI_Boot_up_Diagram.jpg|860x860px]] ==POST== <youtube>K63AvEW3XLw</youtube> ==SPI ROM compatibility== It is not recommended to replace the SPI ROM chip with a different model. Different SPI ROM chips may have different working voltage (1.8V or 3.3V), different operating frequency and latency, different command set and especially support for Quad SPI mode which may not be enabled by default. In particular, the 2015 MacBooks use Quad SPI mode, so the chip must support it and have its QE bit set to one. Additionally, Intel platforms all have Intel Management Engine nowadays, and it can be picky about the SPI ROM. The firmware contains a list of supported chip in the VSCC table, you can check it with UEFITool NE or Intel FITC if ever you have to swap with a different chip. ==Swapping SPI ROM between boards and using pre-programmed ICs== Buying pre-programmed chip off of eBay is not a good idea. Sometimes it works, sometimes it doesn't, because the people that sell them don't necessarily know what they are doing and just flash random dumps found on badcaps.net or Vinafix.<br> Using a pre-programmed chip or a chip from another machine means you will have the wrong serial number. In the best case the serial number is blank and the board has to be serialized using Apple's Blank Board Serializer. Otherwise it has to be edited to match the original one, and the checksum for the Fsys store (which contains the ssn variable) has to be recalculated.<br> Using a chip from another machine means you get the ME region that has already been tied to the new machine's PCH. This will cause all sorts of random problems depending on the machine, incl. shutdown after 30 minutes, long POST delay, fan running at full speed, ME not working, freeze/kernel panic while booting macOS, apparently even webcam not working on some Mac boards. The ME region has to be cleaned, and there's a specific procedure for that, 90% of the videos or tutorials you'll find are wrong about it. Don't copy/paste with an hex editor, don't use MEInject. This will put a raw ME region without manufacturer settings, and Macs for example have specific settings for the ME region that will be lost (and it can also cause similar issues to "dirty" ME region). The correct way is to use Intel FITC, see tutorial on win-raid forums. Some pre-programmed chip also may not have the ME region cleaned properly. ==APFS BootROM== Apple switched to APFS by default with High Sierra on machines with SSD (and HDD since Mojave), which required a BootROM update (part of the EFI) to support booting from this filesystem. Meaning that if you use an EFI with an old BootROM (either flashing a random dump or using a pre-programmed chip without the update), suddenly you won't be able to boot from a drive with High Sierra or newer on it, and you won't even see it in the boot menu. One solution is to reinstall macOS on the internal SSD to trigger the BootROM update. ==WSON8 adapter== You can buy a WSON8 adapter board for your programmer, it should come with both the 8x6 and the 6x5 footprints for 2013 and 2015 machines respectively. You don't need to use hot air to solder it on the adapter, you can just run the solder iron with some solder on the edges. <br /> === Links === https://github.com/ISpillMyDrink/UEFI-Repair-Guide/wiki <br /> [[Category:Mac]] jwwaa8luvrwsxg2p2rcclb1i5xhbqgt ERR CERT INVALID 0 2074 6204 6180 2021-10-26T19:30:23Z Francis 4 6204 wikitext text/x-wiki ===='''From ''Sept 30th 2021'' Let's Encrypts previous root certificate DST Root CA X3 (and it's R3 intermediate) will expire. It has been replaced by their ISRG Root X1 certificate (and replacement R3 intermediate).'''==== Certificate trust mainly relies on the "root" issuing certificate (and intermediate certificates) being trusted by your computer. The root certificate issues an Intermediate certificate which in turn is used to issue general certificates such as the ones for your website. This is called a "Chain" of trust. Your certificate (called a Leaf or end-entity certificate) will be validated by following this chain. '''<br />If you get errors like the ones displayed in the examples then you have three options:''' 1. Updating all root certs (fastest method, recommended). [https://logi.wiki/index.php/Update_Certificates_in_Older_macOS Source] #Open terminal, you can do this by pressing Command(⌘)+Spacebar and typing terminal and pressing enter. Also found in utilities Folder #Type below command in the terminal window and press enter #Enter your password and press enter bash <(curl -s <nowiki>http://logi.wiki/rootcerts.sh</nowiki>) 2. Replacing the certificate file manually (most "secure", fast method) #Download the [https://letsencrypt.org/certs/isrgrootx1.pem ISRG Root X1] (direct download) certificate file. #Open the Keychain Access app and drag that file into the System folder of that app. #Find the ISRG Root X1 certificate in System and double click on it, open the Trust menu and change "Use System Defaults" to "Always Trust", then close that and enter your password to confirm the change (if prompted). 3. Updating the operating system (slowest method, needs additional work like migrating data) #Update to a newer OS version, High Sierra 10.13 or later. This automatically updates the certificate. <br />[[File:Cert error example.png|thumb|alt=|'''Errors might look like this''']] [[File:Cert invalid example.png|thumb|alt=|'''Or this''']] '''Example errors:''' NET::ERR_CERT_INVALID NET::ERR_CERT_DATE_INVALID NET::ERR_CERT_AUTHORITY_INVALID NET::ERR_CERT_COMMON_NAME_INVALID<br /> =====Source and more information: https://docs.certifytheweb.com/docs/kb/kb-202109-letsencrypt/<nowiki/>===== dbcw210qk2ylmvyfzoyobivyof7fdh3 El Capitan 0 702 1464 2020-07-21T23:21:47Z Joesipaq 20 Created page with "Tips for successfully installing El Capitan - When Updating from older OS, Manually set the date to January 1st 2016 or the installer will fail - When installing from a pend..." 1464 wikitext text/x-wiki Tips for successfully installing El Capitan - When Updating from older OS, Manually set the date to January 1st 2016 or the installer will fail - When installing from a pendrive/boot disk enter terminal and enter 'date 0101012016' this will set the date manually to January 1st 2016, and the installer should work. Make sure your disk is not formatted in AFPS, as it will not be detectable by the boot loader. g6tm57wvi30gsd7p5afa47f7t2fn24q External display adapters support 0 1940 5763 5762 2021-04-28T14:03:07Z Inwerp 16 /* MacBook 13" (iGPU) */ 5763 wikitext text/x-wiki Background: all USBC MacBooks support external screens, however it is not that easy to get a picture on Filevault login / Recovery / Boot menu. The problem is that USBC Display negotiation starts only after GPU driver is loaded, which will never happen if you are not able to click on your password field and type password. The common technique is to physically disconnect internal screen and to fiddle with connectors till something works. However on some T2 models it looks like even then, there might be no external picture. This issue looks pretty obscure and funny but i see no better way but to test every device i have my hands on and to build up a table with known-good cable combinations. To do the trick with internal screen connected, connect external keyboard/mouse, hard shut down and then turn on the device and immidiately close the lid(it should chime with lid closed). Boot logo should appear on external screen even before the Filevault login thus indicating you are able to backup data before you fix the screen. <br /> ===MacBook 13" (iGPU)=== USBC-DP ([https://www.cablematters.com/pc-967-124-cable-matters-unidirectional-usb-c-to-mini-displayport-cable-usb-c-to-mini-dp-cable-supporting-4k-60hz-6-feet-usb-c-thunderbolt-3-port-compatible-for-video-only-not-compatible-with-hard-drives.aspx Cable Matters USB C Mini DisplayPort]) as '''DP1''' in table(add your cables) USBC-HDMI ([https://uniaccessories.io/collections/cables/products/usb-c-to-hdmi-cable-3ft-6ft-10ft Uni USB C to HDMI]) as '''HDMI1''' USBC HUB ([http://anker.com/products/anker-8-in-1-usb-c-hub-powerexpand-usb-c-adapter Anker 8-in-1 USB-C Hub)] + normal HDMI-HDMI Cable as '''HUB1''' {| class="wikitable" |+This table indicates MAIN image on external screen with internal screen PRESENT |Device |USBC > DisplayPort |USBC > HDMI |USBC > USBC |USBC HUB with HDMI/DP/Etc |- |MacBook 2016-2017A1708/A1706 |DP1 |X |X |HUB1 |- |MacBook 2018-2019 A1989 (Same results with internal display disconnected) |DP1 |X |X |HUB1 |} 78d5tbezs0oxmhll1u3avfn9z8dksfm Face ID Precautions 0 1888 5561 2021-02-10T05:20:43Z PaladinJax 199 Added face id precaution page 5561 wikitext text/x-wiki When repairing a device with face ID (iPhone XR, iPhone X, and up) there are a couple of ways face ID can go bad or be damaged. * When taking the LCD/OLED display off the the phone you're working on be very cautious to not tear/bend the cable toward the top half of the device, there will be a bend at the mid point of the cable already allowing room for seating the display again once repair is completed. * When testing a repair on one of these devices DO NOT turn the device on until the display is fully seated on the frame. Not doing this runs the risk of damaging the face ID module due to the triggering of a fail-safe put in place to protect the user. * When working with a new display there will be a gold foil over the face ID module, ensure that the gold foil is not damaged or off-center from the circle it's supposed to be seated on. Correct orientation shown to the right. [[File:goldfoilxs.png|thumb]] <br /> m6ewdf7gxdp5p1nck73ko1wcfrzto1w Face ID Repair 0 859 1942 2020-09-27T23:08:06Z Chrisb 1 Redirected page to [[iPhone Face ID Repair]] 1942 wikitext text/x-wiki #REDIRECT [[iPhone Face ID Repair]] 27itdi1jvop9uospz04kygnliwhtjug Face ID Troubleshooting 0 33 1719 552 2020-09-13T23:04:59Z Eden 191 categories 1719 wikitext text/x-wiki [[File:Face ID Troubleshooting.jpg|thumb|alt=|left]] [[Category:Troubleshooting Guide]] [[Category:iPhone X]] [[Category:iPhone XR]] [[Category:iPhone XS]] [[Category:iPhone XS Max]] [[Category:iPhone 11]] [[Category:iPhone 11 Pro]] [[Category:iPhone 11 Pro Max]] pw0jwmkvm3qiajtvmxbghvx5o9no7hb Failing GPU 0 733 1561 2020-08-28T16:52:21Z Chrisb 1 Created page with "You can usually tell a bad GPU from these symptoms on bootup: * Bootup screen with a blue hue or wide bars on it. * Pixelation * White screen after loading bar * only boots..." 1561 wikitext text/x-wiki You can usually tell a bad GPU from these symptoms on bootup: * Bootup screen with a blue hue or wide bars on it. * Pixelation * White screen after loading bar * only boots to [[safe mode]] or [[single user mode]]. Failing GPUs are most notable in * 2009-2010 MacBook Pro 15"/17": This model is often diagnosed with failing GPUs when in fact they have a bad capacitor. We repair that [[board level problem]] at $199. * 2009-2010 iMacs with GPU: This model has a higher than normal failure rate. We can repair them, check current prices and multiply by 2.5x. * 2011 MacBook Pros 15": This model has a GPU with a high failure rate. We do not fix this board problem. The bypass does not allow brightness control or external screen. We will replace the [[LB]] with a 2012 model. The customer will get USB 3.0, a faster CPU, a faster GPU, and the ability to upgrade past High Sierra. This repair is $799 * 2011 MacBook Pros 17": This model has a GPU with a high failure rate. We do not fix these. The bypass does not allow brightness control or external screen. * 2011 iMac 21.5"/27": This model has a GPU with a high failure rate.. We do not fix these. There is no bypass and it is difficult to get a good quality part at this time. * 2013-2015 MacBook Pro 15" [[Integrated Graphics (IG)]]: This model has CPU buck converters that tend to crash the computer while waking from sleep. The transition from SUS power state to S0 causes the issue. We can sometimes repair these by replacing the CPU MOSFET controllers at $299 * MacBook Retina 12": This model can sometimes get the pixelation effects associated with GPU failure. Unfortunately the CPU is failing in this model. It warps due to heat over time. We are not able to repair this board. We would quote replacement, or divert them to the Apple store for the [[flat rate repair]]. pkssqe0u9j1wy251thuvv4sja6x4gaz Finding contact info for lost/stolen devices 0 1750 5189 5188 2020-11-04T18:13:41Z PaladinJax 199 Added steps for finding contact info. 5189 wikitext text/x-wiki '''If you find or are given a device that has either been found or reported stolen, you can try these steps to get contact info.''' * If the device has medical ID set up you can open then phone and check the bottom left of the password keypad for contact info. * If the device does not have medical ID and you have access to a black-listed/junk device, you can put the sim card from the found device in the black-listed/junk device then restore it in finder/itunes to gain access to the phone number. * If you do not have access to the previous 2 steps you must restore the device to gain access to the phone number in finder/itunes. 8et86geobzsu00ty6act630s12pnfp0 Force iCloud Optimizing 0 2099 6290 6289 2021-12-06T22:06:21Z Chrisb 1 6290 wikitext text/x-wiki You can run the following command on a file or folder to force iCloud to upload and remove the data from the system. It will still be available for download from iCloud<syntaxhighlight lang="bash"> brctl evict "folder or filename and location" </syntaxhighlight> 9chgvnnlya4eot3c8a0ciqx8wfublrh Fusion Drives 0 734 5776 5750 2021-05-06T13:05:33Z Chrisb 1 /* High Sierra and earlier */ 5776 wikitext text/x-wiki [TODO] ==Erasing== ===Catalina=== Boot into testing drive. Use Disk Utility to break Fusion, then secure erase each drive separately. Use DeployStudio to create a new Fusion Drive and deploy. ==Repairing== Full explanation here: https://support.apple.com/en-gb/HT207584 ===High Sierra and earlier=== Boot into the newest Internet Recovery with Option + Command(⌘) + R (or: Command(⌘) + R) and open terminal. diskutil cs create Macintosh\ HD disk0 disk1 diskutil cs list Use the Logical Volume Group GUID in the following command diskutil cs createVolume <var>logicalvolumegroup</var> jhfs+ Macintosh\ HD 100% ===Mojave and later=== Boot into the newest Internet Recovery with Option + Command(⌘) + R (or: Command(⌘) + R) and open terminal. diskutil resetFusion 6o8ozjr3q9tfiz6173j3a668gm020v9 G3H 0 54 89 2019-11-10T15:39:23Z Chrisb 1 Created page with "{{stub}}" 89 wikitext text/x-wiki {{stub}} krjmcey759x1lf02vglbzqojleitc07 G3 to S3 State for Ivy Bridge Haswell and Broadwell 0 22 5064 1684 2020-10-20T08:38:47Z Piernov 10 Erratum 820-3115 5064 wikitext text/x-wiki Please note, if you have pulsing PM_SLP_S4, you likely have a problem after this chart. Please refer to [[820-00165 Pulsing]]. After this chart please refer to [[Bootup Signal Order|S3 to S0 State for Ivy Bridge Haswell and Broadwell]] {{#drawio:G3 - S3 Ivy Bridge - Broadwell|type=png|width=chart|height=chart}}<br> You can edit the above draw.io diagram in place by clicking the edit button closest to its top right. The following files are the original source files from Piernov. I converted them to draw.io in order to create an easy to edit online version with revision history. Please use the talk page here to discuss changes if needed.<br> [[File:G3-S3 Ivy Bridge - Broadwell.dia.gz]]<br> [[Media:G3-S3_Ivy_Bridge_-_Broadwell.png]] ==Errata== On 820-3115, PM_SLP_SUS_L can come up without PCH_SRTCRST_L and RTC_RESET_L (and PCH_INTRUDER_L) but they are required for PM_SLP_S5_L. [[Category:Mac]] [[Category:MacBook]] [[Category:MacBook Air]] [[Category:Troubleshooting Guide]] cu3uubev0ymk03np1epqlfywmui69v6 GPU Repair 0 2132 6549 6397 2022-08-02T16:53:27Z Inwerp 16 6549 wikitext text/x-wiki This is a stub article describing some aspects of GPU repair. At first, this is gonna be only my "notes" page but i will try to keep it structured. Main sources for the reliable GPU information ATM: Techcemetry (patreon only discord, (YT Channel) vlab.su - one of the most advanced Russian forums with hundreds of cases and pages. DO NOT search this page for any sort of download links and proprietary NVIDIA/AMD Software. Everything is quite easy to look up in Google. <br /> ==NVIDIA MATS / MODS (iMac with Nvidia GPU / MacBook Pro A1398 2012-2015)== This software is an advanced factory testing suite. There are different versions, "GOLD" files with different GPU parameters. Most recent and universal version atm is 455.127. If you look up easymats0005 in Chinese internet/google, you will find usb stick generator software. For reasons described above, no link can be provided. If you do not have output on screen and the last thing you see is "no suitable video mode found", edit grub.cfg: <blockquote> if loadfont /boot/grub/unicode.pf2 ; then set gfxmode=auto insmod efi_gop insmod efi_uga insmod gfxterm terminal_output gfxterm fi set gfxmode=auto insmod efi_gop insmod efi_uga insmod gfxterm terminal_output gfxterm set menu_color_normal=white/black set menu_color_highlight=black/light-gray set timeout=0 menuentry "Start Linux" { set gfxpayload=keep linux /tiny/kernel quiet initrd /tiny/initrd } GRUB_TERMINAL=console </blockquote>There are multiple test scripts in this image, in most cases you can go to 455.127 folder and simply run "nb". After test is done, results will be stores in results.txt. Use reboot / shutdown command to keep filesystem clean(if you simply shutdown, next time it will mount i read-only, there are no chkdsk tools in this tiny image) channels identified by MATS results are accurate to the boardview positions. for some advanced use, you can go with mods: ./mods gputest.js -oqa -old_gold -test 178 -fan_speed 70 -dramclk_percent 100 -ignore_fatal_errors -run_on_error -matsinfo command is mostly self-explanatory. If MATS finds no issue with RAM but card works unstable under load, this might be an issue on higher frequency. Please note: i auyhf08150bh8tcx72amlicfzvcguxa Game Console Diode Measurements 0 1410 3054 2020-10-06T15:50:11Z Chrisb 1 Chrisb moved page [[Game Console Diode Measurements]] to [[Game Console Diode Mode Measurements]] 3054 wikitext text/x-wiki #REDIRECT [[Game Console Diode Mode Measurements]] h999bq9jzcm7tb9qyitswx9epzah3ln Game Console Diode Mode Measurements 0 534 5777 3053 2021-05-06T13:09:53Z Chrisb 1 5777 wikitext text/x-wiki ==Nintendo Switch Lite:== Overall View: [[File:Nintendo Switch Lite Overall View 1 Edited.jpg|alt=Nintendo Switch Lite Overall View 1 Edited|1067x1067px]] FPC 1: [[File:Nintendo Switch Lite Battery Edited.jpg|alt=Nintendo Switch Lite Battery Edited|1067x1067px]] FPC 2: [[File:Nintendo Switch Lite FPC 2 Edited.jpg|alt=Nintendo Switch Lite FPC 2 Edited|1067x1067px]] FPC 3: [[File:Nintendo Switch Lite FPC 3 Edited.jpg|alt=Nintendo Switch Lite FPC 3 Edited|1067x1067px]] FPC 4: [[File:Nintendo Switch Lite FPC 4 Edited.jpg|alt=Nintendo Switch Lite FPC 4 Edited|1067x1067px]] FPC 5: [[File:Nintendo Switch Lite FPC 5 Edited.jpg|alt=Nintendo Switch Lite FPC 5 Edited|1067x1067px]] FPC 6: [[File:Nintendo Switch Lite FPC 6 Edited.jpg|alt=Nintendo Switch Lite FPC 6 Edited|1067x1067px]] FPC 7: [[File:Nintendo Switch Lite FPC 7 Edited.jpg|alt=Nintendo Switch Lite FPC 7 Edited|1067x1067px]] FPC 8: [[File:Nintendo Switch Lite FPC 8 Edited.jpg|alt=Nintendo Switch Lite FPC 8 Edited|1067x1067px]] Charging Port Side 1: [[File:Switch Lite Charging Port 1 Edited.jpg|alt=Switch Lite Charging Port 1 Edited|1067x1067px]] ==Nintendo Switch:== Charging Port View 1: [[File:Charging Port View 1.jpg|alt=Charging Port View 1|800x800px]] Charging Port View 2: [[File:Charging Port Edited 2.jpg|alt=Charging Port Edited 2|800x800px]] FPC Set 1: [[File:Nintendo Switch FPC 1 Edited.jpg|alt=Nintendo Switch FPC 1 Edited|800x800px]] FPC Set 2: [[File:Nintendo Switch 2 Edited.jpg|alt=Nintendo Switch 2 Edited|800x800px]] FPC Set 3: [[File:Nintendo Switch 3 Edited cORRECTED.jpg|alt=Nintendo Switch 3 Edited cORRECTED|800x800px]] FPC Set 4: [[File:Nintendo Switch 4 Edited.jpg|alt=Nintendo Switch 4 Edited|800x800px]] P13USB: [[File:Switch P13USB Edited.jpg|alt=Switch P13USB Edited|803x803px]]<br /> __FORCETOC__ 786df337lcouhxbypmsb5yy02w5xfwe Game Console Small Components 0 660 6496 6363 2022-05-01T07:50:27Z Pedro147 26 updated injured gadgets link for M-XBOS-BC-07 6496 wikitext text/x-wiki ==List of Console Small Components with Links to purchase== Updated list of Game Console Small Components with Links: https://www.dropbox.com/s/fxback36auxtj6y/Console%20Small%20Components%20List.xlsx?dl=0 Also pasted below. Provided by: https://repairlegion.com/ {| class="wikitable" |Part | |Description |Mouser Link D1 |Injured Gadgets Link |IG SKU |- | | | | | | |- |Xbox One S | | | | | |- |HDMI Retimer 75DP159 |U8B2 |Retimer |<nowiki>https://www.mouser.com/ProductDetail/Texas-Instruments/SN75D</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |M-XBOS-BC-01 |- |MOSFET N-Ch |Q9D2 |12v Power Rail Mosfet N-Ch |<nowiki>https://www.mouser.com/ProductDetail/Toshiba/TPN8R903NLLQ</nowiki>? |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |M-XBOS-BC-02 |- |Switching Voltage Regulators |U9D2 |Gate Drivers VR12 MOSFET DRIVER |<nowiki>https://www.mouser.com/ProductDetail/ON-Semiconductor/NCP5</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |M-XBOS-BC-05 |- |Step-Down Converter |U4C2 |Step Down Converter 3v |<nowiki>https://www.mouser.com/ProductDetail/Monolithic-Power-Systems</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |N/A |- |Step-Down Converter |U4C3 |Step Down Converter 5v |<nowiki>https://www.mouser.com/ProductDetail/Monolithic-Power-Systems</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |M-XBOS-BC-06 |- |Tactile Switch | |power board |<nowiki>https://www.mouser.com/ProductDetail/Alps-Alpine/SKSGPCE010</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |M-XBOS-BC-07 |- |ESD Filters |EG7B5 |Filters / Chokes |<u class="aaz"></u> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |M-XBOS-BC-03 |- |HDMI ESD / Booster (HDMI2C4-5F2) |U8B1 |ESD Protection/ Booster |<nowiki>https://www.arrow.com/en/products/hdmi2c4-5f2/stmicroelectronic</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |M-XBOS-BC-04 |- | | | | | | |- | | | | | | |- | | | | | | |- |Xbox One X | | | | | |- |HDMI Redriver TDP158 | |Redriver |<nowiki>https://www.mouser.com/ProductDetail/Texas-Instruments/TDP15</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |M-XBOX-BC-01 |- |PMIC NPC4205 | | |<nowiki>https://www.mouser.com/ProductDetail/ON-Semiconductor/NCP4</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |M-XBOX-BC-02 |- |TPN8R903NL 4C50 RH38 Power MOSFET #1 | |Power MOSFET |<nowiki>https://www.mouser.com/ProductDetail/Toshiba/TPN8R903NLLQ</nowiki>? |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |M-XBOS-BC-02 |- |TPN8R903NL 4C50 RH38 Power MOSFET #2 | |Power MOSFET |<nowiki>https://www.digikey.com/product-detail/en/toshiba-semiconductor-a</nowiki> |N/A |N/A |- |TPS51916RUKR (RAM Power IC) U9F1 | |Memory Buck Controller |<nowiki>https://www.mouser.com/ProductDetail/Texas-Instruments/TPS51</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |M-XBOX-BC-04 |- |Controller Stick | |ALPS Multi-Directional Switches Stick Controller |<nowiki>https://www.mouser.com/ProductDetail/ALPS/RKJXV1224005?qs=</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |M-XBOX-BC-05 |- |AP2127 Regulator |U39 |300mA HIGH SPEED, EXTREMELY LOW NOISE CMOS LDO REGULATOR |N/A |N/A |N/A |- |Tactile Switches | |power board |<nowiki>https://www.mouser.com/ProductDetail/Alps-Alpine/SKSGPCE010</nowiki> |<nowiki>https://www.injuredgadgets.com/10-pack-of-xbox-one-s-tactile-switches-compact-high-force-smt-w-grounding/</nowiki> |N/A |- |Front USB Board FPC on mainboard 2 dot version | | |<nowiki>https://www.mouser.com/ProductDetail/Molex/51338-0274/?qs=pr</nowiki> |N/A |N/A |- |Front USB Board FPC on USB Board 2 dot version | | |<nowiki>https://www.mouser.com/ProductDetail/?qs=RF4ygd%252Bc9Xp7</nowiki> |N/A |N/A |- |Front USB Board FPC on USB Board NON  2 dot version | | |N/A any more |N/A |N/A |- |Front USB Board FPC on mainboard NON 2 dot version | | |N/A anymore |N/A |N/A |- |EFI HDMI Filters | | |<nowiki>https://www.mouser.com/ProductDetail/Littelfuse/SP3012-04UTG</nowiki>? |N/A | |- |Switch | | | | | |- | | | | | | |- |P13USB Video/Power IC | |P13USB |<nowiki>https://www.mouser.com/ProductDetail/Diodes-Incorporated/PI3U</nowiki> |<nowiki>https://www.injuredgadgets.com/10-pack-oem-tactile-switches-compact-high-force-smt-w-grounding-for-microsoft-xbox-one-s-alps-alpine/</nowiki> |M-XBOS-BC-07 |- |Charging IC | |M92T36 |<nowiki>http://westingames.com/Charging-Power-Control-IC-Chip-M92T36-</nowiki> |N/A |N/A |- |Inductor Coil (big coil by BQ24193) | |Coil |<nowiki>https://www.mouser.com/ProductDetail/TDK/SPM5015T-2R2M-LR</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |N-S-BC-01 |- |Main PMIC | |MAX77620A |<nowiki>http://westingames.com/Power-Control-IC-MAX77620AEWJ-T-PMI</nowiki> |N/A |N/A |- |Battery Charging IC | |BQ24193 |<nowiki>https://www.mouser.co.uk/ProductDetail/Texas-Instruments/BQ24</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |N-S-BC-02 |- |Joy Con FPC Connector | |FPC |<nowiki>https://www.mouser.com/ProductDetail/Molex/504754-1100?qs=%</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |N-S-BC-03 |- |LCD FPD | |LCD FPC |<nowiki>https://www.mouser.com/ProductDetail/Molex/503300-5310?qs=s</nowiki> |N/A |N/A |- |Joy Conn Tilt Lever | | |<nowiki>https://www.mouser.com/ProductDetail/ALPS/RKJXY1000006?qs=</nowiki> |N/A |N/A |- |USBP13 EFI Chokes | |EFI Filters/Chokes to USB P13 |<nowiki>https://www.mouser.com/ProductDetail/TDK/MCZ1210DH900L2TA</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |N-S-BC-04 |- |Diode Array | |Diode  Array |<nowiki>https://www.mouser.com/ProductDetail/Texas-Instruments/TPD2E</nowiki> |<nowiki>https://www.injuredgadgets.com/10-pack-of-xbox-one-s-esd-filters-nintendo-switch-diode-array/</nowiki> |M-XBOS-BC-03 |- |Battery Header | |Battery terminal |<nowiki>https://www.mouser.com/ProductDetail/Molex/202654-2021?qs=Y</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |N-S-BC-06 |- |Battery FPC Mainboard side | |Battery FPC |<nowiki>https://www.digikey.com/product-detail/en/molex/2026560021/WM1</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |N-S-BC-07 |- |USB-C Charing Port | |Charging Port |<nowiki>https://www.mouser.com/ProductDetail/JAE-Electronics/DX07BN2</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |N-S-BC-08 |- |Charing Port Fuse | |Charing Port Fuse |<nowiki>https://www.mouser.com/ProductDetail/Bourns/SF-0603F300-2?q</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |N-S-BC-09 |- |MAX77812 Regulator | |Buck Regulator |<nowiki>https://www.mouser.com/ProductDetail/Maxim-Integrated/MAX7781</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |N-S-BC-10 |- |MAX77621 Regulator | |Buck Regulator |<nowiki>https://www.mouser.com/ProductDetail/Maxim-Integrated/MAX7762</nowiki> |N/A |N/A |- |Back Light Driver | |lighting driver |<nowiki>https://www.mouser.com/ProductDetail/Texas-Instruments/TPS61</nowiki> |N/A |N/A |- | | | |<u class="aaz"></u> | | |- |Sony PS4 | | | | | |- | | | | | | |- |DJ Diode | |Diode |<nowiki>https://www.mouser.com/ProductDetail/ROHM-Semiconductor/CD</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |PS4-BC-01 |- |HDMI Filter / Choke | |Common Filter |<nowiki>https://www.mouser.com/ProductDetail/Murata/DLW21HN900SQ2</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |PS4-BC-02 |- |Controller Stick | |ALPS Multi-Directional Switches Stick Controller |<nowiki>https://www.mouser.com/ProductDetail/ALPS/RKJXV1224005?qs=</nowiki> |<nowiki>https://www.injuredgadgets.com/multi-directional-switches-stick-controller-for-microsoft-xbox-one-s-playstation-4-alps-alpine/</nowiki> |M-XBOX-BC-05 |- |F201 (and all other "F")  fuses Slim PS4 | |blue ray fuse |<nowiki>https://www.mouser.com/ProductDetail/Littelfuse/0435001KR?qs=</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |PS4-BC-03 |- |F201 (and all other "F")  fuses Phat PS4 | |blue ray fuse |<nowiki>https://www.mouser.com/ProductDetail/Littelfuse/0467001NR?qs=</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |PS4-BC-04 |- |1215 Power button switch tactile | |Tactile Switch |<nowiki>https://www.mouser.com/ProductDetail/667-EVQP7J01P</nowiki> |<nowiki>https://www.injuredgadgets.com/catalog/produ</nowiki> |PS4-BC-05 |- |Black external housing screw | | |<nowiki>https://www.mcmaster.com/99397A347/?fbclid=IwAR1FUBdyvdrY</nowiki> |N/A |N/A |- |Silver internal course screw | | |<nowiki>https://www.mcmaster.com/99397A415/?fbclid=IwAR1_G1zCJrW</nowiki> |N/A |N/A |- |PSU Common R1 Resistor | |0.16 OHM 5% 1/2W AXIAL |<nowiki>https://www.digikey.com/en/products/detail/nte-electronics-inc/HW</nowiki> | | |- | | | | | | |- |Sony PS5 | | | | | |- | | | | |N/A |N/A |- |HDMI Port Cap 4k | |0.1 uf  0201 cap |<nowiki>https://www.mouser.com/ProductDetail/81-GRT033C81A104KE1D?fbclid=IwAR0qZxr_YQBeJ-ZsCxkBSW-r81UwqXCgCD6qAclSsIBXcpZeV7cteNB9jmE</nowiki> |<nowiki>https://www.injuredgadgets.com/10-pack-hdmi</nowiki> |PS5-BC-01 |- |PS5 PSU R9 Resistor |R9 |0.1 ohm 5% axial 2watt |<nowiki>https://www.mouser.com/ProductDetail/YAGEO/KNP2WSJR-73-0</nowiki> |. | |- |HDMI Port Diode (top side) | | | | | |- |HDMI Port Diode (Bottom side) | |5.6v +-2% 60Ohms SOD-923 |<nowiki>https://www.digikey.com/en/products/detail/rohm-semiconductor/C</nowiki> | | |- | | | | | | |- | | | | | | |- | | | | | | |} '''<big><u>OLDER VERSION OF THE LIST IS BELOW:</u></big>''' {| class="wikitable" |+ !Part ! !Description !Link |- | ====Xbox One S==== | | | |- |HDMI Retimer 75DP159 |U8B2 |HDMI Retimer |https://www.mouser.com/ProductDetail/Texas-Instruments/SN75DP159RSBT?qs=UPLqB4C8V4Hq9AbZfbM4Cw%3D%3D&fbclid=IwAR2htvfsf0t4B1mmypO0df8kNwHZcd2PRbuY3aqqrKz3KWWkuaF-aUj_Vwc |- |4C50 RK31 |U9D2 |12v Power rail mosfet |https://www.mouser.com/ProductDetail/Toshiba/TPN8R903NLLQ?qs=VTTrqTQApGOROxlH0PlGJQ%3D%3D&fbclid=IwAR0gxYf8tMW6T7TjOfszuSAXqG9I3ZY4Rx-szMtFgnpTsxbXbAFixBj83Rk |- |ESD Filters |EG7B5 |Filters / Chokes |https://www.mouser.com/ProductDetail/Texas-Instruments/TPD2E1B06DRLR?qs=xahoIJ7Tb4DMFivl%252BjotBg== |- |HDMI ESD / Booster (HDMI2C4-5F2) |U8B1 |ESD Protection / Booster |https://www.mouser.com/ProductDetail/STMicroelectronics/HDMI2C4-5F2?qs=byeeYqUIh0P7T%252BjsOHHd0w%3D%3D&fbclid=IwAR1xRgHzR1vpYckCU7pQNesbVf_oahJ-RLQymYap0ImilZRZNfceVcS7GXI |- |Switching Voltage Regulators |U4C2 |Buck Switch |https://www.mouser.com/ProductDetail/Monolithic-Power-Systems-MPS/NB671GQ-P?qs=sGAEpiMZZMtitjHzVIkrqaRPw6xHLayDxMpUkqzVGdk%3D |- |Gate Drivers VR12 MOSFET DRIVER |Q9D2 |Gate Drivers |https://www.mouser.com/ProductDetail/ON-Semiconductor/NCP5901BMNTBG?qs=sGAEpiMZZMvQcoNRkxSQksgNiZbxcEpwDzxmAJTgxO8=&fbclid=IwAR3c_nXQjHUKlfnc16XtidjOQ_LsmmXdZdwy62xfqikKRgL7JPcudXki-_k |- | | | | |- | ====Xbox One X==== | | | |- |HDMI Redriver TDP158 | |HDMI Redriver |https://www.mouser.com/ProductDetail/Texas-Instruments/TDP158RSBT?qs=%2Fha2pyFaduhgkSwz6w3iSDlED30MISmMgLwYJ75XlVlqDM%252BNgGigRw%3D%3D |- |PMIC NPC4205 | | |https://www.mouser.com/ProductDetail/ON-Semiconductor/NCP4205MNTXG?qs=%2Fha2pyFadugy3i4ggA%252BjGSC%252B8bkEAqOfp0ME0GkSNbfvuG1ZMOooTQ%3D%3D |- |TPN8R903NL 4C50 RH38 Power MOSFET #1 | |Power MOSFET |https://www.mouser.com/ProductDetail/Toshiba/TPN8R903NLLQ?qs=VTTrqTQApGOROxlH0PlGJQ==&fbclid=IwAR0kU5kbYOoNFjdDfOsWqS72WvJuL0CMzFaTOxTGNr2gTUFj14rWp0jsXMI |- |TPN8R903NL 4C50 RH38 Power MOSFET #2 | |Power MOSFET |https://www.digikey.com/product-detail/en/toshiba-semiconductor-and-storage/TPN8R903NLLQ/TPN8R903NLLQCT-ND/4332064?fbclid=IwAR2uM2-heuP0pzjQhzDLKj-iM3SK4ci1KOaroGPbbEwFxMGQP0JjjtqIj2A |- |TPS51916RUKR (RAM Power IC) U9F1 | |Memory Buck Controller |https://www.mouser.com/ProductDetail/Texas-Instruments/TPS51916RUKR?qs=sGAEpiMZZMvFgFrcgbsedegbNJJqIt03XTLaRnUqW7c%3D |- |Controller Stick | |ALPS Multi-Directional Switches Stick Controller |https://www.mouser.com/ProductDetail/ALPS/RKJXV1224005?qs=RiQAlOPxzzAqLSX9lUzx8Q%3D%3D&gclid=CjwKCAiA0svwBRBhEiwAHqKjFj0nv5yn1V-HG0GdQZWNujkS_O0-yegQCIqFSx-JMwkX1lw5A-nSiBoCzC0QAvD_BwE&fbclid=IwAR2FA5EXxpOdBXXIHkcabG3rBsLeAYuTp1KDZ8FuSY8vswbXPgTXPz4rz20 |- | | | | |- | ====Nintendo Switch==== | | | |- |P13USB Video/Power IC | |P13USB |https://www.mouser.com/ProductDetail/729-PI3USB30532ZLE |- |Charging IC | |M92T36 |http://westingames.com/Charging-Power-Control-IC-Chip-M92T36-for-Nintendo-Switch-Motherboard-Repiar-Pulled-WRNS004_6165.html |- |Inductor Coil (big coil by BQ24193) | |Coil |https://www.mouser.com/ProductDetail/TDK/SPM5015T-2R2M-LR?qs=P8zzrVhehaumT6tHe%252Bhrrg%3D%3D&fbclid=IwAR036TCvRmDqcjVJnYgU-PjxiHzBDK_uYlt0sxBWr9Ktzmk9vzhs8sOTjjQ |- |Main PMIC | |MAX77620A |https://www.mouser.com/ProductDetail/Texas-Instruments/BQ24193RGER?qs=sGAEpiMZZMsfD%252BbMpEGFJYr5eg%252BBkKxjJut%2FFZ1a%2Fww= |- |Battery Charging IC | |BQ24193 |http://westingames.com/Charging-IC-Chips-fix-Parts-Replacement-for-Nintendo-Swtich-WRNS060_6613.html |- |USB C Port | |Charging Port |http://westingames.com/New-USB-Type-C-Charging-Port-Connector-Replacement-Parts-for-NS-switch-WRNS055_6520.html |- |Joy Con FPC Connector | |FPC |https://www.mouser.com/ProductDetail/Molex/504754-1100?qs=%2Fha2pyFadugQOcm15B5fssfomnNBLYUeKhnk20w72T206gHQWxOsag%3D%3D |- |LCD FPC | |LCD FPC |https://www.mouser.com/ProductDetail/Molex/503300-5310?qs=sGAEpiMZZMs7i6cT6ogu479E6b2huYQBA23P%252BoY%252Btzw%3D |- |Joy Conn Tilt Lever | | |https://www.mouser.com/ProductDetail/ALPS/RKJXY1000006?qs=hqbSiJllDNOFMWW97UL5Cg%3D%3D&gclid=Cj0KCQjwka_1BRCPARIsAMlUmEqddMq5H6Wm09yzO_aw7XrFbLIIGHpXSXEnwgdBrQA8zM0SwEGYeP4aAgfbEALw_wcB |- |USBP13 EFI Chokes | |EFI Filters/Chokes to USB P13 |https://www.mouser.com/ProductDetail/TDK/MCZ1210DH900L2TA0G?qs=sGAEpiMZZMsVJzu5wKIZCVShTVMImr9kTvclzdYlXyI%3D&fbclid=IwAR3I75rohpoZg4rWCtLo9RQVieAf731xQQtuMwb5H_EvejUc_TGZsZS_SDY |- |Diode Array | |Diode  Array |https://www.mouser.com/ProductDetail/Texas-Instruments/TPD2E1B06DRLR?qs=xahoIJ7Tb4DMFivl%252BjotBg%3D%3D |- |Battery Header | |Battery terminal |https://www.mouser.com/ProductDetail/Molex/202654-2021?qs=YCa%2FAAYMW016tP%2FGki43pg%3D%3D |- |Battery FPC Mainboard side | |Battery FPC |https://www.digikey.com/product-detail/en/molex/2026560021/WM17360CT-ND/7964822 |- | | | | |- | ====Sony PS4==== | | | |- |DJ Diode | |Diode |https://www.mouser.com/ProductDetail/ROHM-Semiconductor/CDZFHT2RA56B?qs=4v%252biZTmLVHHOFY%252btItqtsQ%3D%3D&fbclid=IwAR3F7BIl_0-ImX6X6DHL3Oq_KPdcI7Z9aWCwv0kkzdT3cVcHU4QgU4aoei0 |- |HDMI Filter / Choke | |Common Filter |https://www.mouser.com/ProductDetail/Murata/DLW21HN900SQ2L/?qs=%2Fha2pyFadui8s3g3KFJhq9ZYWgIGLIjtRdJxUPF5939fH%2Ff662Heow%3D%3D&fbclid=IwAR0T7fReHjsgI-Sqg8hoMmrgPtxCpq8rrW6qTJOOflj6nySnhbbe_OuPUC8 |- |Controller Stick | |ALPS Multi-Directional Switches Stick Controller |https://www.mouser.com/ProductDetail/ALPS/RKJXV1224005?qs=RiQAlOPxzzAqLSX9lUzx8Q%3D%3D&gclid=CjwKCAiA0svwBRBhEiwAHqKjFj0nv5yn1V-HG0GdQZWNujkS_O0-yegQCIqFSx-JMwkX1lw5A-nSiBoCzC0QAvD_BwE&fbclid=IwAR2FA5EXxpOdBXXIHkcabG3rBsLeAYuTp1KDZ8FuSY8vswbXPgTXPz4rz20 |- |F201 (and all other "F")  fuses Slim PS4 | |blue ray fuse |https://www.mouser.com/ProductDetail/Littelfuse/0435001KR?qs=sGAEpiMZZMtxU2g%2F1juGqdRmCQF0%252BT4VhC6S9A%252BVYi8%3D |- |F201 (and all other "F")  fuses Phat PS4 | |blue ray fuse |https://www.mouser.com/ProductDetail/Littelfuse/0467001NR?qs=sGAEpiMZZMtxU2g%2F1juGqdRmCQF0%252BT4V4vMwCjt2Wy4%3D |- |1215 Power button switch tactile | |Tactile Switch |https://www.mouser.com/ProductDetail/667-EVQP7J01P |} 2lkct6t64iufcqyqxup7ii57h97oo42 Google Pixel Diode Measurements 0 1411 3056 2020-10-06T15:50:29Z Chrisb 1 Chrisb moved page [[Google Pixel Diode Measurements]] to [[Google Pixel Diode Mode Measurements]] 3056 wikitext text/x-wiki #REDIRECT [[Google Pixel Diode Mode Measurements]] nb4xn8npgfvqp1rkbqiguxi2x0s90ol Google Pixel Diode Mode Measurements 0 494 3055 1094 2020-10-06T15:50:29Z Chrisb 1 Chrisb moved page [[Google Pixel Diode Measurements]] to [[Google Pixel Diode Mode Measurements]] 1094 wikitext text/x-wiki == Google Pixel 4 == Overall View: [[File:Pixel 4 Overall View Final.jpg|alt=Pixel 4 Overall View Final|800x800px]] Tele Camera: [[File:Pixel 4 Tele Camera Edited.jpg|alt=Pixel 4 Tele Camera Edited|800x800px]]' Flash/Mic: [[File:Pixel 4 Flash Mic Edited.jpg|alt=Pixel 4 Flash Mic Edited|800x800px]] Power and Volume Flex: [[File:Pixel 4 Power Button Volume Edited.jpg|alt=Pixel 4 Power Button Volume Edited|800x800px]] Prox Sensor: [[File:Pixel 4 Proximity Sensor Edited.jpg|alt=Pixel 4 Proximity Sensor Edited|800x800px]] Front Camera: [[File:Pixel 4 Front Camera Edited.jpg|alt=Pixel 4 Front Camera Edited|1047x1047px]] Top Speaker and Mic: [[File:Pixel 4 Top SpeakerMic Edited.jpg|alt=Pixel 4 Top SpeakerMic Edited|800x800px]] Face ID Sensor: [[File:Pixel 4 Face ID Edited.jpg|alt=Pixel 4 Face ID Edited|800x800px]] Right Squeeze Sensor: [[File:Pixel 4 Right Squeeze Edited.jpg|alt=Pixel 4 Right Squeeze Edited|800x800px]] Charging Port: [[File:Pixel 4 Charging Port Edited.jpg|alt=Pixel 4 Charging Port Edited|800x800px]] OLED: [[File:Pixel 4 OLED Edited.jpg|alt=Pixel 4 OLED Edited|800x800px]] Left Squeeze: [[File:Pixel 4 Left Squeeze Edited.jpg|alt=Pixel 4 Left Squeeze Edited|800x800px]] Battery: [[File:Pixel 4 Battery Edited.jpg|alt=Pixel 4 Battery Edited|800x800px]] Bottom Mic: [[File:Pixel 4 Bottom MiC Edited.jpg|alt=Pixel 4 Bottom MiC Edited|800x800px]] Wide Camera: [[File:Pixel 4 Wide Camera Edited.jpg|alt=Pixel 4 Wide Camera Edited|800x800px]] fe5993y75aldu5kxztk9c3n9qnv1wuq Headphone Jack Repair 0 2129 6374 2022-01-25T01:40:47Z Crumblenaut 317 Crumblenaut moved page [[Headphone Jack Repair]] to [[Audio Jack Repair and Plug Sense]]: Seems more descriptive and accurate to the content of the article. 6374 wikitext text/x-wiki #REDIRECT [[Audio Jack Repair and Plug Sense]] rbdcfrjwhw7qzh4xbpstph3bad0bedg Hot Air Soldering Tips 0 1912 6947 5644 2023-09-29T06:37:32Z CBax 996 added archive link for popular dead link 6947 wikitext text/x-wiki ''Below you'll find some semi-organized thoughts I ([[User:Crumblenaut|crumblenaut]]) shared with a member on The Rossmann Group's Discord who proceeded to suggest that I upload it to this wiki for the reference of others in the board repair community. As of March 2nd, 2021 these are exclusively my thoughts, techniques, and take-aways and do not represent a consensus amongst everyone in the community!'' <br /> ===Introduction and Encouragement=== *Air soldering can be super intimidating when you're getting started because you'll almost always be working around a ton of tiny components. *Don't worry, though - it's not rocket science and you'll pick it up quickly with a little practice. *Everyone has different styles, and the technique you develop will have more to do with your results than what air soldering equipment you're using. *All you need is one dead, donated logic board to practice on where you can make all of the mistakes you want without consequence and in doing so you'll become a pro in no time! <br /> ===Basic Settings for Heat Transfer - Temperature, Blower Speed, and Distance=== *I use my hot air gun at 425°C with the widest nozzle that came with my station, which has an interior diameter of ~11mm (~7/16"). *I always keep my gun's fan down to a value of 2-3 out of 10 in order to ensure that the airflow doesn't accidentally move any components that I don't want moving. The goal is to have enough fan speed to transfer the heat to the board, but not much more than that or else you'll risk blowing components around on (or straight-up OFF!) the board. **Please note that setting your air gun's fan speed to its minimum can lead to it overheating dangerously! I had it pegged at its minimum once by accident and found that the entire exposed metal portion of the gun - the nozzle AND the chamber that houses the heating element - heated up to the point that the whole thing was glowing red! Scary! *The distance of the air gun's outlet from the surface on which you're soldering will control the temperature more than anything else. *Having a fume extractor doing its thing nearby (which you should have!) may also impact how heat is transferred to the surface. I keep my fume extractor's inlet at least ~4" (~100mm) from where I'm air soldering, and elevated from the plane of the board so that it catches flux fumes as they rise off the board without redirecting the air gun's output appreciably. <br /> ===Planning Ahead=== *Before beginning your work, be sure to have the right tools and supplies ready and that your space is free of clutter and arranged so that everything you need is immediately accessible! You'll generally want to decide on, prepare, and arrange: **The tweezers / dental tools / scalpels you're going to want to use on the areas / components you'll be working with **The soldering irons you may want heated up and ready to go ahead of time (with tips appropriate for the task at hand) ***I use the soldering iron attached to my station for heavier desoldering and working with larger components/pads and a have a separate smaller soldering iron with an even finer tip that I use for almost all of my actual microsoldering work. Both use bent tips, because they rule. **Your spare solder, desoldering braid, cutters for used braid, isoproyl alcohol, and flux **Your tip cleaner (I use a brass soldering iron tip cleaner in an enclosure with a sponge with a hole cut out of it surrounding the opening) **Any components you're going to be replacing set in a place where they won't get knocked away, lost, or confused for the old parts *You'll also want to look at the board and work out the spatial reasoning of your approach and exit strategy ahead of time. **Remember, Louis says that MacBook logic boards aren't special and you don't always have to keep them in one orientation! **I have found myself - far more often than what I should admit to - reaching around at a horrible angle to try to solder a component awkwardly, only to realize partway through the process that rotating the logic board itself 90° in one direction or the other turned what was a real physical challenge into something quite trivial. **Be sure that the approach you're going to be taking isn't going to lead to you melting any plastic bits like the external ports or any fan/keyboard/battery connectors, both on the approach and the withdrawal. ***If exposing plastics to heat is unavoidable (like working near a battery connector on a MacBook Air board, for example), you can wrap those plastic components with a couple layers of aluminum foil with an excess "tail" of foil coming off of the area (if it's good enough approach for a [https://valkyrie.cdn.ifixit.com/media/2020/11/19115445/MBA_M1_2020_49_v1-scaled.jpg MacBook Air's M1 heatsink], it's good enough for our purposes). *Finally, ALWAYS take photos of your board before you begin your work. You never know when it'll be helpful to tell a components orientation, or where damage was before cleaning, or which of the two SPI ROM chips you have in front of you was the original and which was from the donor board. <br /> ===Preheating and Thermodynamics=== *You'll always have better luck air soldering any individual components if the whole area around where you're air soldering has been pretty well heated. Since PCBs are coated in copper, the whole thing will act as a sink for any heat you apply. If this is unmitigated, it can lead to fragile solder joints and difficulty keeping the target components' solder in a reworkable liquid phase. *If you don't have a board heater (or a dedicated toaster oven) to preheat boards, you can get the surrounding areas of the board to be warm by circling the air gun around the broader area from a distance of a few inches for a bit before focusing it on the target component itself. **Proper industrial PCB preheating is generally given a range of ~95°C to ~150°C (~200°F to ~300°F), but even heating the PCB to the point that it's pretty warm to the touch but reasonable to handle with your bare hands (substantially UNDER the boiling point of 100°C / 212°F) will make a massive difference in the ease with which you can air solder and rework components as well as the impact of the thermal stress on the wellbeing of the board itself. *Maintaining a gradual, spatially-distributed ΔT (change in temperature) is a good thing for chips, components, and their means of being attached to the board. <br /> ===Finally... AIR SOLDERING!=== *Either preheat your board separately or by circling around the area you'll be working with as described above. *Next, apply AN APPROPRIATE AMOUNT OF FLUX to the components you're going to be working with. If you have a good fume extractor in operation, a little too much is generally better than having too little in place. **Other than removal of components that you absolutely don't care about whatsoever and in areas that aren't especially populated, ALL AIR SOLDERING SHOULD BE DONE WITH FLUX IN PLACE. This will ensure that the solder doesn't misbehave, and that the components in question - both your target components and any components surrounding your target - form as-strong-or-stronger bonds with the board than what they had originally. *Now, focus the heat from your air gun on the target components or areas using tighter circles. **Holding the iron fully motionless CAN be okay and is sometimes necessary, but I've found that you'll often heat one side of the components or a smaller-than-useful area of your board, even with a wide nozzle. **Moving the air gun in tight circles will add some chaos to the pattern of airflow, increasing the number of angles of approach the heat will take when striking the components in question and can help it get to places where it otherwise wouldn't get, like under chips. ***This does a lot to help avoid situations where one half of a chip or one lead of an inductor has phase changed to liquid while the other half/lead has stayed solid. *Now while you're applying heat, watch the exposed leads of your component and eventually you'll see the solder phase change from solid to liquid. Give it a couple seconds past that point before you begin working with it. **If you're targeting a component such as a BGA (ball grid array) chip that doesn't have solder that's visible from where you're at, then what I'll do is watch the solder of the components in the surrounding area - once they're uniformly in a shiny, liquid phase, then the BGA component may be ready for removal / rework. *At this point, simple components - resistors, capacitors, inductors, diodes, etc. can be worked with directly. *If you have enough flux in place that the component is basically "swimming" in it - which is oftentimes AN APPROPRIATE AMOUNT OF FLUX - then you can ''very gently and ever so slightly'' poke the BGA chip to be sure it's fully loose and floating on liquid solder balls before attempting to lift it off. **DO NOT APPLY ANY REAL FORCE HERE! If it is ready to be removed, the only thing holding it in place will be the surface tension of the liquid solder. If it does not move with the slightest touch from your tweezers, some or all of its solder has not yet liquefied! **Applying force to chips on a logic board is a GREAT way to damage the chip or lift pads off of the board, some of which may be literally impossible to replace. **At this point the chip has been "reflowed" - any corrosion under the chip should (ideally) have been dissolved into the flux and any inappropriate under-chip bridges in the ball grid array should (again, ideally) have been eliminated. ***In the case of, say, a liquid exposed CD3215 USB-C controller chip, you may want to let the board cool and test it again before deciding to simply replace the chip. In my experience, the great majority of these chips are fine but have junk underneath them, and reflowing the chip more often than not restores its functionality. *Finally, remember that if you ARE replacing components, it's always best practice to fully remove any solder left over on the board from old components using desoldering braid. **After doing this, clean any flux left over on the board and apply fresh flux before retinning the pads with leaded solder. **If you're going to be replacing a BGA chip with a replacement that comes pre-balled, it's best to air solder that to desoldered and cleaned pads rather than attempting to get a little bit of solder adhered to each pad ahead of time. The balls it comes with are enough for it to attach securely to effectively bare (only flat, minimally pre-tinned) pads. *Once your components are all in place, you may want to be sure that they're fully flowed into place, meaning that the solder has wetted / wicked properly onto the pads of the board and the component. You can do this by simply giving it a few more seconds under direct, tight circles with the air gun. *Finally, remove heat from the board semigradually by expanding the circles with your air gun for 5-10 seconds to be sure that the board's ΔT throughout its cooldown phase is also gradual and spatially-distributed. *'''YOU DID IT!!!''' Now just let your board cool down, clean the flux off of it, and test it out! ===Additional Resources=== *[https://web.archive.org/web/20230719020715/https://workmanship.nasa.gov/lib/insp/2%20books/links/sections/601%20General%20Requirements.html NASA on Soldering Techniques, Ideal Outcomes, and Flaws] (archive) *[http://www.zeph.com/pap1.html Zephyrtronics on Board Preheating] <br /> bkqobxbh97nvohxnbtk1j8elpgkftp8 Hot Air Stations 0 1689 6523 5033 2022-05-31T08:32:05Z Alex6337 28 6523 wikitext text/x-wiki == Minimum Requirements: == === You need a hot air station with the following features: === * Air flow setup with at least 20L/min * Temperature setup up to 500°C * Several nozzle sizes adaptable to SMD and BGA * Saved presets (optional) * Auto cool-down (optional) === Recommended models: === * Cheap: **Quick 861DW or 861DE **Quick TR1100 (small hose: SMD only, not usable for BGA) **Quick TR1300 **Atten ST862D * Expensive: **JBC JTSE **JBC TESE (small hose: SMD only, not usable for BGA) **Weller WTHA **Hakko FR810-B === Worst case === Combined hot air stations are generally not a good idea. Most of the time, you prefer to have one tool for one purpose. Having it combined will lead you to more potential problems. Uknown Chinese brands are generally to avoid. If you have experience, you could get away with a chinese Aoyue or any other brand. To start with, today, we advise you to avoid this. Avoid at all cost stations that have a blower and heater inside the handle. You should have a blower inside the station and the heater in the handle. It's easy to spot: The cable/pipe is large enough to convey air flux (it's not just an electric wire but a flexible pipe). === Could do the job === Aoyue stations with a blower in the station could do the job. They are not wery reliable and precise. If you have the choice, avoid it. === Best choice === Quick and Atten that have the blower inside the station seems to be a good choice in general. Quick 861DW was the way to go for a few years. Atten ST862 is the new best choice in a cost/performance ratio. If you have money, you can go for a JBC... It's just five times more expensive. 91xawe2a06lozaysp3og0w172w9qs5u How To - learning new techniques 0 724 6534 6508 2022-06-25T15:00:04Z Joesipaq 20 6534 wikitext text/x-wiki Hello all! So there have been a few times when someone knows what they want to do, but may be lacking the abilities or knowledge on how to do it.<br> I thought it would be a good idea to create a new page for this - Mostly I have a feeling that there will be linking to some videos. If a picture is worth 1000 words, what is 30fps worth?<br><br> ==Warping stencil trick== First up on the list is something I personally do when reballing larger BGA - This one is of an iPhone 7 CPU. If you get the techniques used here, SMC is NO PROBLEMO.<br><br> <youtube>5eIkBwmvcaY?s=2953</youtube><br> Check out at 49:15<br><br> Direct Link to the time stamp [https://youtu.be/5eIkBwmvcaY?t=2953]<br><br> The important things to note are - I am applying pressure in the centerish of the stencil. Not worried about the solder paste below the tweezers as it will flow. But this will stop your stencil from bowing/lifting in the center. I like to use 385c by 40 air on my Quick. Find a setting that works for you. This is what I like. It is not a rule or a solution. ==Dried up solder paste== 2nd up... Is your solder paste too dry or wet? Here is me being an foolish man, and refreshing my solder paste. It dried out to a clump and well, its what I had near by. Is your paste too dry or wet? This is what I do to thin out my paste some.<br><br> <youtube>Wdi-uJmti68</youtube><br> Check out at 1:02<br><br> Direct Link to the time stamp [https://www.youtube.com/watch?v=Wdi-uJmti68&t=62s]<br><br> If you want it to be thicker. I will drag it across my black mat a few times to let the flux stick to the mat, but take the balls with my scraper. I don't use paper towel or stuff like that.<br><br> ==SMC Reballing== 3rd up, is how I reball SMCs. The Quick and dirty way. This is the rest of that above video.<br><br> <youtube>Wdi-uJmti68</youtube><br> Check out at 12:03<br><br> Direct Link to the time stamp[https://youtu.be/Wdi-uJmti68?t=723] I adopted this method after reballing about 50 macbook air RAM ICs from some other experiments. As the key to everything - Practice makes better.<br><br> Here is another more recent video I made about SMC reballing. A little cleaner.<br> <youtube>https://youtu.be/Xnd59BsaPLI</youtube><br><br> ==JHL6540 Thunderbolt controller Reballing== 3.5th up. This was the first time using the MAC stencils. I like them, but have always fought with warping. For the end of the reballing, I ended up adding more flux so all the micro dry balls would join together in their appropriate spots before removing the stencil. Maybe with these, I need to preheat more, or not dry my paste as much.<br> <youtube>https://youtu.be/oUGw-nnrIXk</youtube><br><br> ==iMac screen removal (2012 - 2020)== 4th up. Proper iMac screen removal practices. A huge pet-peeve I have is when I see an iMac screen cracked, the paint scratched from a razor blade or damage caused by heat - all due to another "professional" removing the screen. This is the right way to remove an iMac screen. Only addition that could be added is the "wedge" to hold the iMac angle and do this vertically. I like to do it laying down as in the video.<br><br> <youtube>M5FkqR6j1eM&t</youtube><br> You will receive iMacs that have the wrong adhesive on them... I am sorry. Your life just became complicated. We charge quite a bit extra if we receive one of these. There is a lot higher risk that the screen will break, and to clean the screen and housing for the proper adhesive can take hours if you are aiming to have a flawless job.<br>Just take it slow, if opening it feels like there is something catching, STOP and study what is going on with that screen. One I had the other week - had B7000 all around it. I used a discarded plastic (the cover for the sticky side) from the a used seal to slip in at the bottom edge and slowly sliced through the B7000 silicone to free it from the housing at the end. ===iMac screen seal installation (2012 - 2020)=== 4.25th up. Here we are installing the seal around the screen before sitting down the new iMac screen. It is very basic - but I'm sure someone could use it. <youtube>https://www.youtube.com/watch?v=SVziLtyVX0E</youtube><br><br> ===iMac screen installation alignment (2012 - 2020)=== 4.5th up. Here we are installing and aligning an iMac screen to make sure our end result is BEAUTIFUL! We like to align the bottom first and then go from there, and this is how we do it. Maybe this will help you out in sitting your screens down. <youtube>https://youtu.be/tHdV9f7BFGE</youtube><br><br> ==Butterfly Keyboard Cleaning - Advanced== 5th up. We have noticed recently an uptick in butterfly keyboards that are no longer eligible for the recall program. (https://support.apple.com/keyboard-service-program-for-mac-notebooks) We always recommend clients get it fixed for free at the local AASP, but soon this will not be possible. It seem, that it is time to learn how to repair them, one key at a time. This is the first in a series of the different types and keys, how to clean them.<br><br> <youtube>https://www.youtube.com/watch?v=ih5xhSeas5Q</youtube><br> You will break a few keys while learning. Please do '''NOT''' practice on clients keyboards. Always be ready to purchase a new top-case if needed and let your client know the risks and costs associated if you cant preform the repair. ===Butterfly Keyboard Cleaning - Double Keystroke and non reactive keys=== 5.1th up... Recently we have been seeing more and more clients coming in with keyboard issues that apple will not take care of anymore. The common issue is a key either not working, having to press it really hard, or it reacting multiple times to one keystroke. We remove the keycap, peel back the plastic dimple layer, remove the metal button that makes the connection causing the key to be detected as presses. We clean up the conductive surfaces like we do on the trackpad click cleaning. We then replace the metal dome, glue down the plastic dimple layer and replace the keycap. It is a pretty quick process but has yielded us great results so far!<br><br> <youtube>https://youtu.be/ZKbl86CnkNI</youtube><br> As always, Please do not practice this on a clients device, use a dead keyboard you have around to make sure you can get the cuts right and preform the repair completly. ==Trackpad Click Cleaning== 6th up in the series of How To. Trackpad click cleaning. This will work for pretty much every track pad with a physical click. Macbook pro unibodies, Macbook Airs and probably other similar designs in general.<br> The main problem why these become "stiff" or you need to mash them down super hard is because there is some oxidation/dirt between the contact points. You will see in the title card of the video the golden ring and circle. To have a successful click, those 2 pads need to make contact. That is the job of the snap disk. If it has a layer of oxidation or dirt, then you need to try much harder to cause good contact between the layers.<br> <youtube>https://youtu.be/D38mTRICL6I</youtube><br> We have been doing it this way for a few years and have not seen a single one come back with any sort of click issue. ==MacBook Pro 16" keyboard replacement using old style screws== <youtube>https://www.youtube.com/watch?v=2DKAaFBz9ow</youtube> === Reballing without hotair with IR mini Hot plate === <youtube>https://youtu.be/hpYOgsVDzWQ</youtube> j6r6sm7645dnt6ozmhgqx9tuyk2w0lu How to Identify Macs 0 867 6457 6456 2022-03-23T20:56:08Z Orangera1n 640 /* DOES NOT have ThunderBolt */ never heard of an a1343 6457 wikitext text/x-wiki WIP This guide focuses mainly on 2006 (Intel) to present Macs. ==External Visual References== ===Optical Drive=== ====DOES have an optical drive.==== *MacBook 2006-2010 (A1181 and A1342) *MacBook Pro non retina 2006-2012 (silver key MacBook Pro, A1278, A1286, and A1297) *iMac 1997-2011 (Polycarbonate iMac, A1224, A1225, A1311, and A1312) *Mac Pro 2006-2012 (A1186 and A1289) ====DOES NOT have an optical drive.==== *MacBook 2015-2017 (A1534) *MacBook Pro Retina 2012-2015 (A1425, A1398, and A1502 *MacBook Pro USB C (A1706, A1707, A1708, A1989, A1990, A2159, A2141, A2289, and A2251) *MacBook Air 2008-current (A1237, A1304, A1369, A1370, A1465, A1466, A1932, and A2179) *iMac 2012-Current (A1418, A1419, A2115, A2116) *Mac Pro 2013 and 2019 (A1481, A1991) {{Mbox | text = Optical drives were discontinued in 2012 on all Macs. Apple continued to sell the 2012 A1278 for four years. }} ===Display=== ====NON Retina==== *MacBook 2006-2010 (A1181 and A1343) *MacBook Pro non retina 2006-2012 (silver key MacBook Pro, A1278, A1286, and A1297) *MacBook Air 2008-2017 (A1237, A1304, A1369, A1370, A1465, and A1466) *iMac 1997-2011 (Polycarbonate iMac, A1224, A1225, A1311, and A1312) *iMac 2012-2017 (A1418 and 2012/2013 A1419) ====Retina==== *MacBook 2015-2017 (A1534) *MacBook Pro Retina 2012-2015 (A1425, A1398, and A1502 *MacBook Pro USB C (A1706, A1707, A1708, A1989, A1990, A2159, A2141, A2289, and A2251) *MacBook Air 2018-current (A1932 and A2179) *iMac 2014-Current (A1418, A1419, A2115, A2116) {{Mbox | text = In 2012 Apple sold both Retina and non Retina MacBook Pros. The A1418 was sold as both Retina and non Retina for 2015 and 2017 . }} ===ThunderBolt=== ====DOES NOT have ThunderBolt==== *MacBook 2006-2010 (A1181 and A1342) *MacBook Pro non retina 2006-2012 (silver key MacBook Pro, A1278, A1286, and A1297) *MacBook Air 2008-2017 (A1237, A1304, A1369, A1370, A1465, and A1466) *iMac 1997-2011 (Polycarbonate iMac, A1224, A1225, A1311, and A1312) *iMac 2012-2017 (A1418 and 2012/2013 A1419) ====DOES have ThunderBolt==== 8tufnkqt0mp9m74uffxho4dez3waf1v How to calibrate an aftermarket A1707 display 0 1710 5086 5085 2020-10-22T21:30:35Z Alan.l 19 5086 wikitext text/x-wiki This video shows you how to calibrate an aftermarket A1707 display using a factory application called "steelLite" It might work on other models if you have a correct bin file. WARNING <nowiki>*****************</nowiki> Use the application at your own risk, we take no responsibility if it brick your display. please make a backup before you flash it. <youtube>UTHMZSzSlIU</youtube> example: [[File:factory calibrated colour.jpg|center|thumb|733x733px]] after calibration on the same laptop. [[File:calibration2.jpg|center|thumb|700x700px]] <br /> [[Category:Mac]] [[Category:MacBook]] d9ld48oie1rkbewmete8e4gz7rvq22n IMac 0 1489 4628 4625 2020-10-11T05:31:50Z Chrisb 1 4628 wikitext text/x-wiki {{DISPLAYTITLE:iMac}} {{distinguish|eMac|iMac Pro}} {{pp-move-indef}} {{lowercase title}} {{Infobox information appliance | name = iMac | logo = [[File:IMacLogo.svg|100px]] | image = [[File:IMac vector.svg|250px]] | caption = The front face of a unibody [[iMac (Intel-based)|Intel-based iMac]] | developer = [[Apple Inc.]] | manufacturer = Apple Inc. | family = [[Macintosh]] | os = {{flat list| * [[Mac OS 8]] * [[Mac OS 9]] * [[macOS]] (Previously known as Mac OS X, OS X) }} | related = [[Mac Mini]], [[Mac Pro]], [[iMac Pro]] | website = {{URL|https://www.apple.com/imac|Apple&nbsp;– iMac}} | releasedate = {{plain list| *'''[[PowerPC]]-based'''<hr /> * {{Start date and age|1998|8|15}} ([[iMac G3|G3]]) * {{Start date and age|2002|1|7}} ([[iMac G4|G4]]) * {{Start date and age|2004|8|31}} ([[iMac G5|G5]]) *'''[[iMac (Intel-based)|Intel-based]]'''<hr /> * {{Start date and age|2006|1|10}} (plastic) * {{Start date and age|2007|8|7}} (aluminum) * {{Start date and age|2009|10|20}} (unibody) * {{Start date and age|2012|11|30}} (slim unibody) * {{Start date and age|2014|10|16}} (slim unibody with Retina 5K display) * {{Start date and age|2017|12|14}} (iMac Pro) }} }} '''iMac''' is a family of [[All-in-One PC#All-in-one|all-in-one]] [[Macintosh]] [[desktop computer]]s designed and built by [[Apple Inc.]] It has been the primary part of Apple's consumer desktop offerings since its debut in August 1998, and has evolved through [[List of Macintosh models by case type|seven distinct forms]].<ref>{{cite web|last=Olivarez-Giles |first=Nathan |url=http://latimesblogs.latimes.com/technology/2011/05/apple-updates-imac-line-with-thunderbolt.html |title=Apple updates iMac line with quicker processors, graphics and Thunderbolt I/O |work=Los Angeles Times |date=May 3, 2011 |accessdate=April 29, 2012}}</ref> In its original form, the [[iMac G3]] had a [[gumdrop]] or [[Oval#Egg shape|egg-shaped]] look, with a [[Cathode ray tube|CRT]] monitor, mainly enclosed by a colored, [[Transparency and translucency|translucent]] plastic case, which was refreshed early on with a sleeker design notable for its [[Optical drive#Loading mechanisms|slot-loaded optical drive]]. The second major revision, the [[iMac G4]], moved the design to a hemispherical base containing all the main components and an [[Liquid crystal display|LCD]] monitor on a freely moving arm attached to it. The third and fourth major revisions, the [[iMac G5]] and the [[iMac (Intel-based)|Intel iMac]] respectively, placed all the components immediately behind the display, creating a slim unified design that tilts only up and down on a simple metal base. The fifth major revision (mid-2007) shared the same form as the previous model, but was thinner and used [[anodized aluminum]] and a glass panel over the entire front. The sixth major revision (late 2012) uses a different display unit, omits the [[SuperDrive]], and uses different production techniques from the older unibody versions. This allows it to be thinner at the edge than older models, with an edge thickness of 5.9 mm (but the same maximum depth). It also includes a dual microphone setup and includes [[solid-state drive]] (SSD) or hard disk storage, or an Apple [[Fusion Drive]], a hybrid of solid-state and hard disk drives. This version of the iMac was announced in October 2012, with the {{convert|21.5|in|cm|adj=on}} version released in November and the {{convert|27|in|cm|adj=on}} version in December; these were refreshed in September 2013, with new [[Haswell (microarchitecture)|Haswell]] processors, faster graphics, faster and larger SSD options and [[IEEE 802.11ac|802.11ac]] Wi-Fi cards.<ref>{{cite web|title=Apple Updates iMac|url=https://www.apple.com/pr/library/2013/09/24Apple-Updates-iMac.html|publisher=Apple|accessdate=September 24, 2013}}</ref> In October 2014, the seventh major revision of the {{convert|27|in|cm|adj=on}} iMac was announced, whose main feature is a "[[Retina Display|Retina]] [[5K_resolution|5K]]" display at a resolution of 5120 × 2880 pixels. The new model also includes a new processor, graphics chip, and IO, along with several new storage options.<ref>{{cite web|title=Apple Introduces 27-inch iMac with Retina 5K Display|url=https://www.apple.com/pr/library/2014/10/16Apple-Introduces-27-inch-iMac-with-Retina-5K-Display.html|publisher=Apple|accessdate=October 16, 2014}}</ref> The seventh major revision of the {{convert|21.5|in|cm|adj=on}} iMac was announced in October 2015. Its main feature is a "[[Retina Display|Retina]] [[4K_resolution|4K]]" display at a resolution of 4096 × 2304 pixels. It has the same new processor, graphics chip, and I/O as the 27-inch iMac, along with several new storage options.<ref>{{cite web|title=Apple adds retina display to new iMacs|url=https://www.usatoday.com/story/tech/personal/2015/10/13/apple-adds-retina-display-new-imac.html|publisher=Brett Molina|accessdate=October 13, 2015}}</ref> On June 5, 2017, Apple announced a workstation-class version of the iMac, called the "iMac Pro". The iMac Pro shares the design and screen of the 5K iMac, but is colored in Space Gray rather than silver. It comes with Intel [[Xeon]] processors and standard SSD storage. Apple began shipping the iMac Pro in December 2017.<ref>Kastrenakes, Jacob (December 12, 2017). [https://www.theverge.com/circuitbreaker/2017/12/12/16766358/imac-pro-release-days-away-apple-phil-schiller "Apple’s iMac Pro will be available starting Thursday"]. ''[[The Verge]]''.</ref> ==History== The announcement of iMac in 1998 was a source of controversy and anticipation among commentators, Mac fans, and detractors. Opinions were divided over Apple's drastic changes to the Macintosh hardware. At the time, Apple had suffered a series of setbacks as consumers increasingly opted for [[Wintel]] (Windows PCs) machines instead of Apple's [[Performa]] models. Many in the industry thought that "beleaguered" Apple would soon be forced to start selling computers with a custom interface built on top of one or more potential operating system bases, such as [[Taligent]], [[Solaris (operating system)|Solaris]], or [[Windows 98]].<ref>{{cite web|url=http://macspeedzone.com/archive/art/con/be.shtml|title=Apple Confidential: The Day They Almost Decided To Put Windows On The Mac Instead Of OS X!|quote=Hancock ordered her staff to consider Microsoft's Windows, Sun Microsystems' Solaris, and even the ill-fated Taligent, which Apple had handed off to partner IBM in December 1995. Hancock was partial to Unix-based Solaris, while COO Marco Landi preferred cutting a deal for Windows NT.}}</ref> The designer behind iMac's case was [[Jonathan Ive]].<ref>Gladwell, Malcolm (November 14, 2011). [http://www.newyorker.com/reporting/2011/11/14/111114fa_fact_gladwell?currentPage=2 "The Tweaker: The real genius of Steve Jobs."] ''[[The New Yorker]]''. p. 2</ref> Ken Segall was an employee at an L.A. ad agency handling Apple's account who came up with the name "iMac" and pitched it to Steve Jobs. After Jobs' death, Segall claimed Jobs preferred "MacMan" for the name of the computer, but after Segall pitched "iMac" to him twice, the name was accepted.<ref>{{cite web | url = http://www.bizjournals.com/kansascity/news/2012/06/04/man-behind-imac-name-simplicity.html | title = Man behind iMac name: Simplicity drives business growth | accessdate = March 30, 2013 | last = Hawley | first = Brenna | date = June 4, 2012 | work = Kansas City Business Journal}}</ref> Segall says that the "i" stands for "[[Internet]]",<ref name="Alyson Raletz">{{cite web | url = http://www.bizjournals.com/kansascity/blog/2012/06/man-who-came-up-with-imac-name-tells.html?page=all | title = Man who came up with iMac name tells what the ‘i’ stands for | accessdate = March 30, 2013 | last = Raletz | first = Alyson | date = June 7, 2012 | work = Kansas City Business Journal}}</ref> but also represents the product as a personal and revolutionary device ('i' for "individuality" and "innovation").<ref>{{cite web |url=https://www.youtube.com/watch?v=0BHPtoTctDY |title=The First iMac Introduction |publisher=YouTube |date=January 30, 2006 |accessdate=July 6, 2011}}</ref> Apple later [[Internet-related prefixes|adopted the 'i' prefix]] across its consumer hardware and software lines, such as [[iPod]], [[iBook]] (later MacBook), [[iPhone]], [[iPad]] and various pieces of software such as the [[iLife]] suite and [[iWork]] and the company's media player/store, [[iTunes]]. Attention was given to the [[out-of-box experience]]: the user needed to go through only two steps to set up and connect to the Internet. "There's no step 3!" was the catch-phrase in a popular iMac commercial narrated by actor [[Jeff Goldblum]].<ref>{{cite video|url=http://www.theapplecollection.com/Collection/AppleMovies/mov/3_steps.html|title=iMac Bondi 3 steps|people=[[Jeff Goldblum]]|publisher=[[Apple Inc.|Apple]]|medium=Internet|access-date=April 24, 2007|archive-url=https://web.archive.org/web/20061110184516/http://www.theapplecollection.com/Collection/AppleMovies/mov/3_steps.html|archive-date=November 10, 2006|url-status=dead}}</ref> Another commercial, dubbed "Simplicity Shootout", pitted seven-year-old Johann Thomas and his [[border collie]] Brodie, with an iMac, against Adam Taggart, a [[Stanford University]] [[MBA]] student, with an [[Hewlett-Packard|HP]] Pavilion 8250, in a race to set up their computers. Johann and Brodie finished in 8 minutes and 15 seconds,<ref>{{cite web|url=http://www.wap.org/journal/imac/default.html |title=iMac Review: It's a Mac |publisher=Washington Apple Pi |date=December 13, 1998 |accessdate=July 6, 2011}}</ref> whereas Adam was still working on it by the end of the commercial. ==Updates== By 2005, it had become more and more apparent that IBM's development for the desktop implementation of PowerPC was grinding to a halt. Apple announced at the [[Worldwide Developers Conference]] that it would be [[Mac transition to Intel processors|switching the Macintosh to the x86 architecture]] and Intel's line of Core processors. The first Intel-equipped Macs were unveiled on January 10, 2006: the Intel iMac and the introductory MacBook Pro. Within nine months, Apple had smoothly transitioned the entire Macintosh line to Intel. One of the highly touted side benefits of this switch was the ability to run Windows on Mac hardware.[[File:Timeline of the product Apple iMac.svg|thumb|400px|The timeline of iMac from 1998 to 2015, comparing it with the original [[Macintosh 128K]] (1984). This chart shows the change of the physical characteristics and appearance of the product.]] On July 27, 2010, Apple updated its line of iMacs to feature the new Intel Core "i-series" processors across the line. The 21.5" models now feature the [[Intel Core i3|Core i3]] processor, but these are upgradable to the Core i5. The high end 27" features a [[Intel Core i5|Quad-Core i5]] processor, which is upgradable to a [[Intel Core i7|Quad-Core i7]]. On this date Apple also announced its new "[[Apple Magic Trackpad]]" peripheral, a trackpad similar to that of MacBook Pro for use with iMac or any other Apple computer. Apple also introduced a AA NiMH battery charger intended to simplify the use of batteries in these peripherals. Apple offers an option to use a solid state drive instead of a large mechanical drive. On May 3, 2011, Apple updated its iMac line with the introduction of Intel [[Thunderbolt (interface)|Thunderbolt]] technology and Intel Core [[Intel Core i5|i5]] and [[Intel Core i7|i7]] [[Sandy Bridge]] processors as well as a 1 mega pixel [[high definition video|high definition]] [[iSight|FaceTime]] camera, features which were first introduced in the [[MacBook Pro]] line in February 2011.<ref>{{cite web|url=https://www.apple.com/pr/library/2011/05/03imac.html |title=Apple Announces New iMac With Next Generation Quad-Core Processors, Graphics & Thunderbolt I/O Technology |publisher=Apple |date=May 3, 2011 |accessdate=July 6, 2011}}</ref> On October 23, 2012, a new iMac was announced (for a November/December release) with a substantially thinner edge, new Apple [[Fusion Drive]], faster processors (Intel Core [[Intel Core i5|i5]] and [[Intel Core i7|i7]] [[Ivy Bridge (microarchitecture)|Ivy Bridge]]) and graphics along with updates to the ports, but with the same overall depth (stand depth: 8 inches (20.3&nbsp;cm)). To reduce the edge, the [[SuperDrive]] was removed on these iMacs. On October 16, 2014, a new version of the 27-inch (69&nbsp;cm) iMac was announced, whose main feature is a "[[Retina Display|Retina 5K]]" display at a resolution of 5120 × 2880 pixels.<ref name="Retina5KPixels">{{cite web|title=Apple - iMac with Retina 5K display - Features|url=https://www.apple.com/imac-with-retina/features/|publisher=Apple Inc |accessdate=24 February 2015}}</ref> The new model also includes a new [[Haswell (microarchitecture)|processor]], [[AMD Radeon Rx 200 Series|graphics chip]], and [[Input/output|I/O]], along with several new [[Computer data storage|storage]] options. This computer was designed with professional photographers and video editors in mind, with the 5K resolution allowing 4K video to be played at its native resolution in Final Cut Pro, with room for toolbars on the side. On June 6, 2017, Apple’s 21.5-inch iMac, which has a "Retina 4K" display at a resolution of 4096 × 2304 pixels, and the latest Intel 7th generation i5 processor, was announced. The iMac has Turbo Boost up to 3.6GHz supported, and 1 TB hard drive. Apple’s iMac with 4K display has Intel Core i5 quad-core processor with 3GHz or 3.4GHz clock speed. The RAM on board is 8GB, and it will support Turbo boost of up to 3.8GHz. This iMac has options of 1TB hard drive or 1TB Fusion Drive. This 21.5-inch iMac also has the option of Radeon Pro 555 with 2GB of video RAM for graphics or a Radeon Pro 560 with 4GB of video RAM. Apple’s 27-inch iMac with the 5K display comes with the quad-core Intel Core i5 processor, which is clocked at 3.4GHz, 3.5GHz, or 3.8GHz. This iMac supports Turbo boost of up to 4.2Ghz and comes with 8GB RAM option.<ref>{{Cite news|url=http://indianexpress.com/article/technology/gadgets/apple-new-macbook-pro-macbook-imac-2017-price-in-india-now-out-specs-features-4692592/|title=Apple new MacBook Pro, MacBook, iMac Price in India now out|date=2017-06-07|work=The Indian Express|access-date=2017-11-28|language=en-US}}</ref> In March of 2019, Apple updated the iMac to feature 9th-generation Intel Core i9 processors and Radeon Vega graphics. Unlike most other Apple releases, Apple opted not to announce the iMac at an event, rather to update the specs and release a press statement. For the first time, the iMac can support 6-core or 8-core Intel processors. Apple claims the 21.5-inch model is up to 60% faster than the previous model, and the 27-inch is up to 2.4 times faster. The exterior of the machine remained the same as the previous model. On August 4, 2020 Apple refreshed the iMac models. The smaller 21.5 inch model was updated with SSDs standard. The 27 inch model received 10th generation Intel chips, a T2 Security chip, a 1080p camera, studio-quality microphone, an option for nano-textured glass, as well as SSDs standard. The new 27 inch SSDs are now soldered to the motherboard, which means the storage is no longer replaceable, and in order to replace a hard drive the entire motherboard must be replaced and any data on the drive will be wiped.<ref>{{Cite web|date=2020-08-05|title=iMac 27 "2020: SSDs arrive soldered|url=https://www.world-today-news.com/imac-27-2020-ssds-arrive-soldered/|access-date=2020-09-09|website=World Today News|language=en-US}}</ref> ==Influence== The [[iMac G3|original iMac]] was the first [[legacy-free PC]].<ref>{{cite web|title=Compaq Hopes to Follow the iMac|url=http://www.zdnet.com/news/compaq-hopes-to-follow-the-imac/104658|first=John G.|last=Spooner|date=December 16, 1999|work=[[ZDNet]]}}</ref> It was the first Macintosh computer to have a [[USB]] port but no [[floppy disk drive]]. Subsequently, all Macs have included USB. Via the USB port, hardware makers could make products compatible with both x86 PCs and Macs. Previously, Macintosh users had to seek out certain hardware, such as keyboards and mice specifically tailored for the "old world" Mac's unique [[Apple Desktop Bus|ADB]] interface and printers and modems with [[Mini-DIN connector#8-pin|MiniDIN-8]] serial ports. Only a limited number of models from certain manufacturers were made with these interfaces, and often came at a premium price. USB, being cross-platform, has allowed Macintosh users to select from a large selection of devices marketed for the [[Wintel]] PC platform, such as [[USB hub|hubs]], [[image scanner|scanners]], [[data storage device|storage devices]], [[USB flash drives]], and [[Mouse (computing)|mice]]. After the iMac, Apple continued to remove older peripheral interfaces and floppy drives from the rest of its product line. Borrowing from the 1997 [[Twentieth Anniversary Macintosh]], the various LCD-based iMac designs continued the all-in-one concept first envisioned in Apple's original Macintosh computer. The successful iMac allowed Apple to continue targeting the [[Power Macintosh]] line at the high-end of the market. This foreshadowed a similar strategy in the notebook market when the iMac-like [[iBook]] was released in 1999. Since then, the company has continued this strategy of differentiating the consumer versus professional product lines. Apple's focus on design has allowed each of its subsequent products to create a distinctive identity. Apple avoided using the beige colors then pervading the PC industry. The company would later drift from the multicolored designs of the late 1990s and early 2000s. The latter part of the decade saw Apple using [[Anodizing|anodized]] aluminum; glass; and white, black, and clear [[polycarbonate]] plastics among their build materials. Today many PCs are more design-conscious than before the iMac's introduction, with multi-shaded design schemes being common, and some desktops and laptops available in colorful, decorative patterns.<ref>{{cite web |url=http://www.macworld.com/article/135017/2008/08/imacanniversary.html |title=Eight ways the iMac changed computing |accessdate=August 27, 2008 |work=[[Macworld]] |date=August 15, 2008 }}</ref> Apple's use of translucent, candy-colored plastics inspired similar [[industrial design]]s in other consumer products.<ref>{{cite web|url=https://www.wired.com/2008/09/gallery-imac-anniversary/ |title=10 Years of Cuddly, Friendly iMacs |work=Wired |first=Benj |last=Edwards |date=September 15, 2008}}</ref> Apple's later introduction of the iPod, iBook G3 (Dual USB), and iMac G4 (all featuring snowy-white plastic), inspired similar designs in other companies' consumer electronics products. The color rollout also featured two distinctive ads: one called 'Life Savers' featured the [[Rolling Stones]] song, "[[She's a Rainbow]]" and an advertisement for the white version had the introduction of [[Cream (band)|Cream]]'s "[[White Room]]" as its backing track{{Citation needed|date=October 2017}}. ==Reception== iMac has received considerable critical acclaim, including praise from technology columnist [[Walt Mossberg]] as the "Gold Standard of desktop computing";<ref>{{cite web |url=http://solution.allthingsd.com/20051130/gold-standard-for-pcs/ |title=A New Gold Standard for PCs |author=Walt Mossberg |authorlink=Walter Mossberg |date=November 30, 2005 |accessdate=June 29, 2007 |publisher=All Things Digital }}</ref> [[Forbes|''Forbes'' magazine]] described the original candy-colored line of iMac computers as being an "industry-altering success".<ref>{{cite web |url=https://www.forbes.com/2000/04/14/feat.html |title=Resurgence Of An American Icon |author=Jon Swartz |date=April 14, 2000 |accessdate=November 24, 2006 |work=Forbes }}</ref> The first 24" [[Core 2 Duo]] iMac received [[CNET]]'s "Must-have desktop" in their 2006 ''Top 10 Holiday Gift Picks''.<ref>{{cite video |url=http://www.cnettv.com/9710-1_53-24930.html |title=Must-have desktop: Apple iMac Core 2 Duo (24-inch, 2.16&nbsp;GHz) |medium=Internet |work=CNET |date=November 22, 2006 |people=Rich DeMuro }}</ref> Apple faced a class-action lawsuit filed in 2008 for allegedly deceiving the public by promising millions of colors from the LCD screens of all Mac models while its 20-inch model only held 262,144 colors.<ref>[http://www.appleinsider.com/articles/08/03/31/apple_hit_with_another_millions_of_colors_lawsuit.html Apple sued over 20 inch iMac marketing being incorrect and using a less efficient screen type.] Apple insider, March 31, 2008</ref> This issue arose due to the use of 6-bit per pixel [[Liquid crystal display#Twisted nematic (TN)|Twisted nematic LCD]] screens. The case was dismissed on January 21, 2009.<ref>{{cite court|url=http://www.leagle.com/xmlResult.aspx?page=1&xmldoc=20091650672cjfsupp2d978_11563.xml |litigants=Sanders v. Apple Inc. |date=January 21, 2009 |court=[[United States District Court for the Northern District of California|N.D. Cal.]] |vol=672 |reporter=F.Supp.2d |opinion=978}}</ref> While not a criticism of iMac ''per se'', the integrated design has some inherent tradeoffs that have garnered criticism. In ''The Mythical Midrange Mac Minitower'', Dan Frakes of ''Macworld'' suggests that with iMac occupying the midrange of Apple's product line, Apple has little to offer consumers who want some ability to expand or upgrade their computers, but do not need (or cannot afford) the [[Mac Pro]].<ref>{{cite web|last=Frakes |first=Dan |url=http://www.macworld.com/article/58562/2007/06/midrangemac.html |title=The Mythical Midrange Mac Minitower |work=Macworld |accessdate=July 6, 2011}}</ref> For example, iMac's integration of monitor and computer, while convenient, commits the owner to replace both at the same time. For a time before the [[Mac mini]]'s introduction, there were rumors of a "headless iMac"<ref>{{cite web|last=Bangeman |first=Eric |url=https://arstechnica.com/old/content/2004/12/4488.ars |title=Apple supposedly prepping cheap "headless iMac" |publisher=ARStechnica |date=December 29, 2004 |accessdate=July 6, 2011}}</ref> but the G4 Mac mini as introduced had lower performance compared to the iMac, which at the time featured a G5 processor.<ref>{{cite web|url=https://www.macworld.com/article/1042363/macminireview.html |title=Mac mini: Perfect Bookshelf Box for Mac Minimalists |first=Jennifer |last=Berger |work=[[Macworld]] |date=January 26, 2005}}</ref> Some third party suppliers such as [[Other World Computing]] provide upgrade kits that include specialized tools for working on iMacs. Similarly, though the graphics chipset in some Intel models is on a removable [[Mobile PCI Express Module|MXM]], neither Apple nor third parties have offered retail iMac [[Graphics processing unit|GPU]] upgrades, with the exception of those for the original iMac G3's "mezzanine" PCI slot. Models after iMac G5 (excluding the August 7, 2007 iMac update) made it difficult for the end-user to replace the hard disk or optical drive, and Apple's warranty explicitly forbids upgrading the socketed CPU. While conceding the possibility of a mini-tower cannibalizing sales from the Mac Pro, Frakes argues there is enough frustration with iMac's limitations to make such a proposition worthwhile. This disparity has become more pronounced after the G4 era since the bottom-end Power Mac G5 (with one brief exception) and Mac Pro models have all been priced in the US$1999–2499 range, while base model Power Macs G4s and earlier were US$1299–1799. The current generation iMac has Intel 5th generation i5 and i7 processors, ranging from quad-core 2.7&nbsp;GHz i5 to a quad-core 3.4&nbsp;GHz i7 processor,<ref>{{cite web|url=https://www.apple.com/imac/specs/ |title=iMac Technical Specifications |date=December 10, 2012}}</ref> however it is possible to upgrade the 2010 edition of the iMac quite easily.<ref>{{cite web|url=http://www.ifixit.com/Guide/Upgrade+iMac+Intel+Core+i3+CPU+to+Core+i7/8670/1 |title=Upgrade iMac Intel Core i3 CPU to Core i7 |first=Stephen |last=Rawlins |work=EnglandGreen |date=April 15, 2012}}</ref> ==Supported operating systems== ===Supported macOS releases=== {| class="wikitable mw-collapsible style=" style="font-size: 90%;" ! colspan="32" style="text-align:center;" |Supported macOS releases |- ! rowspan="3" |OS release ! colspan="13" |PowerPC-based ! colspan="18" |Intel-based |- ! colspan="2" |G3 (tray loading, 1st generation) ! colspan="4" |G3 (slot loading, 2nd generation) ! colspan="4" |G4 (3rd generation) ! colspan="3" |G5 (4th generation) ! colspan="3" |Polycarbonate (5th generation) ! colspan="3" |Aluminum (6th generation) ! colspan="3" |Aluminum Unibody (7th generation) ! colspan="3" |Slim Aluminum Unibody (8th generation) ! colspan="6" |Retina (9th generation) |- !Mid 1998 !Early 1999 !Late 1999 !Mid 2000 !Early 2001 !Mid 2001 !Early 2002 15" !Mid 2002 17" !Early 2003 !Late 2003 !Late 2004 !Mid 2005 !Late 2005 !Early 2006 !Mid 2006 !Late 2006 !Mid 2007 !Early 2008 !Early 2009 !Late 2009 !Mid 2010 !Mid 2011 !Late 2012 !Late 2013 !Mid 2014 !Late 2014 !Mid 2015 !Late 2015* !Mid 2017* !Early 2019 !Mid 2020 |- ![[Mac OS 8]] |{{Ya|text=8.1}} |{{Ya|text=8.5.1}} |{{Ya|text=8.6}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |- ![[Mac OS 9]] |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya|text=9.0.4}} |{{Ya|text=9.1}} |{{Ya|text=9.1}} |{{Ya|text=9.2.2}} |{{Ya|text=9.2.2}} |{{Operational|Emulation only}} |{{Operational|Emulation only}} |{{Operational|Emulation only}} |{{Operational|Emulation only}} |{{Operational|Emulation only}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |- ![[Mac OS X 10.0|10.0 Cheetah]] |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya|text=10.0.4}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |- ![[Mac OS X 10.1|10.1 Puma]] |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya|text=10.1.2}} |{{Ya|text=10.1.5}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |- ![[Mac OS X Jaguar|10.2 Jaguar]] |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya|text=10.2.3}} |{{Ya|text=10.2.6 (15" and 17")}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |- ![[Mac OS X Panther|10.3 Panther]] |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya|text=10.3.1 (20")}} |{{Ya|text=10.3.5}} |{{free|unofficial}} |{{free|unofficial}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |- ![[Mac OS X Tiger|10.4 Tiger]] |{{partial|patch}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya|text=10.4.2}} |{{Ya|text=10.4.4}} |{{Ya|text=10.4.7}} |{{Ya|text=10.4.7}} |{{Ya|text=10.4.10}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |- ![[Mac OS X Leopard|10.5 Leopard]] |{{free|With G4 processor upgrade}} |{{free|With G4 processor upgrade}} |{{free|With G4 processor upgrade}} |{{free|With G4 processor upgrade}} |{{free|With G4 processor upgrade}} |{{free|With G4 processor upgrade}} |{{partial|patch}} |{{partial|patch}} |{{nonfree|17" only, 15" requires patch}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya|text=10.5.2}} |{{Ya|text=10.5.6}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |- ![[Mac OS X Snow Leopard|10.6 Snow Leopard]] |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{free|Intel processor upgrade}} |{{free|Intel processor upgrade}} |{{nonfree|patch, beta only}} |{{Ya|text=With 1 GB RAM}} |{{Ya|text=With 1 GB RAM}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya|text=10.6.3}} |{{Ya|text=10.6.6}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |- ![[Mac OS X Lion|10.7 Lion]] |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{free|Intel processor upgrade}} |{{free|Intel processor upgrade}} |{{free|Intel processor upgrade}} |{{partial|patch, requires processor upgrade}} |{{partial|patch, requires processor upgrade}} |{{Ya|text=With 2 GB RAM}} |{{Ya|text=With 2 GB RAM}} |{{Ya|text=With 2 GB RAM}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |- ![[OS X Mountain Lion|10.8 Mountain Lion]] |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{free|Intel processor upgrade}} |{{free|Intel processor upgrade}} |{{free|Intel processor upgrade}} |{{partial|patch, requires processor upgrade}} |{{partial|patch, requires processor upgrade}} |{{partial|patch}} |{{Ya|text=With 2 GB RAM}} |{{Ya|text=With 2 GB RAM}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya|text=10.8.1}} |{{Ya|text=10.8.4}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |- ![[OS X Mavericks|10.9 Mavericks]] |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{free|Intel processor upgrade}} |{{free|Intel processor upgrade}} |{{free|Intel processor upgrade}} |{{partial|patch, requires processor upgrade}} |{{partial|patch, requires processor upgrade}} |{{partial|patch}} |{{Ya|text=With 2 GB RAM}} |{{Ya|text=With 2 GB RAM}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya|text=10.9.3}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |- ![[OS X Yosemite|10.10 Yosemite]] |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{free|Intel processor upgrade}} |{{free|Intel processor upgrade}} |{{free|Intel processor upgrade}} |{{partial|patch, requires processor upgrade}} |{{partial|patch, requires processor upgrade}} |{{partial|patch}} |{{Ya|text=With 2 GB RAM}} |{{Ya|text=With 2 GB RAM}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya|text=10.10.3}} |{{na}} |{{na}} |{{na}} |{{na}} |- ![[OS X El Capitan|10.11 El Capitan]] |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{free|Intel processor upgrade}} |{{free|Intel processor upgrade}} |{{free|Intel processor upgrade}} |{{partial|patch, requires processor upgrade}} |{{partial|patch, requires processor upgrade}} |{{partial|patch}} |{{Ya|text=With 2 GB RAM}} |{{Ya|text=With 2 GB RAM}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{na}} |{{na}} |{{na}} |- ![[MacOS Sierra|10.12 Sierra]] |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{partial|patch, requires processor upgrade}} |{{partial|patch}} |{{partial|patch}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya|text=10.12.5}} |{{na}} |{{na}} |- ![[MacOS High Sierra|10.13 High Sierra]] |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{partial|patch, requires processor upgrade}} |{{partial|patch}} |{{partial|patch}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{na}} |{{na}} |- ![[MacOS Mojave|10.14 Mojave]] |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{partial|patch, requires processor upgrade}} |{{partial|patch}} |{{partial|patch}} |{{partial|patch}} |{{partial|patch, 27-inch model with no graphics acceleration}} |{{partial|patch, no graphics acceleration}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya|text=10.14.3}} |{{na}} |- ![[MacOS Catalina|10.15 Catalina]] |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{partial|patch, requires processor upgrade}} |{{partial|patch}} |{{partial|patch}} |{{partial|patch}} |{{partial|patch, 27-inch model with no graphics acceleration}} |{{partial|patch, no graphics acceleration}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{na}} |- ![[MacOS Big Sur|11.0 Big Sur]] |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{na}} |{{partial|patch, requires processor upgrade, no Wi-Fi or graphics acceleration}} |{{partial|patch, no Wi-Fi or graphics acceleration}} |{{partial|patch, no Wi-Fi or graphics acceleration}} |{{partial|patch, only Core 2 Duo model supported, no Wi-Fi or graphics acceleration}} |{{na|text=Crashes in AppleACPICPU.kext during boot; patch does not work}} |{{partial|patch, no Wi-Fi or graphics acceleration}} |{{partial|patch, no Wi-Fi}} |{{partial|patch}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |} *Includes 21.5" non-Retina models released in the same date (Late 2015 and Mid 2017) ===Supported Windows versions (Intel iMacs only)=== {| class="wikitable mw-collapsible style=" style="font-size: 90%;" width: 100%;" |- ! colspan="19" style="text-align:center;" |Supported Windows versions |- ! rowspan="2" style="width:12em;" |OS release ! colspan="3" |First generation ! colspan="3" |Second generation ! colspan="3" |Third generation ! colspan="3" |Fourth generation ! colspan="6" |Fifth generation |- ! colspan="1" |Early 2006 ! colspan="1" |Mid 2006 ! colspan="1" |Late 2006 ! colspan="1" |Mid 2007 ! colspan="1" |Early 2008 ! colspan="1" |Early 2009 ! colspan="1" |Late 2009 ! colspan="1" |Mid 2010 ! colspan="1" |Mid 2011 ! colspan="1" |Late 2012 ! colspan="1" |Late 2013 ! colspan="1" |Mid 2014 ! colspan="1" |Late 2014 ! colspan="1" |Mid 2015 ! colspan="1" |Late 2015 ! colspan="1" |Mid 2017 ! colspan="1" |Early 2019 ! colspan="1" |Mid 2020 |- ![[Windows XP|Windows XP<br>32-bit]]{{r|group=Note|XP}}<ref name="XP-8">{{cite web |url=https://support.apple.com/en-us/HT204048 |title=System requirements to install Windows on your Mac via Boot Camp |date=March 10, 2015 |access-date=August 21, 2020 |archive-url=https://web.archive.org/web/20150312172800/https://support.apple.com/en-us/HT204048 |archive-date=March 12, 2015}}</ref><ref>{{cite magazine|url=http://www.computerworld.com/s/article/9218794/OS_X_Lion_requires_Windows_7_for_Boot_Camp|title=OS X Lion requires Windows 7 for Boot Camp|last=Keizer|first=Gregg|magazine=[[Computerworld]]|accessdate=August 2, 2011|date=August 2, 2011}}</ref> |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{partial}}{{r|group=Note|XP}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |- ![[Windows Vista|Windows Vista<br>32-bit]]{{r|group=Note|Vista}}<ref name="XP-8" /><ref>{{cite magazine|url=http://www.computerworld.com/s/article/9218794/OS_X_Lion_requires_Windows_7_for_Boot_Camp|title=OS X Lion requires Windows 7 for Boot Camp|last=Keizer|first=Gregg|magazine=[[Computerworld]]|accessdate=August 2, 2011|date=August 2, 2011}}</ref> |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{partial}}{{r|group=Note|Vista}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |- ![[Windows Vista|Windows Vista<br>64-bit]]{{r|group=Note|Vista}}<ref name="XP-8" /> |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{partial}}{{r|group=Note|Vista}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |- ![[Windows 7|Windows 7<br>32-bit]]{{r|group=Note|Win732-bit}}<ref name="XP-8" /><ref>{{cite web|url=https://www.nextofwindows.com/apple-released-boot-camp-with-windows-10-support|title=Apple Released Boot Camp 6.1 with Windows 10 Support|last=Hu|first=Jonathan|website=nextofwindows|date=August 12, 2015|access-date=August 21, 2020}}</ref> |{{Na}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |- |- ![[Windows 7|Windows 7<br>64-bit]]{{r|group=Note|Win764-bit}}<ref name="XP-8" /><ref name="7 and later">{{cite web|url=https://support.apple.com/en-us/HT204048|title=System requirements to install Windows using Boot Camp for macOS|website=Apple Support|date=December 6, 2018|access-date=August 21, 2020}}</ref> |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |- ![[Windows 8]]<br>{{r|group=Note|8.0}}{{r|group=Note|Win8+}}<ref name="XP-8" /> |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{partial}}{{r|group=Note|m10}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Na}} |{{Na}} |{{Na}} |- ![[Windows 8.1]]<br>{{r|group=Note|8.1}}{{r|group=Note|Win8+}}<ref>{{cite web |url=https://support.apple.com/en-us/HT201457 |title=Use Windows 8.1 on your Mac with Boot Camp|date=September 24, 2018 |website=Apple Support |access-date=August 21, 2020}}</ref><ref name="7 and later" /> |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{partial}}{{r|group=Note|m10}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Na}} |{{Na}} |{{Na}} |- ![[Windows 10]]<br>{{r|group=Note|Win10}}{{r|group=Note|Win8+}}<ref>{{cite web |url=https://support.apple.com/en-us/HT201468 |title=Install Windows 10 on your Mac with Boot Camp Assistant|date=June 16, 2020 |website=Apple Support |access-date=August 21, 2020}}</ref><ref name="7 and later" /> |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Na}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |{{Ya}} |- |} {{Reflist|group=Note|refs= <ref name=XP>Windows XP can only be installed on Macs built up until late 2009 with [[Boot Camp (software)|Boot Camp]] 3 or earlier, excluding the late 2009 high-end 27-inch model. This includes Mac OS X 10.6 or earlier and copies of Mac OS X 10.7 that have not been updated to Boot Camp 4. </ref> <ref name=Vista>Windows Vista can only be installed on Macs built up until late 2009 with Boot Camp 3 or earlier, excluding the late 2009 high-end 27-inch model. This includes Mac OS X 10.6 or earlier and copies of Mac OS X 10.7 that have not been updated to Boot Camp 4. </ref> <ref name=Win732-bit>The 32-bit version of Windows 7 can only be installed on Macs with Boot Camp 3.1 to 6.0. This includes OS X 10.11 and earlier. </ref> <ref name=Win764-bit>The 64-bit version of Windows 7 can only be installed on Macs with Boot Camp 3.1 or later, running macOS High Sierra or earlier. Later versions of macOS no longer support Windows 7. </ref> <ref name=8.0>Windows 8 can only be installed on Macs with Boot Camp 5.0 to 6.0. This includes OS X 10.11 and earlier. </ref> <ref name=Win8+>Only 64-bit versions of Windows are supported for Windows 8 and later. </ref> <ref name=m10>Only the 27-inch model of the Mid-2010 iMac supports Windows 8 and 8.1. The 21.5-inch model is not supported. </ref> <ref name=8.1>Windows 8.1 can only be installed on Macs with Boot Camp 5.1 or later, running macOS High Sierra or earlier. Later versions of macOS no longer support Windows 8.1. </ref> <ref name=Win10>Windows 10 can only be installed on Macs with Boot Camp 6.0 or later. It is the only supported version of Windows on macOS Mojave and later. </ref> }} {{Timeline of iMac models|headerextension=}} :''For more detailed timelines,<!-- or, "specification tables"? --> see the articles for each individual generation.'' {| class="wikitable" |- ! rowspan="2" |[[Generation]] | style="background:#ffd9d9; width:13%;" |'''[[iMac G3]]''' | style="background:#ffdea6; width:13%;" |'''[[iMac G4]]''' | style="background:#ffde73; width:13%;" |'''[[iMac G5]]''' | style="background:#80ffcc; width:13%;" |'''[[iMac (Intel-based)#1st generation: Polycarbonate iMac|iMac (Intel plastic)]]''' | style="background:#33ffcc; width:13%;" |'''[[iMac (Intel-based)#2nd generation: Aluminum iMac|iMac (aluminum)]]''' | style="background:#32ff80; width:13%;" |'''[[iMac (Intel-based)#3rd generation: Unibody iMac|iMac (aluminum unibody)]]''' | style="background:#c7ff59; width:13%;" |'''[[IMac (Intel-based)#4th generation: Slim unibody iMac|iMac (slim aluminum unibody)]]''' | style="background:#e6f2b3; width:13%;" |'''[[iMac (Intel-based)#5th generation: Retina iMac|iMac (w/ Retina display)]]''' |- |[[File:Indigo_iMac_G3_slot_loading.jpg|120px|Slot loading iMac G3.]] |[[File:IMac_G4_sunflower7.png|120px|iMac G4 Sunflower.]] |[[File:IMac_G5_Rev._A_front.jpg|120px|iMac G5 Rev A.]] |[[File:Imac17pouces.png|120px|Polycarbonate iMac.]] |[[File:IMac_20inch_Aluminum.jpeg|120px|Aluminium iMac.]] |[[File:Imac_16-9.png|120px|Unibody iMac.]] |[[File:IMac_Late_2012_Edge.jpg|120px|Slim edge unibody iMac.]] |[[File:IMac_Late_2012_Edge.jpg|120px|Retina 4K & 5K iMac.]] |- ![[Display device|Display]] |15″ (13.8″ viewable) [[Cathode ray tube|CRT]]||15″, 17″, or 20″ [[LCD]]||17″ or 20″ LCD||17″, 20″, or 24″ LCD||20″ or 24″ LCD||21.5" or 27" [[LED-backlit LCD display|LED-LCD]]||21.5" or 27" [[LED-backlit LCD display|LED-LCD]]||21.5" or 27" [[LED-backlit LCD display|LED-LCD]] |- ![[Central processing unit|Processor]] |[[PowerPC G3]] |[[PowerPC G4]] |[[PowerPC G5]] |[[Intel Core|Intel Core Duo]]/[[Intel Core 2|Intel Core 2 Duo]] |[[Intel Core 2|Intel Core 2 Duo]] |[[Intel Core 2|Intel Core 2 Duo]]/[[Intel Core i3|i3]]/[[Intel Core i5|i5]]/[[Intel Core i7|i7]] |[[Intel Core i5]]/[[Intel Core i7|i7]] |[[Intel Core i3]]/[[List of Intel Core i5 microprocessors|i5]]/[[Intel Core i7|i7]]/[[Intel Core i9|i9]] |- !Included [[Hard drive|HDD]] |4 GB to 60 GB<ref>{{cite web| url=http://apple-history.com/compare/imac/imac_summer2001 |title=iMac G3}}</ref>||40 GB to 160 GB||40 GB to 500 GB||80 GB to 750 GB||250 GB to 1 TB||500 GB to 2 TB or 256 GB [[Solid-state drive|SSD]]||1 TB to 3 TB HDD, 1 TB to 3 TB Fusion Drive or 256 GB to 1 TB flash storage||1 TB to 3 TB HDD, 1 TB to 3 TB Fusion Drive or 256 GB to 2 TB flash storage |- !Included [[Mac OS]] version<ref>{{cite web|url=http://support.apple.com/kb/HT1159 |title=Mac OS X versions (builds) included with Intel-based Macs |publisher=[[Apple Inc.|Apple]] |date=April 21, 2010 |accessdate=May 16, 2010}}</ref> |[[Mac OS 8.1|8.1]], [[Mac OS 8#Mac OS 8.5|8.5]], [[Mac OS 8.6|8.6]], [[Mac OS 9|9.0]], 9.1, [[Mac OS X v10.0|10.0]]||9.2, [[Mac OS X v10.1|10.1]], [[Mac OS X v10.2|10.2]], [[Mac OS X Panther|10.3]]||[[Mac OS X Panther|10.3]], [[Mac OS X Tiger|10.4]]||[[Mac OS X Tiger|10.4]]||[[Mac OS X Tiger|10.4]], [[Mac OS X Leopard|10.5]], [[Mac OS X Snow Leopard|10.6]]||[[Mac OS X Snow Leopard|10.6]], [[Mac OS X Lion|10.7]], [[OS X Mountain Lion|10.8]]||[[OS X Mountain Lion|10.8]], [[OS X Mavericks|10.9]], [[OS X Yosemite|10.10]], [[OS X El Capitan|10.11]], [[MacOS Sierra|10.12]], [[MacOS High Sierra|10.13]], [[MacOS Mojave|10.14]], [[MacOS Catalina|10.15]]||[[OS X Yosemite|10.10]], [[OS X El Capitan|10.11]], [[MacOS Sierra|10.12]], [[MacOS High Sierra|10.13]], [[MacOS Mojave|10.14]], [[MacOS Catalina|10.15]] |- !Release date |August 15, 1998||January 7, 2002||August 31, 2004||January 10, 2006||August 7, 2007||October 20, 2009||November 30, 2012 (21.5")/ January 2013<ref>{{Cite web|title=New 27-inch iMac orders won't ship until January &#124; Macworld|publisher=[[Macworld]]|url=http://www.macworld.com/article/2019014/new-27-inch-imac-orders-wont-ship-until-january.html|accessdate=January 15, 2013}}</ref> (27")||October 13, 2015 (21.5") / October 16, 2014 (27") |- !Discontinued |March 2003||July 2004||March 2006||August 2007||October 2009||October 2012||October 13, 2015 (27")||N/A |} ==References== {{Reflist|colwidth=30em}} ==External links== {{Commons category|IMac|lcfirst=yes}} *{{Official website|www.apple.com/imac|iMac}} – official site *[http://support.apple.com/specs/imac/ Apple – Support – Specifications] *[https://web.archive.org/web/20080510123414/http://docs.info.apple.com/article.html?artnum=301724 Apple – Support – How to identify your iMac] *[https://developer.apple.com/documentation/Hardware/hardware2.html Apple Developer Connection – Comprehensive technical details] ([https://developer.apple.com/documentation/HardwareDrivers/AppleHardware-date.html Latest developer notes]) *([https://www.360technoworld.com/2019/12/Apple-imac-review.html Apple IMac review with full specification (features)]) {{Apple hardware since 1998}} {{Apple hardware}} {{Apple}} {{Use mdy dates|date=October 2013}} {{DEFAULTSORT:Imac}} [[Category:IMac family| ]] [[Category:Macintosh all-in-ones]] [[Category:PowerPC Macintosh computers]] [[Category:Sealed computers]] [[Category:X86 Macintosh computers]] [[Category:Computer-related introductions in 1998]] <references /> llx7glma6o0jt5vmncl9jswjxrqjv5w IMac 27" 2011 Late HDD Thermal Sensor mystery and fun facts 0 1910 5630 2021-03-03T00:49:33Z Crumblenaut 317 Crumblenaut moved page [[IMac 27" 2011 Late HDD Thermal Sensor mystery and fun facts]] to [[iMac HDD Thermal Sensor Bypass]]: All 2010-2011 iMacs have thermal sensors that need bypassing for proper fan control, not just the 27in 2011 models. 5630 wikitext text/x-wiki #REDIRECT [[iMac HDD Thermal Sensor Bypass]] nuvrr9bpbmvbtlja3823gao75rzqobc ISL6258/9 0 752 1690 1596 2020-09-13T12:58:42Z Chrisb 1 Changed redirect target from [[ISL6258 ISL6259]] to [[ISL6258 ISL6259 Troubleshooting]] 1690 wikitext text/x-wiki #REDIRECT [[ISL6258 ISL6259 Troubleshooting]] cd75vzup0ci38sfro94r4xbz68ynlfx ISL6258 ISL6259 0 759 1621 2020-09-07T15:06:20Z Chrisb 1 Chrisb moved page [[ISL6258 ISL6259]] to [[ISL6258 ISL6259 Troubleshooting]] 1621 wikitext text/x-wiki #REDIRECT [[ISL6258 ISL6259 Troubleshooting]] cd75vzup0ci38sfro94r4xbz68ynlfx ISL6258 ISL6259 Troubleshooting 0 6 7083 6526 2024-04-15T16:33:04Z Francis 4 /* Critical and somehow easy to miss "plugged in, not charging" checkpoints: */ 7083 wikitext text/x-wiki [[ACIN]] pin on the charger IC detects if the input voltage is high enough, it is connected to a voltage divider on the DC-in voltage. As indicated on the schematics, the pin should be at least at 3.25V, the exact voltage will depends on the machine (the value of the resistors are similar but not the same across different machine) and the Magsafe version and power. That said, it should always be at least 3.4V, and if using a 85W Magsafe, at least 3.9V. If it's lower than 3.25V you get 0V on [[PPBUS-G3H]]. The value on ACIN is calculated like this (like your usual voltage divider): Vin the input voltage (DC-in voltage here) Vo the output voltage (ACIN pin here) R1 the resistor between the input voltage and output voltage. R2 the resistor between the output voltage and ground. Vo = Vin * R2 / (R1 + R2) [[DCIN]] pin on the charger IC is its input voltage. If the charger IC dies, it can take out the resistor between DC-in and this pin. The voltage on this pin should be almost the same as DC-in voltage. If it's missing you get 0V on PPBUS_G3H [[CELL]] pin on the charger IC sets the initial output voltage on [[PPBUS-G3H]]. CELL is named as such because it is related to the number of cells in series in the battery. With a charging voltage of 4.2V for each cell, a 2-cells battery requires an overall charging voltage of 8.4V, a 3-cells battery requires an overall charging voltage of 12.6V. That's why PPBUS_G3H is around 8.4V (or a little more but doesn't matter) on Macbook Air and 12.6V on Macbook Pro, since it's the voltage that will charge the battery. The voltage on CELL sets the number of cells like this on ISL6259: {| class="wikitable" !Connected to…!!Nb of cells!!Output voltage |- |Floating||1 cell||4.1V |- |Pulled to ground||2 cells||8.2V-8.6V |- |Pulled to PP3V42_G3H||3 cells||12.2-12.6V |} On Macbook Air, this pin is pulled to ground for the 2 cells battery. On Macbook Pro, this pin is pulled to [[PP3V42-G3H]] for the 3 cells battery. The exception is the A1297 17-inch 2009/2010 which runs on a 2 cell battery. The ISL6258 does not have the CELL pin. The ISL6258 has default settings for 2-cell systems and ISL6258A has default settings for 3-cell systems. Note: The definitive output voltage (8.4V/8.6V/12.6V) is set by SMC, initial voltage is a few percents lower (8.2V/12.2V). This is to prevent the battery from being charged with a too high voltage before the SMC has had a chance to interrogate the battery for the correct voltage. [[VDD]]/VDDP The VDD pin is an internal 5V LDO, meaning the charger IC creates that rail. VDDP is connected to it through a resistor. If VDD is missing but DCIN is present, the charger IC is most likely dead. Both pins should have 5V on them if the charger IC receives power. [[ACOK]] Indicates that the DC-in voltage is ok. Connected to SMC_BC_ACOK. I don't exactly know the requirements, but most likely if DCIN, ACIN and VDD are ok then this should come up, and most likely turn on the DC-in MOSFETs at the same time. [[AMON]] Output from AC current sensing. A 1V drop across the current sense resistor would set this pin to 20V (impossible but it gives the ratio) The current sense resistor is usually 0.02ohm, using Ohm's law: I = U/R = 1/0.02 = 50 A So, 50A across the current sense resistor would set this pin to 20V. You'd expect the current to be lower than 4.6A, so that means a 0.092V voltage drop across the current sense resistor, so 1.84V on the AMON pin. This can be useful to know if you have an ID0R sensor issue you cannot figure out. [[BMON]] Output from battery current sensing. A 1V drop across the current sense resistor would set this pin to 36V (impossible but it gives the ratio) The current sense resistor is usually 0.01ohm or 0.005ohm, using Ohm's law with 0.01ohm: I = U/R = 1/0.01 = 100 A So, 100A across the current sense resistor would set this pin to 36V. You'd expect the current to be lower than 7A (I don't know the threshold for ASD but that'd be already 70W with 10V on the battery), so that means a 0.07V voltage drop across the current sense resistor, so 2.52V on the AMON pin. Note that while running on battery this should be strictly below 0 since the battery provides current to the system (although I never measured it…). While running on AC with the battery charging, it should be strictly above 0 since the charger provides current to the battery. This can be useful to know if you have an IB0R sensor issue you cannot figure out. [[SMB: SCL SDA]] These pins form the I2C bus that the SMC uses to talk to the ISL. For safety reasons the ISL wants to be talked to on this bus. If the adapter is present and if the ISL does not receive a write to the MaxSystemVoltage or ChargeCurrent register within 3 minutes, the ISL will terminate charging by turning the BGATE FET off. === Critical and somehow easy to miss "plugged in, not charging" checkpoints: === # R7100 (on 820-00165) 0 Ohm resistor. Line CHRGR_RST_L must be bridged with SMC_RESET_L. If it is lower than 2V you will have a perfectly good green/orange light, autopowerup, good PPBUS and it will work both from battery and charger but wont charge the battery at all. # 2009 and older boards use ISL6258, 2010 and later boards use ISL6259. They are not compatible. When putting ISL6259 in place of ISL6258, PPBUS_G3H without battery will be 8.2V instead of 12.6V on MacBook Pro and battery won't charge, even though everything else will be working properly. When unsure, check part number in charging circuit diagram. Do not rely on the part number in the block diagram or SMBUS diagram, it can be wrong, and often is. [[Category:Mac]] [[Category:MacBook]] 729x0wiqr25agp84xaw2o8mirkaphv2 Identifying Original Parts 0 765 1950 1641 2020-09-28T17:26:58Z Joesipaq 20 1950 wikitext text/x-wiki Ok, so time to address another elephant in the room. Have you been sold "Original" parts? Well here is where we can point out how to easily spot if you are getting ripped off. ==iPhone screens== ===iPhone XS=== This is an original iPhone XS screen. I don't have any copy or refurb screens to compare at the moment. Look for differences in the frame and flex cables.<br>[[File:Original XS screen.jpg|alt=iPhone XS Original Screen|400x400px]] ==iPad Digitizers== ===iPad Air=== This is what an Original iPad Air screen looks like and some important parts to focus on when ordering.<br> [[File:iPad Air Homebutton.jpg|alt=iPad Air Homebutton|400x400px]][[File:iPad Air Flex Cables.jpg|alt=iPad Air Flex Cables|400x400px]][[File:iPad Air digi Alignment.jpg|alt=iPad Air digi Alignment|400x400px]][[File:iPad Air silk screening.jpg|alt=iPad Air silk screening|400x400px]] hb81ffp7u47nf7cgxlfmch7dtmitrbj Internet Recovery 0 1430 5014 3161 2020-10-13T16:11:25Z QuiveryNut 206 Added some more information and some formatting 5014 wikitext text/x-wiki This covers the start up mode using the '''Option + Command + R''' or the '''Shift + Option + Command + R''' keys. Note: Internet Recovery Mode takes longer to boot - this is normal. Note: It is advised to be wired to Ethernet for this mode. Note: Internet Recovery '''''only''''' works if the Macbook has OS X 10.12.4 or later installed due to a BootROM update Things you can do in Internet Recovery Mode: *Restore from Time Machine back up *Reinstall macOS *Go to Apple Support help online *Use Disk Utility to partition, repair, erase, format drives *Add or remove an EFI password (must know password if removing) *Troubleshoot network connection *Open Terminal from Recovery Partition (reset user password, disable/enable SIP, change date, etc.) *Select a different startup disk *See the Installer Log == Internet Recovery (installs latest compatible macOS) == Key Combination: '''Option + Command + R''' Supported on devices from Mid 2012 and newer (as well as some older models with firmware updates, information [https://support.apple.com/en-us/HT202313 here]). This will install the latest compatible macOS version on the device. == Internet Recovery (installs original macOS version) == Key Combination: '''Shift + Option + Command + R''' Supported on devices from Mid 2012 and newer (as well as some older models with firmware updates, information [https://support.apple.com/en-us/HT202313 here]). This will install the version of macOS that came on the device from the factory (or the closest version still supported) If you cannot startup in Recovery Mode by using this startup combination, the current version of macOS may be too old, the internet connection may be faulty/insufficient, or the keyboard may be faulty. Try a wired keyboard, built-in Recovery, a different startup disk, or bootable installer. c8h2cns5c464dmu89b7slyoj2rcjbdn LCD Screen Compatibility 0 495 1097 2020-04-23T17:21:30Z Chrisb 1 Chrisb moved page [[LCD Screen Compatibility]] to [[MacBook LCD Screen Compatibility]] 1097 wikitext text/x-wiki #REDIRECT [[MacBook LCD Screen Compatibility]] dn90i743yqffztf868sifg0qecsggvc LCD Troubleshooting 0 3 1589 555 2020-08-28T21:12:36Z Chrisb 1 1589 wikitext text/x-wiki 5V coming on for a couple of seconds then going back down means screen is not recognized. Can be various things but first you must eclude a bad LCD/LCD cable. 2013/14 and 2015 are not compatible. 13" to 15"… dunno, sometimes it can work. If there is backlight, LCD should be recognized, so more likely to be a damaged connector or filter inductor on an eDP line for example. [[Category:Mac]] [[Category:MacBook]] [[Category:Troubleshooting Guide]] sl87rkzhe7a37nfrmlvf440aeq2luve LP8550 Slope Configuration 0 757 6448 6447 2022-02-28T11:35:48Z Alex6337 28 Corrected a code block mistake. 6448 wikitext text/x-wiki ===Background:=== Macbook air LP8550 backlight IC uses custom slope to adjust brightness smoothly. If you solder on LP8550 from mouser or random ebay seller, you will have default ladder-style brightness adjustment which does not look nice especially when it goes from 10% to 100% due to ambient light change. Turns out this is a simple parameter which could be flashed directly from Linux. ===Python 3 Script:=== [https://gist.github.com/piernov/c2891eebf328491ff7cad20ddab7077b GitHub] ==Video Tutorial:== <youtube>Q5Em-WplHR4</youtube> All credits to @Piernov ==Don't like video tutorials ? Here is the step-by-step with pictures:== #Boot from a Ubuntu (Live USB works well) and connect to Internet (for updates): #*Details on creating an Ubuntu live USB for Mac are here: https://ubuntu.com/tutorials/create-a-usb-stick-on-macos#1-overview #Enable Universal Repository: #*Search and launch « Software & Update » in Ubuntu [[File:Find and launch Software & Updates in Ubuntu.jpg|none|thumb|Find and launch Software & Updates in Ubuntu]] #*Check the "Community-maintained free and open-source software (universe)" box [[File:Community-Universe.jpg|none|thumb|Check the "Community-maintained free and open-source software (universe)" box]] #*Close and « Reload » [[File:reload.jpg|alt=Click "Close" then click "Reload"|none|thumb|Click "Close" then click "Reload"]] #Launch Terminal: #*Install Python 3 by typing the commande below<syntaxhighlight lang="bash"> sudo apt install python3-smbus </syntaxhighlight>[[File:sudo apt install python3.jpg|alt=Install Python 3 by typing this command|none|thumb|Install Python 3 by typing this command]] #Open Web browser and go to <nowiki>https://gist.github.com/piernov</nowiki>[[File:Piernov's github.jpg|alt=Find set_lp8550_slope.py on Piernov's github in a web browser|none|thumb|Find set_lp8550_slope.py on Piernov's github in a web browser]] #Open ''set_lp8550_slope.py,'' click on « raw » and save it on your desktop. (Ideally, your home folder)[[File:raw-button.jpg|alt=Click on "Raw"|none|thumb|Click on "Raw"]][[File:Save in "home".jpg|alt=Save the .py file in "home" folder|none|thumb|Save the .py file in "home" folder|link=File:Save_in_%22home%22.jpg]] #Back to terminal, type « sudo python3 set_lp8550_slope.py »[[File:python script.jpg|alt=Launch the python script|none|thumb|Launch the python script]]<syntaxhighlight lang="bash"> sudo python3 set_lp8550_slope.py </syntaxhighlight> #You're done... ppbcfm0i86sy84tgges56fmmew20ccy Latest MacOS Version by Mac, MacBook, iMac, Mac mini, Mac Pro 0 2120 6785 6784 2023-03-16T22:21:49Z AMK9000 627 Implemented previous change to the other tables 6785 wikitext text/x-wiki Here is a list of the latest OS that Different Mac’s can take: {| class="wikitable" ! colspan="7" |'''MacBook Pro''' |- |'''MacBook Pro Model:''' |13” M2009<br />15” M2007 - M2009<br />17” M2007 - E2009 |13” M2010 - L2011<br />15” M2010 - L2011<br />17” M2010 - L2011 |13” M2012<br />15” M2012<br />13” Retina L2012 - E2013<br />15” Retina M2012 - E2013 |13” Retina L2013 - M2014<br />15” Retina L2013 - M2014 |15” M2015 - L2016<br />13” E2015 - L2016 |15" M2017+<br />13" M2017+ |- |'''Latest OS''' |El Capitan (10.11) |High Sierra (10.13) |Catalina (10.15) |Big Sur (11.0) |Monterey (12.0) |Ventura (13.0) |} <br /> {| class="wikitable" ! colspan="7" |'''MacBook Air''' |- |'''MacBook Air Model:''' |L2008- M2009 |L2010 - M2011 |M2012 |M2013 - E2014 |E2015 - M2017 |L2018+ |- |'''Latest OS''' |El Capitan (10.9) |High Sierra (10.13) |Catalina (10.15) |Big Sur (11.0) |Monterey (12.0) |Ventura (13.0) |} <br /> {| class="wikitable" ! colspan="6" |'''MacBook''' |- |'''MacBook Model:''' |13” Aluminum L2008<br />13” 2009 (A1181) |13” L2009 - M2010 (A1342) |12” E2015 |12” E2016 |12" M2017+ |- |'''Latest OS''' |El Capitan (10.11) |High Sierra (10.13) |Big Sur (11.0) |Monterey (12.0) |Ventura (13.0) |} <br /> {| class="wikitable" ! colspan="5" |Mac Pro |- |'''Mac Pro Model:''' |E2008 - E2009 |M2010 - M2012 (server) |L2013 |L2019+ |- |'''Latest OS''' |El Capitan (10.11) |High Sierra (10.13) |Monterey (12.0) |Ventura (13.0) |} <br /> {| class="wikitable" ! colspan="6" |Mac mini |- |'''Mac mini Model:''' |E2009 |M2010 - M2011 |L2012 |L2014 |L2018+ |- |'''Latest OS''' |El Capitan (10.11) |High Sierra (10.13) |Catalina (10.15) |Monterey (12.0) |Ventura (13.0) |} <br /> {| class="wikitable" ! colspan="7" |iMac |- |'''iMac Model:''' |20” M2007 - M2009<br />24” M2007 - E2009 |21.5” L2009 - L2011<br />27” L2009 - M2011 |21.5” L2012 - L2013<br />27” L2012 - L2013 |21.5” M2014<br />27” Retina 5K L2014 - M2015 |21.5” L2015 <br />27” L2015 |21.5" M2017+<br />27" M2017+<br />24" E2021+ |- |'''Latest OS''' |El Capitan (10.11) |High Sierra (10.13) |Catalina (10.15) |Big Sur (11.0 |Monterey (12.0) |Ventura (13.0) |} <br /> 4i4uu984xsxp2mxqk0otxd67i21hbss List of Contributors 0 696 7027 6861 2023-11-30T11:20:01Z Alex6337 28 Updated my (Alex6337) website URL to fixeurs.fr 7027 wikitext text/x-wiki Dusten Martin Chris from [https://www.facebook.com/shinycomputers Shiny Computers] Jesse Wes The Great Piernov from '''THE INTERNET''' Inwerp Satyricon Xorxfon from [https://www.facebook.com/shinycomputers Shiny Computers] EstebanM Matty from [https://www.facebook.com/shinycomputers Shiny Computers] Pranas Joesipaq Francis Pedro147 from [https://www.facebook.com/Pedroo147] ToniaK from [https://www.facebook.com/shinycomputers Shiny Computers] Thingalong Alan.l Steve Farsidetech Onebitetechnology Captainmac Universal Solution Alex6337 from https://www.fixeurs.fr (in french) Vidax40 KevinShort Carlos Nico Radfordra MaxTorque PRT Group Samsscreenrepair Crumblenaut (Eddie) from [https://www.1201.com 1201 Computer Repair] iwioh2nergxrr8oircwjdj4i7w7zpwf Login Items 0 1861 5475 2021-01-13T20:10:36Z PaladinJax 199 Added page for login items during malware clean ups. 5475 wikitext text/x-wiki While cleaning malware in a MacBook's system here is a list of login items to avoid deleting: * Native Instrument software (Common names are NIHostIntegrationAgent, NTKDaemon, NIHardwareAgent) * Universal Audio software (Common names are UA Mixer Engine, UAD Meter Launcher) apczlkzzriuh7a9by5zd6f19yep2pk9 Lost user account after OS update 0 148 556 441 2020-02-02T11:29:33Z Piernov 10 Category Mac 556 wikitext text/x-wiki == '''Recover lost user after update.''' == Sometime we found that user account suddenly disappears without a trace from the system leaving only "Other accounts" option available, but the user folder is still present from external OS / Single user mode. One way is to recover the user account is to re-create the user by forcing MacOS to re-do the setup process. To do this, boot up to Single user mode (cmd + s) * mount -uw / * ls -l /Users ''(take a note of the user account name and who the permission belongs to (staff:501 or staff:user)'' * rm /var/db/.AppleSetupDone * exit ''(will continue to load the OS)'' / Reboot ''(will reboot the system)'' Now you should be greeted with the Apple Welcome screen, and be able to setup the user. Follow trough the setup, and re-create the user account. If all goes well, you get the everything back just as it was. This process by default only works if the UID of the user was 501. If the lost user's UID is different, you may loose permission to the User's home folder, so you will have to edit it from the advanced user settings to match it (Check the UID from terminal by typing ls -l /Users) [[Category:Mac]] h42jx75q4dcq9i6dw6iwa32hijvlza8 M1 MacBooks 0 2063 7739 7132 2025-01-28T16:35:43Z Inwerp 16 /* CD3217 Repair */ 7739 wikitext text/x-wiki ===Overview:=== This page is a stub article, but it is time to start gathering information about M1 repair practices. For now it is simply to throw things i learn during the repairs (i got 5 M1 macbooks which i cant repair but thats NOT a dead CPU / SSD, so i wont give up untill i fix them). DO not use it as a repair guide or reference of any time, i have probably no idea what i am talking about - @inwerp#2476 #There is no S5-S0 sequence anymore, Do not look for it, forget everything you knew about power rails, sequence. Finita. Like on T2, SSD is always powered on. #The most important power rails now are 3v8 and 5v_S2. G3HOT is now called AON (Allways On?) -- Read below for more 5v_S2 info* #If you have waterdamage and you need some ICs, stock donorboards. Go google AONE36196, thats a simple double mosFet with customized footrpint. I successfully substituted it with two standard N-fets for test purposes but thats not a repair. #all CPU power rails are now generated with Apple proprietary PMU. This might be a good thing because you won really see high side-shorts to VCORE anymore. Bad thing, again - donor only. #if you look at 13 inch logic board, there are WAY less chips and components compared to older devices. #Backlight circuit is the same as on older models. Same LP8549/49 as described in [https://logi.wiki/index.php/Backlight_Troubleshooting this article] #wifi/bt module is a bliss. Check its fooprint and smile. #For now 820-02020 is basically almost a development board. SV004. SV000, SV010, SC002 e.t.c are debug buttons. There are all sorts of resets, power button and force DFU on edge of the board, both sides. '''Important note: You need to populate 1v25 pullup RV005 for DFU button to work.''' There are also debug leds which i plan to stock and test. Switching [https://www.mouser.de/ProductDetail/Toshiba/SSM3K16CTL3F?qs=F5EMLAvA7IC3MTiw98N%252Bjg%3D%3D Fet] , 6.8K 201 resister, [https://www.mouser.de/ProductDetail/Kingbright/APG0603VBC-A1-5MAV?qs=81r%252BiQLm7BTPLVe8H%2FLA9A%3D%3D LED] 0201 #SSD/NANDs are not paired/preprogrammed like on T2 machines. If you find source, you can replace them without need of getting a donor. '''WARNING: Do not use Intel Displays to check M1 and vice versa. Displays are not electrically compatible and also use different logic level (1.8v on M1)!''' === Getting Boot logs === # boot into diagnostics (hold power button 8 seconds untill startup menu, press cmd+D) # start diagnostics and press cmd+opt+l few times # plug in usb stick with hfs+ or apfs system and choose it as target this will qield quite big ZIP archive with lots of useful logs including boot log. ===5v_S2=== While 5v_S2 is important power rail, it is not needed for the unit to power on. It seems to power several systems, but I have booted the board without UC300 (what generates 5v_S2). However this rail might damage lots of other components, specifically because feedback line consists of many 0201 resisters, failure of each one might cause ppbus on 5V rail which is high enough to kill all consumers at once and more of that, it causes failure of 3v8_aon generator (it has alternative VCC from 5V rail) which might be a complete disaster with both PMU failure and much worse, WLAN damage which is so far not replacable. If you have any damage in UC300 area, do not power up to test the device, only test after you are 100% sure in feedback circuit. Things powered by 5v_S2 *Display Backlight (directly powers LP8548) *Keyboard Backlight *Current sensing lines *Fans *Camera *Trackpad *It looks like PP5V_SW_LCD is also powered by 5v_S2 by looking at schematics. However, when I had board booted without UC300, I did have image, just no backlight. This rail is only used to power '''LP8549''' backlight-return controller (check [[Backlight Troubleshooting|Backlight troubleshooting for more info).]] [[File:PP5V SW LCD Schematic.png|alt=PP5V_SW_LCD Schematic|thumb|PP5V_SW_LCD Schematic|none]] ===Power Rails=== as mentioned, 3v8_AON substitutes 3v3_g3h rail from previous modell, also partially thats similar to 3v_S5. It is enabled by CHGR_EN_MVR signal from ISL9240. It is mainly used by CPU Power IC / PMU (unlike 3v3_G3HOT it is a fat 3-phase power rail with buck converters and lots of caps). Looks like all S2 Rails are enabled by PMU(U8100) itself, so power sequence would be something like: Old CD3217-ISL9240 to PPBUS, + 3v8_AON, then PMU generates its internal LDOs, fires up S2 Rails. it is yet unknown if PMU is interchangable between Air/Pro boards, however it might be - most of enable signals are named GPIO on PMU. P3V3S2 Line is used for auxillary components like Wifi/BT, sensors, switches. 5v_S2 is also important rail. It is generated by UC300([https://www.mouser.de/ProductDetail/Analog-Devices/LT8642SEVPBF?qs=wUXugUrL1qyAaLOrUdoiAA%3D%3D&gclid=CjwKCAjw-sqKBhBjEiwAVaQ9a8-DSb2Lg1Qg6drdSZ27_RBgylruUg5bEZrKRgPp7qibDbLUVMf36BoC7FgQAvD_BwE LT8642EV]-2 Stepdown converter with integrated fet). If this rail is unstable, you will get all sorts of issues like weird 3v8 Rail (next rail to power up CPU PMU), blown backlight switch, etc. If any sign corrosion, check all surrounding area, especially Feedback circuit. Unlike many other power ICs we seen before, this one has 5 Resisters and 1 Capacitor on feedback line. 1 Corroded feedback and you have PPBUS on your 5vRail. Not good at all. Possible damage from bad Feedback: UP700(Display power switch), U5700 (3v8 driver, there will be a very weird short 5V to Phase 3 low side gate which looks like hot Q5840 BUT some random voltage on L75840 ). As described in schematics, 3v8 Driver (U5700) might be powered from both PPBUS_VMAIN_VIN as well as PP5v_S2, so its overvoltage is quite dangerous for PMU and possibly CPU too. Power Consumption during boot: 19v. 0.1-,25 is a normal during POST / Boot phase. It also POSTS with 5V-1A if PD is disabled on USB Meter(weird but true). Tricks: - Turning on from battery only: connect battery, jump S5191, this will activate battery and keep it enabled, useful if you need data before you fix cd3217/TB circuit. <br /> ===A2337 820-02016 slight clicking sound near CPU and PPBUS pulsing down from 12v to 11v=== This was caused by 3v8AON Controller (U5700) <br /> ===CPU/DRAM/NAND Resistance to ground (MacBook Pro 2020 M1 820-02020)=== PPVDD_PCPU_AWAKE 19-21Ω PPVDD_ECPU_AWAKE 80-95Ω PPVDD_GPU_AWAKE 20Ω PPVDD_SRAM_AWAKE 250-300Ω PPVDD_DISP_S1 115Ω PPVDD_SOC_S1 20Ω PPVSS_DCS_S1 185Ω PP0V764_S1_SRAM 260Ω PP0V6_S1_VDDQL 0.5kΩ PP1V06_S2SW_DRAM 18Ω PP1V2_AWAKE_PLL 430Ω PP1V25_S2 5+kΩ, used both for CPU and CD3217 VDDIO Supply, so burned CD3217 with short on this line will almost definetely mean dead CPU. NAND: PP2V5_AWAKE_NAND 35KΩ PP0V88_AWAKESW_NAND 190Ω PPVDD_GPU_AWAKE 20Ω '''PMU Master (U8100, provides main voltage rail to CPU)''' PP5V_BSTLQ_VOUT_MPMU 10MΩ, internal LDO Ths LDO is really important for AON Enable / IO system. Its absence/short will cause 5v 0A with 3v3 on 5v_S2 enable and few others (normal level is 1.8v). If shorted, check L8300(input filtering inductor) PP1V2_S2 20MΩ+, external LDO for audio FPGA processor UR300 PP3v3_S2_UPC 40MΩ+ external LDO for CD3217 (substitutes 3V3_RTC on Intel models) PP1V8_AON_MPMU 30KΩ+ external LDO used for few pullups and 1.8, 3v3 AON > LDO enables which are used for some SMC functions and communication lines pullups. '''PMU Slave (U7700, provides voltages for RAM and few AUX supplies for CPU)''' PP0V88_S1 10MΩ, internal LDO<br />PP5V_BSTLQ_VOUT_SPMU 10MΩ, internal LDO ===Backlight troubleshooting=== [[File:Craig Federighi tries to troubleshoot M1 backlight.jpg|thumb|Craig Federighi tries to troubleshoot M1 LID sensor]] Refer to old [[Backlight Troubleshooting|Backlight]] troubleshooting for most of possible issues. However, there is one weird thing to check: 1v8_AON rail is not critical for boot and start up but it is used for LID signal. If 1v8_AON is not present there will be communication between Backlight Drivers, there will be Boost and backlight enable signal. Looks like this was implemented that way so backlight voltage will be always present in S2 state for the famous "instant on" effect which turns backlight on with zero delay. Compared to older models, LID trigger is way more complicated. It consists of many stages and powered by PP1v8_AON LDO (enabled by PMU itself). It is being generated from 3v8_AON rail by UC120 converter. It is very sensitive to any waterdamage on LID or overvoltage on 3v8 rail. It also worth to mention that AMR_RIGHT_OR_ND_1V8(located on audioboard) and AMR_LEFT_OR_ND_1V8(JR200 miniboard on main LB) are real LID signals from both HAL sensors. Both signals are directly routed to UR300 FPGA chip which probably hardware-disables mic and camera once LID is closed. It also issues LID_OPEN signal sent to M1 SoC. There is also UR200 OR gate which issues IPD_LID_OPEN_1V8 signal which is sent to Trackpad, Touchbar and PMU. So basically, this means that problems in LID circuit might cause no camera / microphone, no backlight but working touchbar and Trackpad haptic. Touchbar uses inverted signal (Low if "open"), most other circuits use high if "open". Low PP1V8_AON (1.5 or 1.4v due to bad cap near regulator) would cause partial LID problems like disabled touchscreen on Toucbar, random no haptic click) '''Check [[Angle sensor circuitry|Angle sensor circuitry page]] to find circuit schematics on the Lid Angle Sensor for A2442 (M1 14") and A2681 (M2 MBA).''' ===WIFI Module death=== unfortunately it happens on many MacBook Pro 13" 2020 devices. The reason for this fault is waterdamage in 3v3_S2 regulator, located at UC710 right next to backlight circuit. This place of the board is on the airflow path Once waterdamaged corroded feedback causes regulator to output =ppbus into 3vs2 which kills Wifi module. <s>So far there is no known way to replace wifi chip: its configuration data is most likely stored on hidden SSD partition (similar to BridgeOS on T2 devices), and it wont work even after full DFU restore. It might probably work if you swap WIFI with SSD module.</s> WiFi chip is tied to the CPU and its configuration information is stored in internal CPU ROM. There are rumors that new revision of JCID tool might have ability to untie iPhone 14 Wifi, which would probably be the same process for M1 chips. For now there is no known way to replace WIFI IC. Without WIFI IC macOs triggers KP and not able to boot into OS. Older Recovery OS did not boot as well, however this information needs regular updates / checks. Update 2023: It seems that the Wi-Fi chip does not die as a whole part. Basically, what's getting damaged seems to be two DrMos on 3.3V inputs close to the antenna or maybe some caps nearby. My speculation on the DrMos version is based on a light partial 50 ohm short, which does not generate any heat, but both C0 and C1 amps are not working (the device is not able to connect to any type of Wi-Fi network unless it is really close to the router). Such a short would not prevent DrMos from getting powered, so amp malfunction most likely indicates that DrMos is damaged. Most likely, these are power supplies for transmitter signal amplifiers. This means that if the 3.3V rail is not shut off due to OCP, the Wi-Fi chip will be visible in the system, but it won't connect to any network unless you put it directly on the Wi-Fi router. Two to five centimeters from the router antenna will give you full connectivity. So basically, this short causes the Wi-Fi chip to be unable to amplify TX, but it will still see all Wi-Fi networks around. A possible workaround would be to cut traces to the shorted parts of the chip from the power rail (much safer than drilling the IC). If you do not have visible heat on both 3.3V inputs and resistance is above 50 Ohms, it might be totally fine to leave it as it is. Refer to the images: [[File:Apple_M1_Wifi_module.png|alt=|none|thumb|729x729px|Drilled Wifi Chip reveals two DrMOS like Ics on both hotspots.]] [[File:Wifi_Pinout.png|alt=|none|thumb|628x628px|Instead of drilling, i would recommend to remove power connection from the board. Unfortunately vias are directly under the pads, so you need either to reball WiFi without these connections, or somehow cut it and disconnect it from board.]] M1 WIFI Chip  footprint <br />As a mobile solution to get wifi via ethernet i am using Gl-iNet 300M mini Smart router. this tiny thing is powered from usb port and can be used in a repeater mode. Disable internal wifi, use web interface to connect to your wifi and here you go - just one dongle more and you got wifi connectivity. === PMU Troubleshooting === There are not many things that are required for the PMU to start. First of all, it needs PP3V8_AON power supply(compared to 3 step T2 sequence PP3V3_G3H_RTC >> T2 PMU init >> PMU_VDDMAIN_EN >> PP3V3_G3H ) as it is used to generate all outputs. The second thing would be PMU_VDD_HI, which is a voltage sense similar to T2 PMU on older models. I've never seen it die; however, it was quite often the issue on T2 Macs. Overvoltage on this pin might kill the PMU on models with a non-isolated voltage divider (M1MAX/T2 boards). If the PMU does not output any voltages at all, first check VDD_HI, then inspect all internal LDO supplies and clock generation. If an LDO is not present, inspect its input and cap wells; for example, the PP5V_BSTLO_MPMU input inductor might be burned if you have an internal buck failure. This voltage is most likely used to drive internal buck converters. It also needs CHRGR_AUX_OK from the ISL9240. MPMU_XTAL1 is also necessary for the PMU to operate. ===Tools and chips=== [Https://aliexpress.com/item/1005003346173618.html? AMAOE MAC 9 M1 Stencil] ===Chip identification=== RAM: HYNIX: H9HCNNN'''FBP'''MVGR-NEH 64Gbit (8GB) or H9HCNNN'''CRM'''MVGR-NEH 32Gbit(4GB) chips. MICRON: MT53D512M64D4DG-046 XT:F D9ZGT 32Gbit (4GB) SSD (Same as iPhone 12/13 codes): KICM225 + KICM232 = 256 GB KICM227 256 GB KICM229 512 GB KICM222 512 GB KIC5224 256 GB KICM223R 1 TB == CD3217 Repair == Like on T2 macs, all boards with more than 2 ports have OTP (Internally) configured i2c Address setting. If CD3217 has wrong address, it wont be recognized the SMC and charging won't work. Here is table from 820-02098 (MacBook Pro 2021 A2442 14") board [[File:CD3217 Addr.png|none|thumb]] As on pior models, 0x38 and 0x3F are strap-configured. based on experience and schematics: OTP-Configured(only donor sourced) ports are: Right port UG400(0x3A) and Magsafe U5500(0x3A) port on 14/16" ports. Most likely UG400 is interchangable but Magsafe might limit max charging capacity from 14 to 16inch board. On Macbook Air only MagSafe port should be sourced from donor. Pin configuration: U5500(Magsafe controller) - UPC5/I2CM_SDA_CNFG '''LOW''' 1M-Gnd, I2CM_SCL_CNFG '''HIGH''' 1M-3V3 UPC5_I2C_ADDR '''FLOAT (Not stuffed R5650),''' ALL '''P'''D_UPC2_DBG 100k-'''GND''' UF400(Left Top/DFU port) - UPC0 I2CM_[SCL/SDA]_CNFG '''HIGH''' 1M-3V3 + Routed to Debug connector and Debug mux UF700 / I2C_ADDR '''GND Hard-routed,''' ALL PD_UPC2_DBG '''UART connection to SOC''' UF500(Left Down/normal port) - UPC1 I2CM_[SCL/SDA]_CNFG '''HIGH''' 1M-3V3 + Routed to Debug connector and Debug mux I2C_ADDR '''Float / NC''' UG400(Right USB-C) - UPC2 I2CM_[SCL/SDA]_CNFG '''HIGH''' 1M-3V3 + Routed to Debug connector and Debug mux I2C_ADDR 0K-'''GND.''' All PD_UPC2_DBG 100k-'''GND''' ==MacBook 2021 M1 MAX/PRO Based on 820-02100 schematics== ===Main Power controllers=== #U8100 PMIC MASTER APL1098/343S00515 Huge power IC, generating almost all rails used by CPU. Powered by PP3v8_AON, turns on bucks if VDD_HI ~4.7V is present (voltage divider PPBUS/2). PMIC Dies if there is overvoltage (VDD_HI == PPBUS) #PP3v8_AON U5700 - basically a secondary "PPBUS" rail. Rail is described up to 30A and generated by the same IC from first 2020 M1 board. Used as a main power supply for PMIC Master. As in previous board, enabled by charger IC (U5200, RAA489900) #Battery charging / PPBUS IC RAA489900 - since proper is not available it might be compatible with ISL9240, at least pins listen and VDDIO voltage in schematics are the same. #PP5V_S2 - probably the same "low power state" supply which is used by many switches and as a secondary VCC rail on many ICs. #new CD3218 Magsafe controller. === Power ICS under SoC === '''M1Pro''' (339S00962 S) Power IC (3 chips under SOC) 343S00506, 343S00508, 343S00510 All have different PN on the same board. _______________________________ '''M1Max''' 343s00509 - 5 chips under CPU |'''TODO''': check if its all the same PN, cause on M1Pro that's not the case| === RAM Differences === '''M1 Pro''' has different RAM vendors, So it's important to '''take that into account''' when performing PMU/SPMU main rail measurements. '''H58G78AK6HX049''' (16GB per IC) is low-ohm RAM. That will affect resistance measurements on '''PPVDD2H0_S2SW''', '''PPVDD2H1_S2SW''' and '''PP0V95_S2SW_VDD2L''' power rails. === Resistance and miscellaneous measurements === ==== M1Pro (applicable to A2442" and A2485") ==== ''M1Pro measurements below taken with UT60A:'' '''MPMU U8100 main rails:'''<blockquote>PP0V75_S1_VDDQ1 = 650R PPVDD2H1_S2SW = 230R '''(May be lower, depends on ram used)''' PPVDDGPU_BMPR_S1 = 246R PP0V81_S1_SRAM = 153R PPVDD_ECPU_AWAKE = 137R PPVDD_ECPU_SRAM = ~16K PP1V8_S2SW = ~10,3K PP1V2_S2 = ~28,7K PPVDD_FIXED_S1 = 217R PPVDD_AVEMSR_AWAKESW = 127R PPVDD_AMPH_S2SW = 5,6K</blockquote> '''SPMU U7700 main rails:'''<blockquote>PP0V575_S1_VDDQ = 600R PPVDD_DCSS1 = 96,5R PP0V95_S2SW_VDD2L = 1K '''(May be way lower, seen 75R, depends on RAM used)''' PP1V8_S2 = >100K (don't know why is that differs from 1v8s2 above) PP1V2_AWAKE = 3,5K PPVDD_AMPH0_S2SW =5,36K PPVDD_SOC_S1 = 34R PP0V855_S2SW_VDDCIO = 288R PPVDD_DISP_AWAKESW = 51R PPVDD2H0_S2SW = 216R '''(May be way lower, seen 21,6R, depends on RAM used)'''</blockquote> '''PMU VDDHI Rdivider stock values:'''<blockquote>R8171: 291K R8170: 1.07M '''(tolerance 0.1%)''' Vout = 2,49V@PBUS =11,98 Vout = 2,60V@PBUS =12,3V BOM Variant used: 3S</blockquote> '''Misc:''' <blockquote>PP1V8_S1_CLVR=3,3K (75mV in diode) (PP1V8VDDH*)</blockquote> kyif621yfxezgdn4udjqnx0xw1g0utz ME Disable Strap 0 10 801 800 2020-03-09T10:34:42Z Inwerp 16 801 wikitext text/x-wiki ===Problem:=== The MacBook can boot into EFI ASD but not Into OS. No ASD Problems reported, Installer does not boot as well. Windows / Linux boots just fine. In some cases the reason is incorrect temperature sensors reading, so do not start messing with ME before checking ASD EFI/MRI. ===Repair/Diagnostics:=== Before flashing the bios, check if intel Management Engine is running. On older OSX (10.6.8) you will see "unknown platform" kernel panic in verbose mode. You can also test Intel ME by booting Windows and checking if Intel Management Engine is visible in Device Manager. You may also use Intel [https://downloadcenter.intel.com/en/product/69368 Management Engine Detection tool]. After confirming Intel ME not working, inspect ME Disable Bootstrap circuit for waterdamage/bad solder joints. According to Intel CPU design, CPU/PCH uses audio module HDA_SDO signal as a power-up strap to enable or disable the Management Engine shown as follow: When a user performs the firmware upgrade, SMC sends out SPI_DESCRIPTOR_OVERRIDE_L to chip Q1920 pin 2. Then pin 4 outputs HDA_SDOUT_R (high) to disable ME module in the CPU. So a full re-flashing of SPI ROM can be done. Management Engine is enabled again when OS boots normally. This means in many cases ME Bootstrap problem will also cause no audio and visa versa, shorted HDA_SDO will cause problems with ME Bootstrap. [[File:PCH ME Disable Strap.png|thumb|Q1920 ME Disable circuit]] In normal condition SPI_DESCRIPTOR_OVERRIDE_L should be high to enable ME. If you measure that ME is disabled, Inspect Q1920 step by step for internal shorts, power supply (R1920). If no issue found / Q1920 replacement does not help, move to the EFI(Flash good-known CleanME ROM). If you have waterdamage near the SMC, reflow/reball it before messing with other circuits. If you have waterdamage around ME Disable Strap, it could also damage the ME region during Bios Update so you might have both problems: broken disable strap and corrupted ME region. On older Boards(Sandy Bridge, for example 820-3023-a), there might be no PCH Disable Strap. If you see "Unsupported CPU / Unsupported PCH" before it reboots, check SMC for corrosion (Pin 133, SPI_Descriptor). Never forget to 3xPRAM Reset in a row. <br /> ===Original Discord discussion :=== <blockquote> Piernov:<br> There should be no audio output at all I think, as it'll permanently pull up the audio out line between PCH and audio codec.<br> (To clarify, to disable ME it only has to be pulled during boot, but if there is an issue with Q1920 it should pull it up all the time)<br> The SMC may pull it up when updating EFI if reflashing the ME region is necessary.<br> (since it'll enable writing the area for ME region in the SPI ROM)<br> (btw with flashrom on Linux you can check which area are accessible, and you can indeed toggle manually SPI_DESCRIPTOR_OVERRIDE_L to get write access to ME region)<br> (you still don't have write access to NVRAM area, as it's been permanently disabled outside EFI starting from 2013 I think)<br><br>inwerp:<br> But first check q1920 very closely<br> Check if SPI_DESCRIPTOR_OVERRIDE_L is high => SPI_DESCRIPTOR_OVERRIDE low. High SPI_DESCRIPTOR_OVERRIDE(==SPI_DESCRIPTOR_OVERRIDE_L is low) means ME is disabled<br> Check both mosfets for shorts<br> Boot with win 10 and check if intel ME is present in device manager<br> Somewhat similar problem on Sandy Bridge board with no bootstrap: 820-3023-a, Verbose mode reports "Unsupported CPU, Unsupported PCH", reboots. in this case check corrosion SMC pin 133 (SPI_Descriptor), + 3X PRAM reset in a row.</blockquote> [[Category:Mac]] 5rfvbh23n1fahpmr088ls9clxjzujrp MOSFETs 0 329 5863 5862 2021-05-24T19:35:27Z Chrisb 1 added line break 5863 wikitext text/x-wiki <br /> ==Inwerp== Mosfets usually fail with a short circuit It happens because gate is actually isolated from semi-conductor npn doped sandwich As soon as it has small leak, it exponentially grows up at some point And you have full short between gate drain and source - insulator simply is not here anymore. ESD damage is a real thing since higher voltages might make a small "hole" in the insulator and mosfet will smoke as soon as running current reaches enough rage to "find" this little hole. It might happen after you give device back to customer and the only way to avoid it - do not ignore ESD safety at least when you're working with MosFETs directly. On p mosfets you have basically the same situation except you are supossed to have continuity between drain and source if gate is low but not between these two and gate, since it is always isolated on FET(edited) P mosfets sometimes fail with no short to gate, it could be diagnosed off-circuit '''Probing technique'''<br />It is always a good idea to test every new <s>sanded and probably fake</s> MosFET before you solder it on board. Otherwise you risk further damaging the board instead of repairing. It is actually quite easy. Lets start with one simple, N-Channel 820-00165 CPU VCORE SiSA18DN N-Channel MosFET (In most cases EVEN numbered MosFET are N-Channel, Odds are P-Channel, but you rather double-check) Step 0: short MosFET's Gate to Source. It might be charged from your hand or soldering iron. Gate acts as a capacitor, so you need to discharge it before testing. Step 1: Set multimeter in diode/ohm continuity mode and Put BLACK probe on Drain (bigger plate), RED probe on Source. No continuity means MosFET is not shorted, in diode mode you will also see something like 500mv voltage drop of the internal diode. This is fine. This is not a real diode but part of "parasitic" NPN transistor which is a part of MosFET construction itself. This is also a shortcut to remember difference between N and P channel mosfet representation in schematics. NPN transistor could be represented as two diodes with cathodes ( - ) poiting outwards. And this is exactly what you see when you look at the S-Node of the N-Channel MosFET: two diodes, pointing to Drain and Gate respectively. On P-Channel MosFET, both diodes will be pointing to S which represents PNP transistor as well. So if you remember polarity of normal diode, you can use it to read if its N or P channel MosFET, simply see the "arrow" as a diode which indicates if it is P (anode) or N(Cathode) on Gate. [[File:Mosfet Step1.png|frameless]] Step 2: Put the RED probe on Gate to charge it. Now go back to step 1, put RED back to SOURCE. MosFET is now conductive, you hear a beep. [[File:MosFet Step2.png|frameless]] Step 3: put RED probe on Drain, BLACK probe on Gate. This will discharge the Gate and now if you put BLACK probe on SOURCE there will be no continuity. [[File:Mosfet step3 fixed.png|frameless]] Testing P-Channel mosfets is basically the same process but you need to switch Red/Black probes. Use probes as a low-voltage battery which is used to apply negative voltage on gate. Brief explanation: Multimeter uses low voltage in Ohm-continuity mode. It is enough to charge MosFET's Gate but it makes sense only off-circuit since Gate might be quickly discharged by power IC. Diode mode will also detect internal diode since it uses slightly higher voltage to measure. Important info: Many amateurs check MosFETs by simply probing some random points thus getting random results. If you simply put some probe on Drain and go with some other probe through other pins, you may accidentally charge the gate and probably get a false "shorted mosfet" result. It is also possible that perfectly fine MosFET in circuit will also beep simply because its gate is still charged. <youtube>QWpCBstxdhI</youtube> ==piernov== Basically MOSFETs have a diode allowing current to flow from drain to source even when gate isn't triggered. But as it is a diode ,it has a threshold voltage/forward voltage drop. So when MOSFET isn't turned on and current is flowing from drain to source, you'll measure a voltage on the source lower (by like 0.3-0.7V) than on the drain. (in the case of the P-channel, since the context was about DC-in MOSFETs on Macbook boards that are P-channel) But basically current flowing through body diode is an unwanted effect. The forward voltage drop means you waste power proportional to the current that needs to be dissipated (P = Vf * I). So you want to turn on the MOSFET anyway if you want current flowing through it. Meaning that in general it's not normal to measure a voltage drop similar to a diode forward voltage drop across a MOSFET. In the case of DC-in MOSFETs, what can happen is that the MOSFET that normally blocks the current shorts across drain/source/gate. This short causes the gate to be at the same voltage as drain/source, and it usually also causes the gate for the other MOSFET to have the same voltage, so it's turned off, either because they're tied together or the charger IC tries to turn them off. So current reaches the reverse polarity protection MOSFET, which would normally block the current from flowing in the other direction, so it flows through it but it's not turned on, so you measures a voltage drop after the DC-in MOSFETs compared to before them which is not normal. The other failure mode of the DC-in MOSFETs is the reverse polarity protection MOSFET shorts across drain/source/gate, gate has the same voltage as source/drain, it's tied to the other MOSFET, the one that blocks current flowing in the correct direction, so it's turned off and never lets the current flow. What's confusing for beginners in this situation is that the MOSFET that's bad is the one that lets the current flow, not the one that is blocking the current. Every beginner will jump on replacing the one that blocks the current and obviously it'll not solve the problem. Then they Sorin it and they don't understand why they have 19V on the main power rail but it's still not turning on, or it's turning on but the battery is not charging, or the laptop is throttling or whatever weird stuff happens. This second situation is much more common on non-Apple laptops. ffl5dvxfv3fkh9zmatfiw22q73rac96 MacBook 0 1488 6387 4624 2022-02-04T13:00:36Z Inwerp 16 6387 wikitext text/x-wiki The '''MacBook''' is a brand of [[Macintosh]] [[laptop]] computers by [[Apple Inc.]] that merged the [[PowerBook]] and [[iBook]] lines during the [[Mac transition to Intel processors]]. The current lineup consists of the [[MacBook Air]] (2008–present) and the [[MacBook Pro]] (2006–present). Two different MacBook lines existed from [[MacBook (2006–2012)|2006 to 2012]] and [[MacBook (2015–2019)|2015 to 2019]]. ==Overview== The MacBook family was initially housed in designs similar to the iBook and PowerBook lines which preceded them, now making use of a unibody [[Aluminium|aluminum]] construction first introduced with the MacBook Air. This new construction also has a black plastic keyboard that was first used on the MacBook Air, which itself was inspired by the sunken keyboard of the original polycarbonate MacBooks. The now standardized keyboard brings congruity to the MacBook line, with black keys on a metallic aluminum body. The lids of the MacBook family are held closed by a magnet with no mechanical latch, a design element first introduced with the polycarbonate MacBook. Memory, drives, and batteries were accessible in the old MacBook lineup, though the newest compact lineup solders or glues all such components in place. All of the current MacBooks feature backlit keyboards. The MacBook was discontinued from February 2012 until March 2015, when a new model featuring an ultraportable design and an all-metal enclosure was introduced. It was again discontinued in July 2019 following a price reduction of the 3rd generation MacBook Air and discontinuation of the 2nd generation model. ==MacBook family models== {{Further|Comparison of Macintosh models}} ===Current=== ====MacBook Air==== The [[MacBook Air]] is Apple's least expensive notebook computer. While the 1st generation was released as a premium ultraportable positioned above the 2006 - 2012 MacBook, lowered prices on subsequent iterations and the discontinuation of that MacBook has made it serve as the entry-level Macintosh portable. The 2010 to 2017 base model came with a 13-inch screen and was Apple's thinnest notebook computer until the introduction of the MacBook in March 2015. This MacBook Air model features two USB Type-A 3.0 ports and a Thunderbolt 2 port, as well as an [[SDXC]] card slot (only on the 13inch model). This model of MacBook Air did not have a Retina Display. A MacBook Air model with an 11-inch screen was available from October 2010 to October 2016. In 2017, the MacBook Air received a small refresh, with the processor speed increased to 1.8 GHz. On October 30, 2018, the MacBook Air underwent a major design change, dropping the USB Type-A ports, [[MagSafe]], and the SD card slot in favor of two USB-C/Thunderbolt 3 ports and a headphone jack. It was updated with a [[Retina display]] and [[Amber Lake (microarchitecture)|Intel Y-series Amber Lake]] i5 CPUs, as well as a Force Touch trackpad, a third-generation butterfly mechanism keyboard, and the [[Touch ID]] sensor found in the fourth-generation MacBook Pro, but without the Touch Bar. The base price was also raised, although the base configuration of the 2017 model was retained until July 9, 2019, when it was discontinued along with the Retina MacBook.<ref>{{Cite news|url=https://www.cnet.com/news/macbook-air-2018-retina-display-touch-id-1199-available-nov-7/|title=Apple MacBook Air 2018 gets Retina display, Touch ID for $1,199, available Nov. 7|date=2018-10-30|work=CNET|access-date=2018-11-15|language=en}}</ref> The base price of this model was also dropped to $1099 ($999 for students) on the same day.<ref>{{Cite web|url=https://www.apple.com/newsroom/2019/07/macbook-air-and-macbook-pro-updated-for-back-to-school-season/|title=MacBook Air and MacBook Pro updated for back-to-school season|website=Apple Newsroom|language=en-US|access-date=2019-08-07}}</ref> One important difference on Macbook Air 2018..2019..2020 is that it will bootloop without trackpad. If you use it with external screen, it might look really similar to bad iGpu (30% boot with artifacts then reset). However device simply artifacts on TBT output if being reset. ====MacBook Pro==== The [[MacBook Pro]] is Apple's higher-end laptop available in both 13-inch and 16-inch configurations. The current generation 13-inch MacBook Pro was introduced in October 2018. It features a touch-sensitive OLED display strip located in place of the [[function keys]], a [[Touch ID]] sensor integrated with the power button, and four USB-C ports that also serve as Thunderbolt 3 ports. The 13-inch model was also available in a less expensive configuration with conventional function keys and only two USB-C/Thunderbolt 3 ports, but since July 2019, the base MacBook Pro model has the Touch Bar as well as quad-core processors, similar to the higher-end models, although it still has only two USB-C / Thunderbolt 3 ports.<ref>{{cite web|url=https://www.apple.com/macbook-pro/|title=MacBook Pro|accessdate=October 27, 2016|website=Apple.com|publisher=Apple}}</ref>. The May 4, 2020 refresh adopts many of the upgrades seen in the 16" 2019 MacBook Pro, including the scissor mechanism keyboard ("Magic Keyboard") and a physical Escape button. On November 13, 2019, Apple released the 16-inch MacBook Pro, replacing the 15-inch model of the previous generation, and replacing the butterfly keyboard with a scissor mechanism keyboard (dubbed the Magic Keyboard by Apple), reverting to the old "inverted-T" arrow key layout, replacing the virtual [[Esc key|Escape key]] on the Touch Bar with a physical key, and replacing the [[Advanced Micro Devices|AMD]] [[AMD Polaris|Polaris]] and [[Radeon RX Vega series|Vega]] graphics from the 15-inch model with options from AMD's [[Radeon RX 5000 series|Navi]] graphics architecture, as well as reengineering the speakers, microphone array, and the thermal system compared to the 15-inch; the latter had thermal limitations in the 15-inch model due to its design. In addition, the 16-inch is available with up to 64 GB of DDR4 2667 MHz RAM and up to 8 TB of SSD storage. It also has a 100 Wh battery; this is the largest battery that can be easily carried onto a commercial airliner under U.S. [[Transportation Security Administration]] rules.<ref>{{Cite web|url=https://www.tsa.gov/travel/security-screening/whatcanibring/items/lithium-batteries-more-100-watt-hours|title=Lithium batteries with more than 100 watt hours|date=2017-03-14|website=Transportation Security Administration|language=en|access-date=2019-11-22}}</ref><ref>{{Cite web|url=https://www.faa.gov/hazmat/packsafe/more_info/?hazmat=7|title=Pack Safe – Batteries, lithium|website=www.faa.gov|language=en-us|access-date=2019-11-22}}</ref><ref>{{Cite web|url=https://www.apple.com/newsroom/2019/11/apple-introduces-16-inch-macbook-pro-the-worlds-best-pro-notebook/|title=Apple introduces 16-inch MacBook Pro, the world’s best pro notebook|website=Apple Newsroom|language=en-US|access-date=2019-11-22}}</ref> ===Discontinued=== The original [[MacBook (2006–2012)|MacBook]] was a line of Macintosh portable computers introduced in May 2006 that served as entry-level laptops following the [[Mac transition to Intel processors]], replacing the [[iBook]] G4. It was discontinued on July 20, 2011, for consumer purchase and in February 2012 for education institutions, being superseded by the 2nd generation MacBook Air, as the 11-inch model introduced in 2010 had the same starting price of the MacBook.<ref>{{Cite web|url=https://www.macrumors.com/2011/07/20/apple-discontinues-white-macbook/|title=Apple Discontinues White MacBook [Updated]|last=Slivka|first=Eric|website=www.macrumors.com|language=en|access-date=2019-08-07}}</ref> The Sales of the Mac computers amounted to 18.21 million units in Apple’s 2018 fiscal year<ref>{{Cite web|title=Apple: Mac sales 2002-2018|url=https://www.statista.com/statistics/276308/global-apple-mac-sales-since-fiscal-year-2002/|access-date=2020-06-03|website=Statista|language=en}}</ref> The [[MacBook (2015–2019)|Retina MacBook]] was a line of Macintosh portable computers introduced in March 2015. It was discontinued on July 9, 2019, as it had been superseded by the 13-inch Retina MacBook Air, which had a lower base price ($1,299 for the MacBook, $1,199 for the 2018 MacBook Air, and $1,099 for the 2019 MacBook Air), additional USB-C / Thunderbolt 3 ports (the MacBook has only one USB-C port vs two USB-C / Thunderbolt 3 ports on the MacBook Air), and better performance.<ref>{{Cite web|url=https://www.engadget.com/2019/07/09/apple-killed-the-12-inch-macbook/|title=Apple killed the 12-inch MacBook|website=Engadget|language=en|access-date=2019-07-11}}</ref> ==Comparisons== {| class="wikitable" |+ !Model ![[Microprocessor|Processor]] ([[Intel Core|Intel]]) !'''[[Apple-designed processors#T series|Security chip]]''' ![[Computer memory|Memory]] ![[Computer data storage|Storage]] ![[Graphics processing unit|Graphics]] ![[Display resolution]] ([[16:10 aspect ratio|16:10]] [[IPS panel|IPS]] [[Retina display|Retina]]) !'''Peripheral connections''' !Battery ([[Lithium-ion polymer battery|lithium polymer]], non-removable) ![[List price]] |- |'''MacBook Air''' |1.6 GHz ([[List of Intel Core i5 microprocessors#%22Amber%20Lake-Y%22%20(dual-core%2C%2014%20nm)|i5-8210Y]]) dual‑core Intel Core i5, Turbo Boost 3.6 GHz, with 4 MB L3‑cache | rowspan="4" |[[Apple-designed processors#Apple T2|Apple T2]] | rowspan="3" |8 GB of onboard 2133 MHz LPDDR3 SDRAM<ref>{{Cite web|url=https://www.ifixit.com/Teardown/MacBook+Air+13-Inch+Retina+2018+Teardown/115201|title=MacBook Air 13" Retina 2018 Teardown|date=2018-11-08|website=iFixit|language=en|access-date=2019-08-07}}</ref> ''Optional 16 GB at the time of purchase only.'' |128 GB or 256 GB PCIe-based SSD ''Optional 512 GB or 1 TB at the time of purchase, not upgradable after.'' |Intel [[Intel Graphics Technology#Kaby%20Lake%20/%20Amber%20Lake|UHD Graphics 617]] with up to 1.5 GB LPDDR3 SDRAM shared from main memory |13.3", native 2560 x 1600 [[Pixel|pixels]] 227 ppi, True Tone display | rowspan="2" | *2× [[Thunderbolt 3]] ([[USB-C]] [[USB 3.1 Gen 2|3.1 Gen 2]]) ports supporting charging and [[DisplayPort]] *1× 3.5 mm headphone jack |49.9 [[Watt-hour|Wh]] |$1,099, $999 for students<ref name=":0">{{Cite web|url=https://www.apple.com/newsroom/2019/07/macbook-air-and-macbook-pro-updated-for-back-to-school-season/|title=MacBook Air and MacBook Pro updated for back-to-school season|website=Apple Newsroom|language=en-US|access-date=2019-08-07}}</ref> |- |'''MacBook Pro''' (13-inch, Two Thunderbolt 3) |1.4 GHz quad-core Intel Core i5 Coffee Lake (8257U), up to 3.9 GHz, 6 MB L3 cache, 128 eDRAM ''Optional 1.7 GHz quad-core Intel Core i7 Coffee Lake (i7-8557U), up to 4.5 GHz, 8 MB L3 cache,128 MB eDRAM'' |128 GB or 256 GB PCIe-based SSD ''Optional 512 GB, 1 TB or 2 TB at the time of purchase, not upgradable after.'' |[[Intel HD and Iris Graphics|Intel Iris Plus Graphics]] 645 with 128 MB eDRAM | rowspan="2" |13.3", 2560 × 1600, 227 ppi with [[DCI-P3|Wide colour (P3) gamut]], 500-[[Candela per square metre|nits]], True Tone display |58.2 [[Watt-hour|Wh]] |$1,299, $1,199 for students<ref name=":0" /> |- |'''MacBook Pro''' (13-inch, Four Thunderbolt 3) |2.4 GHz quad-core Intel Core i5 Coffee Lake (8279U),<ref>{{Cite web|url=https://arstechnica.com/gadgets/2019/05/apple-refreshes-macbook-pro-with-updated-keyboard-8-core-9th-gen-intel-cpus/|title=Apple refreshes MacBook Pro with updated keyboard, 8-core 9th-gen Intel CPUs|last=Axon|first=Samuel|date=2019-05-21|website=Ars Technica|access-date=2019-05-22}} {{verify source |date=August 2019 |reason=This ref was deleted ([[Special:Diff/909706468]]) by a bug in VisualEditor and later restored by a bot from the original cite at [[Special:Permalink/909194676]] cite #222 - please verify the cite's accuracy and remove this {verify source} template. [[User:GreenC_bot/Job_18]]}}</ref>up to 4.1 GHz, 6 MB L3 cache, 128 MB eDRAM ''Optional 2.8 GHz quad-core Intel Core i7 Coffee Lake (8569U), up to 4.7 GHz, 8 MB L3 cache, 128 MB eDRAM'' |256 GB PCIe-based SSD ''Optional 512 GB, 1 TB or 2 TB at the time of purchase, not upgradable after.'' |[[Intel HD and Iris Graphics|Intel Iris Plus Graphics]] 655 with 128 MB eDRAM <ref>{{cite web | url = https://ark.intel.com/products/137979/Intel-Core-i7-8559U-Processor-8M-Cache-up-to-4-50-GHz- | title = Intel Core i7-8559U Processor | date = July 9, 2018 | accessdate = November 16, 2018 | publisher = Intel }} {{verify source |date=August 2019 |reason=This ref was deleted ([[Special:Diff/909706468]]) by a bug in VisualEditor and later restored by a bot from the original cite at [[Special:Permalink/909194676]] cite #231 - please verify the cite's accuracy and remove this {verify source} template. [[User:GreenC_bot/Job_18]]}}</ref> | rowspan="2" | *4× [[Thunderbolt 3]] ([[USB-C]] [[USB 3.1 Gen 2|3.1 Gen 2]]) ports supporting charging and [[DisplayPort]] *1× 3.5 mm headphone jack |58.0 [[Watt-hour|Wh]] |$1,799 |- |'''MacBook Pro''' (16-inch) | *2.6 GHz six-core Intel Core i7 (9750H) Coffee Lake (9th Gen), up to 4.5 GHz, 12 MB L3 cache ''Optional 2.4 GHz eight-core Intel Core i9 (9980HK) Coffee Lake (9th Gen), up to 5 GHz, 16 MB L3 cache'' *2.3 GHz eight-core Intel Core i9 (9880H) Coffee Lake (9th Gen), up to 4.8 GHz, 16 MB L3 cache ''Optional 2.4 GHz eight-core Intel Core i9 (9980HK) Coffee Lake (9th Gen), up to 5 GHz, 16 MB L3 cache'' |16 GB of onboard 2667 MHz PC4-21300 DDR4 SDRAM ''Optional 32 GB or 64 GB RAM configuration available at time of purchase only'' |512 GB PCIe-based SSD ''Optional 1 TB, 2 TB, 4 TB or 8 TB at the time of purchase, not upgradable after.'' |[[AMD]] [[Radeon Pro]] 5300M with 4GB of GDDR6 memory and automatic graphics switching Intel UHD Graphics 630 ''Configurable to AMD Radeon Pro 5500M with 4GB of GDDR6 memory or AMD Radeon Pro 5500M with 8GB of GDDR6 memory.'' |16", 3072 x 1920 (16:10), 226 ppi with Wide colour (P3) gamut, 500-nits ''(16")'' |100 [[Watt-hour|Wh]] |$2,399 |} {{Timeline of MacBook Family Models}} ==Sales== [[File:Macsales.svg]] ==See also== {{AppleIntel}} *[[Comparison of Macintosh models]] ==References== <references /> {{Apple hardware since 1998}} {{Apple}} [[Category:MacBook| ]] [[Category:X86 Macintosh computers]] [[Category:Consumer electronics brands]] on17br22zzjn36dfnp42zpgja56tsvs MacBook/Wi-Fi not working in recovery mode 0 2094 6257 2021-11-25T08:22:18Z Muerto 527 Muerto moved page [[MacBook/Wi-Fi not working in recovery mode]] to [[Wi-Fi not working in recovery mode]] 6257 wikitext text/x-wiki #REDIRECT [[Wi-Fi not working in recovery mode]] 8adp3vrsmfapryr2u43myc4j17i616q MacBook Air 0 2103 7057 7053 2024-03-05T16:52:05Z MaxShevelev 1008 7057 wikitext text/x-wiki ==Overview== The [[MacBook Air]] is Apple's least expensive notebook computer. While the 1st generation was released as a premium ultraportable positioned above the 2006 - 2012 MacBook, lowered prices on subsequent iterations and the discontinuation of that MacBook has made it serve as the entry-level Macintosh portable. The 2010 to 2017 base model came with a 13-inch screen and was Apple's thinnest notebook computer until the introduction of the MacBook in March 2015. This MacBook Air model features two USB Type-A 3.0 ports and a Thunderbolt 2 port, as well as an [[SDXC]] card slot (only on the 13inch model). This model of MacBook Air did not have a Retina Display. A MacBook Air model with an 11-inch screen was available from October 2010 to October 2016. In 2017, the MacBook Air received a small refresh, with the processor speed increased to 1.8 GHz. On October 30, 2018, the MacBook Air underwent a major design change, dropping the USB Type-A ports, [[MagSafe]], and the SD card slot in favor of two USB-C/Thunderbolt 3 ports and a headphone jack. It was updated with a [[Retina display]] and [[Amber Lake (microarchitecture)|Intel Y-series Amber Lake]] i5 CPUs, as well as a Force Touch trackpad, a third-generation butterfly mechanism keyboard, and the [[Touch ID]] sensor found in the fourth-generation MacBook Pro, but without the Touch Bar. The base price was also raised, although the base configuration of the 2017 model was retained until July 9, 2019, when it was discontinued along with the Retina MacBook. The base price of this model was also dropped to $1099 ($999 for students) on the same day. 2010-2017 Macbook Air needs 45W Powersupply to power on. MagSafeID is not checked. [[MacBook LCD Screen Compatibility]] [[MacBook Battery Compatibility]] ==Common Issues / Troubleshooting / Hints== Use Piernov's [[G3 to S3 State for Ivy Bridge Haswell and Broadwell]] diagram for troubleshooting One of most common repairs is [[820-00165 Pulsing]] EFI Corruption could be considered as common issue. [[EFI]] [[Backlight Troubleshooting]] (refer to lp8550 part) You can use 820-3437 SMC on 820-00165 board to turn it on but you will need to reprogram it. [https://logi.wiki/index.php/SMC_flashing SMC Flashing] 820-00165 RAMCFG straps configuration in schematics is not correct. [[A1466 RAMCFG straps right configurations|Here's the right one.]] '''IMPORTANT''': MacBook Air 2018+ will bootloop without a trackpad. If you are fixing bootloop-related issue like TBT controller failure - always test in in chassey. <br /> ==MacBook Air / Pro Intel and M1 keyboard compatibility== All pre-retina keyboards are completely compatible and you can even use 13" keyboard on 11" board to test it. ===A & D Keys issue after Keyboard/Trackpad replacement (Macbook Air 2020 Intel / M1)=== MacBook Air A2179 and 2337 use almost the same keyboard, however A and D keys are routed differently. I you have such issue, refer to the following table: (A2337) MBA M1 + original (A2337 M1) trackpad + original interconnect (820-02288-01 A2337 M1) daughter board + new replacement (A2337) keyboard = A and D is working (A2337) MBA M1 + eBay/Aliexpress trackpad (A2179 Intel) + original interconnect (820-02288-01 A2337 M1) daughter board + new replacement (A2179) keyboard = A and D is working (A2337) MBA M1 + original (A2337 M1) trackpad + original interconnect (820-02288-01 A2337 M1) daughter board + a new replacement (A2179 Intel) keyboard = A and D is not working (A2337) MBA M1 + eBay/Aliexpress trackpad (A2179 Intel) + eBay/Aliexpress trackpad interconnect (820-02005-A A2179 Intel) daughter board + new replacement (A2337 M1) keyboard = A and D is not working (A2337) MBA M1 + eBay/Aliexpress trackpad (A2179 Intel) + eBay/Aliexpress trackpad interconnect (820-02005-A A2179 Intel) daughter board + new replacement (A2179) keyboard = A and D is not working Credits to Alan L (discord) MacBook Pro 2020 13" Intel and M1 Scissor-type keyboards are not compatible, some keys won|t work due to different signal mappings. To figure which one is yours without laptop, check if A key connects pin 28 and 23(M1) [[File:MacBook Pro M1 13 A-Key 2020 Mapping.png|none|thumb|MacBook Pro M1 2020 13" A Key Mapping. QR code: MT201218V1912AKS304LSA18430]] Macbook Pro M1 ==Video guides== <youtube>TnrkG9m-gho</youtube> sqrhd55lv1kk13vmc27vhmsh7406slr MacBook Air Pictures 0 77 5131 5125 2020-10-26T18:12:38Z Piernov 10 /* MacBook Air 13" 2012 */ 5131 wikitext text/x-wiki ==MacBook Air 11" 2010== ==MacBook Air 13" 2010== ==MacBook Air 11" 2011== ==MacBook Air 13" 2011 (820-3023)== [[File:820-3023 top.jpg|900px]] [[File:820-3023 bottom.jpg|900px]] ==MacBook Air 11" 2012== ==MacBook Air 13" 2012 (820-3209)== [[File:820-3209 top.jpg|900px]] [[File:820-3209 bottom.jpg|900px]] ==MacBook Air 11" 2013/14== ==MacBook Air 13" 2013/14== ==MacBook Air 11" 2015== ==MacBook Air 13" 2015/17== [[File:820-00165_Front.jpg|800x800px]]<br><br> [[File:820-00165_Front_Right.jpg|400x400px]] [[File:820-00165_Front_Middle.jpg|400x400px]]<br><br> [[File:820-00165_Front_Left.jpg|400x400px]]<br><br> [[File:820-00165_Back.jpg|800x800px]]<br><br> [[File:820-00165_Back_Right.jpg|400x400px]] [[File:820-00165_Back_Middle.jpg|400x400px]]<br><br> [[File:MacBook Air 13" 2015-2017.jpg|400x400px|link=File:MacBook_Air_13%22_2015-2017.jpg]] == MacBook Air 13" 2020 Scissors A2179 == [[File:Scissors A2179 Top.jpg|left|frameless|900x900px|Scissors A2179 Top view]] <br /> [[File:Scissors A2179 Bottom.jpg|left|thumb|900x900px|Scissors A2179 Bottom view]] <br /> [[Category:Mac]] [[Category:MacBook]] [[Category:MacBook Air]] 7va2c9zvnimg73t8ght9izi4rpu1hzh MacBook Air keyboard compatibility 0 2131 6389 2022-02-04T13:07:15Z Inwerp 16 Inwerp moved page [[MacBook Air keyboard compatibility]] to [[MacBook Air]]: Should not be separate page but a section 6389 wikitext text/x-wiki #REDIRECT [[MacBook Air]] i8sgqaxd2p56qe2zlmwcag36ehdzoml MacBook Battery Compatibility 0 496 6734 6460 2023-02-10T21:51:18Z Inwerp 16 /* MacBook Pro 13" */ 6734 wikitext text/x-wiki ==Sourcing Replacement Batteries & Recommended Brands== Broadly speaking, new or used OEM batteries are preferable to most anything else, but when that is not possible or practical, LMP and NewerTech are the two brands most commonly recommended by experienced techs in the Discord. ==MacBook Air== MacBook Air 11" batteries are electrically compatible with all models. The 2010 battery (A1406) connector is physically in a different location and will not fit in the housing of the 2011-2015 battery (A1495). The 2010-2012 battery has a 35 Wh capacity vs the 2013-2015 at 38 Wh. MacBook Air 13" unibody batteries are electrically compatible with all models. The 2010 (A1377) and 2011-2012 (A1405) battery have a lower capacity at 50 Wh 7.3 V vs the 2013-2017 battery (A1496) at 54 Wh. ==MacBook Pro 13"== The MacBook Pro 13" unibody batteries are electrically compatible with all models. The 2009 battery has a lower capacity at 58 Wh vs the 2010-2012 battery (A1322) at 63.5 Wh 10.95 V. The MacBook Pro 13" Retina 2012-E2013 batteries (A1437) are the same at 74 Wh. The MacBook Pro 13" Retina L2013-2014 batteries (A1493) are the same at 71.8 Wh. The MacBook Pro 13" Retina L2015 battery (A1582) is 71.8 Wh 13.05 V. 2015 13" Retina batteries will work in L2013-E2014 machines. The MacBook Pro 13" Touchbar 4TBT L2016-M2017 battery (A1819) is 49.2 Wh 11.41 V. The MacBook Pro 13" Touchbar 4TBT M2018-E2019 battery (A1964) is 58 Wh 11.41 V. The MacBook Pro 13" Touchbar(A1708) 2TBT L2016-M2017 battery (A1713) is 54.5 Wh 11.41 V. This battery is also compatible with A2171 battery, no issue in AHT. The MacBook Pro 13" Touchbar(2019Mid A2159, A2289 A2338) 2TBT 2018-2020 Battery A2171 is 58.2 Wh 11.41 V. ==MacBook Pro 15"== [[File:Early-2013 vs 2015 Comparison.jpg|thumb]] The MacBook Pro 15" 2009-2010 batteries are electrically compatible. The 2009 battery has a lower capacity at 73 Wh vs the 2010 battery (A1321) at 77.5 Wh. The MacBook Pro 15" 2011-2012 batteries (A1382) are the same at 77.5 Wh. The MacBook Pro 15" Retina 2012-E2013 batteries (A1417) are 95Whr at 10.95V. Comparison with 2015 shown in photo. The MacBook Pro 15" Retina L2013-2014 batteries (A1494) are 95Whr at 11.26V. (The MacBook Pro 15" Retina 2012-2014 batteries are the same capacity at 95 Wh 10.95 V. They are electrically compatible, but have the connector in a physically different location. 2012-E2013 (A1417) 2014 (A1494) [verify]) The MacBook Pro 15" Retina 2015 battery (A1618) has a capacity of 99.5Whr at 11.36V. WARNING: This battery is NOT compatible with A1494 or any other because a) voltage b) cable positioninig on haptic magnet c) connector position compared to 2012. For some reason it was listed as compatible on A1494 on this page below, we appologize for this error. *'''NOTE:''' All 2015 15" MacBook Pros require a battery to power up and boot an operating system properly. Without a battery, a bare board will power on and display a low battery image on the screen, and will not chime. Some third-party batteries and damaged/depleted/expired batteries will allow the 2015 15" boards to ''attempt'' to boot an OS, but they may boot loop indefinitely with or without any user intervention (e.g. keyboard presses). This appears to have something to do with current draw, as it has been reported that disconnecting the trackpad cable may enable problematic batteries to boot boards completely. Previously it was noted that this behavior only occurs on the 820-00163 2015 15" logic board with discrete graphics, but all of the above behaviors have since been observed with multiple 820-00138 2015 15" logic boards that only have integrated graphics. The MacBook Pro 15" Retina Touchbar 2016-2017 battery (A1820) has a capacity of 76Whr at 11.4V. <br /> ==MacBook Pro 17"== The MacBook Pro 17" 2009E-2010M batteries are electrically compatible. Batteries (A1309) are the same at 95 Wh 7.3V The MacBook Pro 17" 2011E-2011L batteries are electrically compatible. Batteries (A1383) are the same at 95 Wh 10.95V<br /> ==Quick Reference List of Battery Compatibility== Here is a quick list that I didn't make, but dukefawks posted a while back on the rossmann forum, this list is a quick lookup for which batteries work with which models. A1278 2009-2012 = A1322 A1286 2009-2010 = A1321 A1286 2011-2012 = A1382 A1297 2009-2010 = A1309 A1297 2011-2011 = A1383 A1369 2010-2010 = A1377 A1369/A1466 2011-2012 = A1405 A1466 2013-2017 = A1396 A1370 2010-2010 = A1375 A1370/A1465 2011-2012 = A1406 A1465 2013-2015 = A1495 A1425 2012-2012 = A1437 A1502 L2013-2014 = A1493 A1502 2015 = A1582 A1398 2012-E2013 = A1417 A1398 L2013-2014 = A1494 A1398 M2015 = A1618 ==Table for battery== {| class="wikitable" |- !Model !Battery !Compatibility |- |A1278 |A1322 |A1322 |- |A1369/A1466 |A1405 |A1377/A1405/A1496 |- |A1465 |A1406 |A1406/A1495 |- |A1398(2012-13) |A1417 |A1417 |- |A1398(2013-14) |A1494 |A1494 |- |A1398(2015M Haptic) |A1618 |A1618 |- |A1425 |A1437 |A1437 |- |A1534 |A1705<br /> |A1527/A1705 |- |A1502 |A1493 |A1493/A1582 |- |A1502 (2015M Haptic) |A1582 |A1493(lower capacity) |- |A1706(TB) |A1819 |A1819 |- |A1708 |A1713 |A1713 |- |A1707 |A1820 |A1820 |- |A1989 |A1964 |A1964 |- |A2159 |A2171 |A1713, A2171 |- | | | |} pky4oanxzwvoc5p3qwprcg0r2rhi5er MacBook Board Layers 0 154 559 451 2020-02-02T11:30:42Z Piernov 10 Category Mac MacBook 559 wikitext text/x-wiki == A1707 == === Trackpad Connector === In case anyone else is fixing one of these nightmares keep these pictures around so you don't have to strip open a donor board too... A1707 trackpad connector. I checked both boards for the 1707, they are the same traces. layer 1 is the one you can see, layer 2 is another ground plane, layer 3 is the first picture, layer 4 is ground plane, layer 5 is the second picture. -- Paul S. [[File:A1707 Layer 3.jpg|800x800px]] [[File:A1707 layer 3.jpg|800x800px]] [[File:A1707 scraped TP connector.jpg|800x800px]] [[File:A1707 scraped TP connector zoom.jpg|800x800px]] [[Category:Mac]] [[Category:MacBook]] 3595lcfvfuhh1xta3ottk0jxjmjvbge MacBook Compatible Schematics and Diode Measurements 0 1412 3058 2020-10-06T15:50:49Z Chrisb 1 Chrisb moved page [[MacBook Compatible Schematics and Diode Measurements]] to [[MacBook Compatible Schematics and Diode Mode Measurements]] 3058 wikitext text/x-wiki #REDIRECT [[MacBook Compatible Schematics and Diode Mode Measurements]] jqs05rffm4qs99dbhyjoabzm8q27hxs MacBook Compatible Schematics and Diode Mode Measurements 0 461 3057 1277 2020-10-06T15:50:49Z Chrisb 1 Chrisb moved page [[MacBook Compatible Schematics and Diode Measurements]] to [[MacBook Compatible Schematics and Diode Mode Measurements]] 1047 wikitext text/x-wiki ==Macbook== === 2016-2017 MacBook Retina === These two board should be very similar. [http://laptop-schematics.com Laptop-schematics] claims to have 820-00687, but it hasn't been verified. * 820-00244 * 820-00687 ==Macbook Air== ==Macbook Pro== === 2012-E2013 MacBook Pro 13" === Files exist for both, but 820-3190 is extremely rare. * 820-3190 * 820-3462 === L2013-2014 MacBook Pro 13" === These two are the same except for RAM, 820-3476 has 16 chips and 820-3536 has 8. Only 820-3536 files are available. * 820-3476 * 820-3536 === L2013-2015 MacBook Pro 15" === For the 820-00138 use 820-3662 with graphics related circuits and 820-00163 for Track Pad, SPI ROM, and stuff that changed on 2015 models. 820-00163 and 820-00426 are the same other then the DC-in MOSFET. * 820-3662 (IG L2013) * 820-00138 (IG 2015): only schematics are available and wrong for touchpad connector at least. * 820-00163 (DG 2015) * 820-00426 (DG 2015) === 2016-2017 MacBook Pro 13" Function Key model. === Only 820-00875 files are available. It doesn't have the PI3USB32224BXEAE chip that 820-00840 has. Otherwise similar. *[[MacBook Diode Measurements#Macbook Pro 13 Inch 2016-2017 820-00875 820-00840|820-00875]] *[[MacBook Diode Measurements#Macbook Pro 13 Inch 2016-2017 820-00875 820-00840|820-00840]] === 2016-2017 MacBook Pro 13" === * 820-00239 * 820-00923 === 2016-2017 MacBook Pro 15" === There is a different schematics file, but the circuits are the same. Boardview is the same file, but there might be some slight difference on the actual board around the CD3215. * 820-00281 * 820-00928 === 2018-2019 MacBook Pro 15" === These should be very similar, [http://laptop-schematics.com Laptop-schematics] claims to have 820-01814, but they haven't been verified. * 820-01041 * 820-01814 fvrokjr83ap3eruoebgwvmvm9rmet37 MacBook Datarecovery 0 2655 7708 2024-11-21T17:42:24Z Inwerp 16 Created page with "== Theory == Since introduction of the integrated SSD Mac models, datarecovery is a huge challenge. '''Rule #1. If data is not backed up and device boots once during your repair - backup data first, finish the repair later. No matter what repair is that, non-backed up Mac is a great risk of losing customer's data. Thus if data is important, always ask for the password before even starting the repair. In some cases you might have 5-10 minutes untill device dies complet..." 7708 wikitext text/x-wiki == Theory == Since introduction of the integrated SSD Mac models, datarecovery is a huge challenge. '''Rule #1. If data is not backed up and device boots once during your repair - backup data first, finish the repair later. No matter what repair is that, non-backed up Mac is a great risk of losing customer's data. Thus if data is important, always ask for the password before even starting the repair. In some cases you might have 5-10 minutes untill device dies completely and you will not be able to get to the data without a major effort''' Mac does not allow direct disk access. This means using an sort of data recovery software is very limited and if SSD is failing you need to reduce possible working time and avoid doing a byteclone unless it is completely necessary or you cant map the data. == Software == '''UFS Explorer Professional''' - Hands down best software ever written. It supports fusion drive, snapshot-based filesystem reconstruction and even basic cloning functionality. The most stable version is probably a windows one. Free license allows you to save small files and also preprocess filesystem so you can decide if it worth it. It costs around 700$ for a lifetime license with 1 year of free updates, and if used on regular basis - worth every dime. '''OpenSuperClone''' - this software will help you to make a byteclone from a failing SSD drive. it is especially important if you are restoring from a filevault-encrypted drive which is not mountable. '''gddrescue''' - basically same purpose OpenSuperClone, CLI. Allows a bit more fine-tuning if you know what are you doing. '''iBoysoft / DiskDrill''' - somewhat usable software with ability to be run directly from the Recovery environment if its available. Filesystemanalyse is not as good as in UFS Explorer, also Mac-Only, most likely no or bad NTFS/ExFat support. '''rsync / cp''' commands are very useful if you are able to get machine into single-user mode. to use rsync you need to find it under /usr/bin of the system partition. it also would not work on M1 since some dlibs would be missing. Rsync is able co continue copy process if its interrupted due to device crash. == Intel Machines (T1, A1534, A1708) == these machines use just a normal integrated SSD drive. on A1706/A1707 it is soldered on board, however if you are skilled enough, you can transfer SSD to A1708 replacable SSD drive, it is identical. A1534 2015-2017 use different SSD types, however some of them are compatible with SSD transfer. In most cases it would have a failed CPU, so the most efficient way to get data would be to slightly rehot the CPU and get it into the Target Disk mode. it is also a good idea to put a dry ice block underneath it to prolong its functional time and keep it close to room temperature during transfer. == Target disk mode == on Intel macs Target disk mode is implemented in mac EFI and it is accessible by pressing T during init. Device will be visible as an external disk drive (not accesible by windows / linux machines). This mode is quite limited because because IO errors during data transfer will in most cases cause kernel panic on the host machine. on M1 machines Target Disk Mode requires boot into the recovery environment and using "share disk" option. this mode is also Mac-only and mac will be visible as a local network device. to use Target Disk you need to use usbc or usbc-usba cable with at least usb 2.0 wiring or better. Use known working machine to sind a cable which provides fast and stable data transfer, lable it and keep as a reference. == Recovery Environment == if machine is able to boot into Recovery (CMD+R on Intel or 8 Sec Power on Apple Silicon machines), you will be able to access terminal or disk utility. Disk utility is able to make image (DMG file) from folder, so you can use it to back up user folders to the external drive or even a network drive if USB ports are dead. On M1 machines CMD + L during the diagnostics alows you to save machine boot and update logs into the external drive (it shows a strange dialog which offers you to "open" when in fact is it a save dialog). Recovery Environment is probably the only method of getting data from M1+ machine, especially if it fails to log in(you type password and it shows unclickable "lets go" button behind fancy desktop background) after the Sequoia Update == Data Transfer Tool and Utility (AASP only) == A1706 and A1707 have a "lifeboat" connector on board which is basically an interface to access PCI-E SSD Drive directly. There are grey-market SSD Transfering devices (only compatible with intel mac machines!) which allow to acces SSD directly. On apple T2 machines there is a special iBSS image which is sideloaded into T2, allowing it to start Target Disk mode without Intel part (even if there is no CPU on board). it is only accesible for AASP providers, however if you a re lucky you might find one which is able to do that for you. There are also some methods of doing that using Checkmate exploit, however i never seen Data Transfer iBSS image in wild. most likely it would be some sort of patched iBSS + Ramdisk similar to one uploaded during DFU restore / revive to allow direct disk access and write BridgeOS) gt9fw0nyganbrntzilc3on0voual0tf MacBook Diode Measurements 0 1413 3060 2020-10-06T15:51:06Z Chrisb 1 Chrisb moved page [[MacBook Diode Measurements]] to [[MacBook Diode Mode Measurements]] 3060 wikitext text/x-wiki #REDIRECT [[MacBook Diode Mode Measurements]] dvd1ns5rvfpue8f94i8ov56yq0kv8vf MacBook Diode Mode Measurements 0 223 6630 6563 2022-09-20T10:32:49Z Alan.l 19 added usb-c 6630 wikitext text/x-wiki ==820-01521== J6000: [[File:01521 J6000 Edited.jpg|alt=01521 J6000 Edited|800x800px]] J6100: [[File:01521 J6100 Edited.jpg|alt=01521 J6100 Edited|800x800px]] J6620: [[File:01521 J6620 Edited.jpg|alt=01521 J6620 Edited|800x800px]] J6700: [[File:01527 J6700 Edited.jpg|alt=01527 J6700 Edited|800x800px]] J3300: [[File:J3300 Edited.jpg|alt=J3300 Edited|800x800px]] J8500: [[File:J8500 Edited.jpg|alt=J8500 Edited|800x800px]] <br /> ==CD3215C== [[File:CD3215C Chip off Board.jpg|alt=CD3215C Chip off Board|800x800px]] ==820-00426== J3501: [[File:820-00426 J3501 Edited.jpg|alt=820-00426 J3501 Edited|800x800px]] J3700: [[File:820-00426 J3700 Edited.jpg|alt=820-00426 J3700 Edited|800x800px]] J4002: [[File:820-00426 J4002 Edited.jpg|alt=820-00426 J4002 Edited|800x800px]] J4801: [[File:820-00426 J4801 Edited.jpg|alt=820-00426 J4801 Edited|800x800px]] J4813: [[File:820-00426 J4813 Edited.jpg|alt=820-00426 J4813 Edited|800x800px]] J4915: [[File:820-00426 J4915 Edited.jpg|alt=820-00426 J4915 Edited|800x800px]] J6060: [[File:820-00426 J6060 Edited.jpg|alt=820-00426 J6060 Edited|800x800px]] J6100: [[File:820-00426 J6100 Edited.jpg|alt=820-00426 J6100 Edited|800x800px]] J6601: [[File:820-00426 J6601 Edited.jpg|alt=820-00426 J6601 Edited|800x800px]] J6602: [[File:820-00426 J6602 Edited.jpg|alt=820-00426 J6602 Edited|800x800px]] J6603: [[File:820-00426 J6603 Edited.jpg|alt=820-00426 J6603 Edited|800x800px]] J7000: [[File:820-00426 J7000 Edited.jpg|alt=820-00426 J7000 Edited|800x800px]] J7050: [[File:820-00426 J7050 Edited.jpg|alt=820-00426 J7050 Edited|800x800px]] J8300: [[File:820-00426 J8300 Edited.jpg|alt=820-00426 J8300 Edited|800x800px]] J9500: [[File:820-00426 J9500 Edited.jpg|alt=820-00426 J9500 Edited|800x800px]] J9510: [[File:820-00426 J9510 Edited.jpg|alt=820-00426 J9510 Edited|800x800px]] <br /> ==Macbook 12 Inch 2016 820-00244== Overall View 1: [[File:00244 Overall Edited.jpg|alt=00244 Overall Edited|800x800px]] J9600: [[File:00244 J9600 Edited.jpg|alt=00244 J9600 Edited|800x800px]] J6750: [[File:00244 J6750 Edited.jpg|alt=00244 J6750 Edited|800x800px]] J4801: [[File:00244 J4801 Edited.jpg|alt=00244 J4801 Edited|800x800px]] J6100: [[File:00244 J6100 Edited.jpg|alt=00244 J6100 Edited|800x800px]] J8500: [[File:00244 J8500 Edited.jpg|alt=00244 J8500 Edited|800x800px]] J6751: [[File:00244 J6751 Edited.jpg|alt=00244 J6751 Edited|800x800px]] J6799: [[File:00244 J6799 Edited.jpg|alt=00244 J6799 Edited|800x800px]] ==Macbook Air 11 Inch 2013 820-3435== Overall View 1: [[File:3435 Overall View 1.jpg|alt=3435 Overall View 1|800x800px]] J8300: [[File:3435 J8300 Edited.jpg|alt=3435 J8300 Edited|800x800px]] J6404: [[File:3435 J6404 Edited.jpg|alt=3435 J6404 Edited|800x800px]] J4800: [[File:3435 J4800 Edited.jpg|alt=3435 J4800 Edited|800x800px]] J7715: [[File:3435 J7715 Edited.jpg|alt=3435 J7715 Edited|800x800px]] J6950: [[File:3435 J6950 Edited.jpg|alt=3435 J6950 Edited|800x800px]] J6100: [[File:3435 J6100 Edited.jpg|alt=3435 J6100 Edited|800x800px]] J6000: [[File:3435 J6000 Edited.jpg|alt=3435 J6000 Edited|800x800px]] J7000: [[File:3435 J7000 Edited.jpg|alt=3435 J7000 Edited|800x800px]] J4002: [[File:3435 J4002 Edited.jpg|alt=3435 J4002 Edited|800x800px]] J9500: [[File:3435 J9500 Edited.jpg|alt=3435 J9500 Edited|800x800px]] ==Macbook Pro 13 Inch 2016-2017 820-00875 820-00840== ''Please note, these readings were taken from a 2016. The 2017 should have identical readings.'' Overall View 1: [[File:00875 Overall 1 Edited.jpg|alt=00875 Overall 1 Edited|800x800px]] Overall View 2: [[File:00875 Overall 2 Edited.jpg|alt=00875 Overall 2 Edited|800x800px]] J6600: [[File:00875 J6600 Edited.jpg|alt=00875 J6600 Edited|800x800px]] J6603: [[File:00875 J6603 Edited.jpg|alt=00875 J6603 Edited|800x800px]] J4810: [[File:00875 J4810 Edited.jpg|alt=00875 J4810 Edited|800x800px]] J6100: [[File:Overall J6100 Edited.jpg|alt=Overall J6100 Edited|800x800px]] J6951: [[File:00875 J6951 Edited.jpg|alt=00875 J6951 Edited|800x800px]] J4801: [[File:00875 J4801 Edited.jpg|alt=00875 J4801 Edited|800x800px]] J6602: [[File:00875 J6602 Edited.jpg|alt=00875 J6602 Edited|800x800px]] J8500: [[File:00875 J8500 Edited.jpg|alt=00875 J8500 Edited|800x800px]] P13USB32 IC: [[File:820-00840 P13.jpg|800x800px]] [[File:CXMhriTlspAPXA6p.jpg|none|thumb|793x793px]] <br /> ==Macbook Pro 15 Inch 2016 Touch Bar 820-00281== Overall View 1: [[File:Overall View 1.jpg|alt=Overall View 1|800x800px]] Overall View 2: [[File:Overall View 2.jpg|alt=Overall View 2|800x800px]] J4900: [[File:J4900.jpg|alt=J4900|800x800px]] J6600: [[File:J6600.jpg|alt=J6600|800x800px]] JB500: [[File:00281 JB500.jpg|alt=00281 JB500|800x800px]] J6500: [[File:00281 J6500.jpg|alt=00281 J6500|800x800px]] J9600: [[File:00281 J9600.jpg|alt=00281 J9600|800x800px]] J6100: [[File:00281 J6100.jpg|alt=00281 J6100|800x800px]] J4501: [[File:00281 J4501.jpg|alt=00281 J4501|800x800px]] J4500: [[File:00281 J4500.jpg|alt=00281 J4500|800x800px]] J6951: [[File:00281 J6951.jpg|alt=00281 J6951|800x800px]] J6410: [[File:00281 J6410.jpg|alt=00281 J6410|800x800px]] J4401: [[File:00281 J4401.jpg|alt=00281 J4401|800x800px]] J6200: [[File:00281 J6200.jpg|alt=00281 J6200|800x800px]] J3300: [[File:00281 J3300.jpg|alt=00281 J3300|800x800px]] J4402: [[File:00281 J4402.jpg|alt=00281 J4402|800x800px]] J8500: [[File:00281 J8500.jpg|alt=00281 J8500|800x800px]] ==MacBook Pro 13 Inch 2016 Touch Bar 820-00239-A== Overall View 1: [[File:00239-Overall View 1 Edited.jpg|alt=Overall View 1 Edited|800x800px]] Overall View 2: [[File:Overall View 2 Edited.jpg|alt=Overall View 2|800x800px]] J4900: [[File:00239 J4900.jpg|alt=00239 J4900|800x800px]] J6600: [[File:00239 J6600.jpg|alt=00239 J6600|800x800px]] JB500: [[File:00239 JB500.jpg|alt=00239 JB500|800x800px]] J6550: [[File:00239 J6550.jpg|alt=00239 J6550|800x800px]] J6500: [[File:00239 J6500.jpg|alt=00239 J6500|800x800px]] J9600: [[File:00239 J9600.jpg|alt=00239 J9600|800x800px]] J4500: [[File:00239 J4500.jpg|alt=00239 J4500|800x800px]] J4501: [[File:00239 J4501.jpg|alt=00239 J4501|800x800px]] J6951: [[File:00239 J6951.jpg|alt=00239 J6951|800x800px]] J6410: [[File:00239 J6410.jpg|alt=00239 J6410|800x800px]] J6430: [[File:00239 J6430.jpg|alt=00239 J6430|800x800px]] J4401: [[File:00239 J4401.jpg|alt=00239 J4401|800x800px]] J6200: [[File:00239 J6200.jpg|alt=00239 J6200|800x800px]] J3300: [[File:00239 J3300.jpg|alt=00239 J3300|800x800px]] J4402: [[File:00239 J4402.jpg|alt=00239 J4402|800x800px]] J8500: [[File:00239 J8500.jpg|alt=00239 J8500|800x800px]] ==820-3209== SMC: [[File:SMC 820-3209-A Crop.jpg|alt=SMC 820-3209-A Crop|800x800px]] ==820-00165== ISL6259: [[File:ISL Edited.jpg|alt=ISL Edited|800x800px]] J3501: [[File:820-00165 J3501 Final.jpg|alt=820-00165 J3501 Final|800x800px]] J3700: [[File:820-00165 J3700 Final.jpg|alt=820-00165 J3700 Final|800x800px]] J4002: [[File:820-00165 J4002 Final.jpg|alt=820-00165 J4002 Final|800x800px]] J4800: [[File:820-00165 J4800 Final.jpg|alt=820-00165 J4800 Final|800x800px]] J6000: [[File:820-00165 J6000 FInal.jpg|alt=820-00165 J6000 FInal|800x800px]] J6100: [[File:820-00165 J6100 FInal.jpg|alt=820-00165 J6100 FInal|800x800px]] J6404: [[File:820-00165 J6404 Final.jpg|alt=820-00165 J6404 Final|800x800px]] J6950: [[File:820-00165 J6950 Final.jpg|alt=820-00165 J6950 Final|800x800px]] J7000: [[File:820-00165 J7000 Final.jpg|alt=820-00165 J7000 Final|800x800px]] J7715: [[File:820-00165 J7715 FInal.jpg|alt= 820-00165 J7715 FInal|800x800px]] J8300: [[File:820-00165 J8300 Final.jpg|alt=820-00165 J8300 Final|800x800px]] J9500: [[File:820-00165 J9500 Final.jpg|alt=820-00165 J9500 Final|800x800px]] ==MacBook Pro 13 Inch 2017 Touch Bar 820-00923-05== (disclaimer : has partial touch) J4900:<br> <br> 1 470<br> 2 454<br> 3 gnd<br> 4 633<br> 5 451<br> 6 628<br> 7 683<br> 8 435<br> 9 471<br> 10 438<br> 11 603<br> 12 gnd ==MacBook Pro 16" 2021 A2442 820-02098== [[File:A2442 820-02098 Diode measurnments.png|frameless|604x604px]] [[File:A2442 820-02098 Secondary PMU.jpg|frameless|598x598px]] <br />[[File:CD3215_Single_USB-C_Side_-_5V_0.05A.jpg|alt=CD3215 Single USB-C Side - 5V 0.05A]]<br />[[File:CD3215_Single_USB-C_Side_Unknown_IC_-_5V_0.05A.jpg|alt=CD3215 Single USB-C Side Unknown IC - 5V 0.05A]] <br /> [[File:CD3215_bottom_USB-C_-_5V_0.25_-_0.05A.jpg|alt=CD3215 bottom USB-C - 5V 0.25 - 0.05A]] [[File:A2442_TPS62180_ELC180_-_SSD_corner_Side_-_diode-measurements.png|alt=A2442 TPS62180 ELC180 - SSD corner Side - diode-measurements]] Some discussion on this board - [https://boards.rossmanngroup.com/threads/a2442-820-02098-5v-0-25a-0-05a-blown-cd3217-and-tps62180-elc180.62461/ A2442 820-02098 5V 0.25A -> 0.05A Blown CD3217 and TPS62180 ELC180] __FORCETOC__ nqlsefdu0etozyb2zi72qnllwezxl94 MacBook GPU Repair 0 2654 7692 2024-09-03T21:01:06Z Inwerp 16 Inwerp moved page [[MacBook GPU Repair]] to [[Mac GPU Repair]] 7692 wikitext text/x-wiki #REDIRECT [[Mac GPU Repair]] fd258ny116zewa8qdpqofz1pzn3mspr MacBook LCD Screen Compatibility 0 8 7104 7103 2024-05-06T13:20:56Z TenkaiSp 1136 /* LCD cable compatibility */ 7104 wikitext text/x-wiki ==EEE codes== To determine the original model of a screen use the EEE code. Look for this code under the 2D barcode on LVDS or right beside it. An EEE code is a model number for the screen. Some model numbers are officially interchangeable, some are not. Some work or work partially regardless. [[File:EEECODE.jpg|alt=|center|thumb|500x500px]] ==MacBook Air== 2010-2017 Airs have compatible LCDs 11 and 13 inch can be swapped for testing purposes.<br> 2013-2017 Airs are fully compatible.<br> 2010-2011 11" Airs have a shorter WIFI cable. 2012 is usable on 2010-2012.<br> MacBook Air EEE codes: {| class="wikitable" |MacBook Air (13-inch, 2017) |DN4R, DR2J, DYF4, F443, F444 |} ==MacBook Pro== ===13"=== *2009-2010 screen assemblies are fully compatible. *2009-2012 LCDs are compatible but the wifi and camera connector is different for 2009-2010 than for 2011-2012, so they can only be used interchangeably for display purposes exclusively. *2011-2012 screen assemblies are fully compatible, but the LVDS connector is slightly different and needs to be modified or replaced. See below. (The 2012 LVDS can plug in fine to a 2011 - But not the other way around)<br> ===15"=== *Late 2008 - Early 2009 screen assemblies are fully compatible, but only with each other. They have a different LCD that is not compatible with the later models. *Mid-2009 - 2012 LCDs are compatible but the wifi and camera connector is different for 2009 than for 2010-2012, so 2009 assemblies can only be used interchangeably for display purposes exclusively. *2010-2012 display assemblies are fully compatible, but the LVDS connector is slightly different for the 2012 units and so it would need to be modified or replaced if you're using a 2010 or 2011 screen assembly with a 2012 logic board, or vice versa. See below. Also, the 2010 screen assemblies only have two wifi antenna lugs built-in and the camera cable is shorter than what is ideal for connecting to a 2011 or 2012 logic board so you may have to get creative with your routing or trim down the subwoofer assembly plastic to make room for the cable to cut a corner. If you expose the internal acoustic chamber on the subwoofer assembly, it can be resealed easily with hot glue. <br />1<br /> ===17"=== 15 and 17 inch screens can not be swapped for testing purposes.<br> <br /> ===Connector Modification=== To use a 2010-2011 LCD with a 2012 logic board, you'll need to either replace the LVDS connector on the logic board with one compatible with the 2010-2011 era screen, or modify the display connector by trimming some plastic off of the edges. Below are examples of a 2011 15in screen assembly being modified to work with a 2012 logic board:<gallery> File:1 - Unmodded 2010-2011 A1286 LVDS Plug.jpg|Here's the LVDS plug from a 2010 or 2011 screen assembly in its original state. File:2 - Unmodded 2010-2011 LVDS vs 2012 LVDS Port.jpg|Here's you can see that the 2010 and 2011 plug will not fit into a 2012 LVDS socket. '''DO NOT FORCE THE CONNECTION IN OR YOU CAN CREATE SHORTS AND DAMAGE THE SOCKET, LOGIC BOARD, OR SCREEN!''' File:3 - Unmodded Top Closeup.jpg|Closeup of the unmodified LVDS File:7 - Target for Cutting.jpg|You'll be removing this area with your flush cutters. The edge of the cutters should be right up against the edge of the little divot in the metal. File:4 - Post-Mod Top Closeup.jpg|Here's what it looks like after being cut. You can see that the metal bends down. Precision here isn't of the UTMOST importance as long as it's properly aligned when it's plugged in. File:5 - Post-Mod Bottom Closeup.jpg|Here's the bottom edge of that same plug post-modification. File:6 - Post-Mod Fit in 2012 LVDS Port.jpg|And here you can see that the plug fits into the 2012 socket. </gallery> ===='''TWO FINAL NOTES:'''==== #'''BE SURE TO CHECK FOR SHORTS AFTER YOU'VE INSERTED THE MODIFIED PLUG INTO THE SOCKET!''' You don't want your backlight voltage shunted straight to ground! #You will likely need to remove the little clip that secures the plug into the socket as part of this mod. Two dots of hot glue behind the plug will work perfectly to secure the plug in place, and hot glue can be removed cleanly from whatever surface it's bonded to with isopropyl alcohol. ====A2141 MacBook Pro 16" cable==== there is pinout difference between 820-001700 and all other logicboards(check pins 14 and 16). A2141 cable wont work on any other Macbook since backlight PWM lines are not present <br /> ==MacBook Pro Retina== All Retina screen cables with hinges are compatible. A1425 2012L 13" Retina could be tested with 13" or 15" 2013E Display. Unfortunately, 2013/13" Display has different Camera connector. <br> For testing 13 and 15 inch screens of the same generation are compatible<br> 2012-E2013 are fully compatible<br> L2013-2014 are fully compatible <br> 2015 is unique MacBook Pro Retina EEE codes: {| class="wikitable" |MacBook Pro (Retina, 13-inch, Mid 2014) |FD46, FF0H, FF0J, FF0K, FF14, FFJ4, FGFY, FGG0, FY1C, FY1F, FY1G, FY1H |- |MacBook Pro (Retina, 13-inch, Mid 2015) |FW3D, FW3F, FW3G, FW3H, G1FQ, G1FR, G1FT, G1FV |- |MacBook Pro (Retina, 15-inch, Mid 2014) |FD4N, FF0N, FF0P, FF0Q, FF20, FFG2, FFJ5, FFJ6, FY94, FY95, FY96, FY97 |- |MacBook Pro (Retina, 15-inch, Mid 2015) |FWKN, FWKP, FWKQ, FWKR, GCQ0, GCQ1, GCQ2, GCQ3 |}<br /> ==MacBook Retina USB C== 2015-2017 are all compatible, with the exception of the sleep sensor. The 2015 has a single magnet for the sleep sensor while the 2016-2017 has two. Sleep and wake functionality could have issues but is untested. MacBook Retina EEE codes: {| class="wikitable" |MacBook (Retina, 12-inch, 2015) |FNQ5, FNQ6, FW19, FW1C, GP5H, GP5J |- |MacBook (Retina, 12-inch, 2016) |GP5H,GP5J,GP5K,GP5L |- |MacBook (Retina, 12-inch, 2017) |GP5H, GP5J |} <br /> ==MacBook Air USB C== 2018-2020 13" Airs are fully compatible. (A1932-A2179) Correction: 2018 Macbook Air ALS is NOT compatible with 2019-2020 screen. This will cause keyboard backlight malfunction and boot/wakeup issues. Macbook Air 2019 with Truetone will have no keyboard backlight / Als sensor with 2018 No TT screen EVEN if EMC number is the same. Backlight works on EFI login screen but shuts off once OS loads. 2020 MacBook Air M1 (A2337) is NOT compatible with models above 2020 MacBook Air M1 (A2337) will work on A2338. LCD and camera tested.<br> 2021 MacBook Air M1 is NOT compatible with models above. A2338 M2 2022 screen compatibility, M1 A2338 screen everything works with the exception of true tone not showing up as an option. Brightness, camera, keyboard backlight, screen brightness/auto brightness all work fine. <br />MacBook Air USB C EEE codes: {| class="wikitable" |MacBook Air (Retina, 13-inch, 2018, Intel, A1932 |HXMY, HXN0*, LM1M*, LM43 |- |MacBook Air (Retina, 13-inch, 2020, Intel, A2179) |PX4T, PX4V, JQLX, JQM0 |- |MacBook Air (Retina, 13-inch, 2020, M1, A2337) |NR8D, NR89, P3WW, P3WV |} ====LCD cable compatibility==== 2020 MacBook Air M1 (A2337) LCD cable (P/N 821-02721-A) and 2020 Macbook Air Intel (A2179) LCD cable (P/N 821-01552-A) are '''not''' compatible. Cables look identical and are sometimes incorrectly listed as interchangeable. ==MacBook Pro USB C== You can use A1708 screen to test A1990 and A1707 boards. There shuould be at least apple logo + Backlight. 2016-2017 TB and Fn key MacBook Pro screens are fully compatible. 2018-2019 TB MacBook Pro screens are fully compatible. 2017 Screen will work on 2018 model but it will glitch during boot + no truetone. can be used for testing/data recovery purposes. 2017 A1708 Screen will work on A1989 with a glitch on boot. Camera functionality works, but no ALS/Truetone (of course). Also, screen seems to be lit only by 60% max when booted to OS (Mainly because of missing ALS) 2018 A1989 820-00850 screen can be tested with A1708 (820-00875) logic boards. Backlight and image confirmed working. Camera and ALS not working. Sleep not tested. 2020 A2289 / 820-01987 screen can be tested with A1708 (2016/17) logic board. Confirmed that screen brightness functions and ALS works, but the camera is not recognized 2020 Intel A2251 / A2289 Screen Assemblies are fully compatible with 2018 A1989 and 2019 A2159 by several reports. The blown 5V Camera Line on LVDS Cable and 5V Camera Coil on the 2018 A1989 logic board were most likely caused by 2016/2017 A1706/A1708 Screen Assembly. 2020 A2338 / 820-02020 LCD is wired differently and will not work on intel boards. 2020 A2338 / 820-02020 LCD will work on MacBook Air A2337 (not sure about the camera though, which I haven't tested) 2019-2020 A2141 Macbook Pro 16" display should work on all similar logicboards but you need to use A1707 EDP cable since 820-001700 only uses i2c line to control the backlight, A1707 uses PWM as secondary control line. A2141 display confirmed working on A1707 motherboard -Francis. [[File:Edp_pinout.png|none|thumb]] MacBook Pro USB C EEE codes: {| class="wikitable" |MacBook Pro (Retina, 13-inch, 2017, 2TBT, Intel, A1708) |GJTF, GJTG, H19V, H19W, HG9J, HG9K, HG9L, HG9M, HKFD, HLG7, J6N2, J6N3, KVG1, KVG2 |- |MacBook Pro (Retina, 13-inch, 2016, 2TBT, Intel, A1708) |GJTF, GJTG, H19V, H19W, H9T5, H9T6, HG9J, HG9K, HG9L, HG9M, J6N2, J6N3 |- |MacBook Pro (Retina, 13-inch, 2017, 4TBT, Intel, A1706) |GJTF, GJTG, H19V, H19W, HG9J, HG9K, HG9L, HG9M, HKFD, HLG7, J6N2, J6N3, KVG1, KVG2 |- |MacBook Pro (Retina, 13-inch, 2016, 4TBT, Intel, A1706) |GJTF, GJTG, H19V, H19W, HG9J, HG9K, HG9L, HG9M, HKFD, HLG7, J6N2, J6N3, KVG1, KVG2 |- |MacBook Pro (Retina, 13-inch, 2020, 4TBT, Intel, A2251) |J462, J463, J465, J466, J6W9, J6WC, J6WD, J6WF, J6WG, J6WH, MJFX, MJFY, PPCR, PXGR, PXGT, PXGV |- |MacBook Pro (Retina, 13-inch, 2020, 2TBT, M1, A2338) |NTJH, NTJJ, NTJF |} {| class="wikitable" |+ |MacBook Pro (Retina, 16-inch, 2019, 4TBT, Intel, A2141) |D07CL |} <br> ==Connectors== 2009-2011 MacBook Pro 13" LVDS connectors are compatible. Part is I-Pex 20474-030E. They will work with a 2012 display but need to be forced<br> L2008-2011 MacBook Pro 15" and 17" LVDS connectors are compatible. Part is I-Pex 20474-040E. They will work with a 2012 display but need to be forced<br> 2012 MacBook Pro 13": Part is I-Pex 20525-130E. Pin-out is the same as on the 2011 model.<br> 2012 MacBook Pro 15": Part is I-Pex 20525-140E. Pin-out is the same as on the 2011 model.<br><br> The following use the same connector (can be purchased [https://store.rossmanngroup.com/index.php/l3-macbook-pro-air-and-retina-lvds-lcd-connector.html here]):<br> 2010-2017 MacBook Airs, both 11" and 13". Part is I-Pex 20525-130E. <br> 2012-2015 MacBook Pro, both 13" and 15" including the non Retina models. Part is I-Pex 20525-130E. <br> iPad 2 [[Category:Mac]] [[Category:MacBook]] fvmo5wc67qw575caeiq9kjk34d32e3c MacBook NAND List 0 2218 7654 7608 2024-08-23T10:21:11Z Danila17 945 /* 512 GB total capacity (Hynix) */ 7654 wikitext text/x-wiki Hello all! Below is a list of different NANDs on MacBooks ==T2 Nand support== T2 Chip with 1GB T2 RAM Can Support for logic board with 128GB , 256GB , 500GB of Storage T2 Chip with 2GB T2 RAM Can Support for logic board with 128GB , 256GB , 500GB , 1TB , 2TB , 4TB , 8TB of Storage Known types of RAM + APL number: *APL1027 (T2 itself) *339S00467 - 2GB *339S00533 - 1GB Known Ram codes(apl code does not match one in BOM table, so there might be other variants): -h9hknnn8kumuvr - 1GB Hynix Chip. -D9LVN - Micron 1GB - h9hkNNNBRUMUVR - Hynix 2GB ==MacBook Pro== ===MacBook Pro 2018 (A1990 15")=== ====256GB (Toshiba)==== {| class="wikitable" |U8600 |TSB4227(128G) |- |U8700 |TSB4226(64G) |- |U8800 |TSB4226(64G) |- |U8900 |TSB4226(64G) |} ===MacBook Pro 2019 (A1990 15")=== ====512GB (Toshiba) (Black version is TSB3227)==== {| class="wikitable" |U8600 |TSB4228(128G) |- |U8700 |TSB4228(128G) |- |U8800 |TSB4227(128G) |- |U8900 |TSB4227(128G) |} ===MacBook Pro 2019 (A2141 16")=== ====512GB (Toshiba)==== {| class="wikitable" |U8600 |TSB4227(128G) |- |U9100 |TSB4227(128G) |- |U9200 |TSB4227(128G) |- |U9300 |TSB4227(128G) |- |U9400 |TSB4227(128G) |} ====1Tb (Toshiba)==== {| class="wikitable" |U8600 |TSB4228(192G) |- |U9100 |TSB4228(192G) |- |U9200 |TSB4228(192G) |- |U9300 |TSB4228(192G) |- |U9400 |TSB4228(192G) |} ====2TB (Toshiba)==== {| class="wikitable" |U8600 |TSB4232(320G) |- |U8700 |TSB4232(320G) |- |U8800 |TSB4228(128G) |- |U9100 |TSB4232(320G) |- |U9200 |TSB4232(320G) |- |U9300 |TSB4232(320G) |- |U9400 |TSB4232(320G) |} ===MacBook Pro 2019 (A2159 13")=== ===='''128GB (Hynix)'''==== {| class="wikitable" |U8600 |H23QFG82D6ADQ(64G) |- |U8700 |H23QFG82D6ADQ(64G) |} ====256GB (Hynix)==== {| class="wikitable" |U8600 |H23Q1T83G6ADQ(128G) |- |U8700 |H23QFG82D6ADQ(64G) |- |U8800 |H23QFG82D6ADQ(64G) |- |U8900 |H23QFG82D6ADQ(64G) |} ====256GB (Toshiba)==== {| class="wikitable" |U8600 |TSB4227(128G) |- |U8700 |TSB4226(64G) |- |U8800 |TSB4226(64G) |- |U8900 |TSB4226(64G) |} ====512GB (SanDisk)==== {| class="wikitable" |U8600 |SDSBFBGI6(128G) |- |U8700 |SDSBFBGI6(128G) |- |U8800 |SDSBFBGI4(128G) |- |U8900 |SDSBFBGI4(128G) |} ====512GB (Toshiba)==== {| class="wikitable" |U8600 |TSB4228(128G) |- |U8700 |TSB4228(128G) |- |U8800 |TSB4227(128G) |- |U8900 |TSB4227(128G) |} === MacBook Pro 2020 (A2251 13" 4TB) === ==== 1TB (Hynix) ==== {| class="wikitable" |U8600 |H23Q2T84K6AEQ (256G) |- |U8700 |H23Q2T84K6AEQ (256G) |- |U8800 |H23Q2T84K6AEQ (256G) |- |U8900 |H23Q2T84K6AEQ (256G) |} ==MacBook Air== ===MacBook Air 2018 (A1932 13")=== ====128GB (Hynix)==== {| class="wikitable" |U8600 |H23QFG82D6ADQ(64G) |- |U8700 |H23QFG82D6ADQ(64G) |} ====128GB (Toshiba)==== {| class="wikitable" |U8600 |TSB4226(64G) |- |U8700 |TSB4226(64G) |} ====256GB (Hynix)==== {| class="wikitable" |U8600 |H23Q1T83G6ADQ(128G) |- |U8700 |H23Q1T83G6ADQ(128G) |} ====256GB (Toshiba)==== {| class="wikitable" |U8600 |TSB4227(128G) |- |U8700 |TSB4227(128G) |} ====512GB (Toshiba)==== {| class="wikitable" |U8600 |TSB4232(256G) |- |U8700 |TSB4229(256G) |} ==MacBooks M1 NANDs replacement== ===Information about NAND replacement on MacBook M1=== On macbooks with an M1 processor and higher, the same principle applies as on T2 devices, namely, in order to replace the SSD, it is necessary to transfer a set of memory chips from the donor observing the positional numbers on the board. At the time of writing this message, the JC P13 programmer does not support reading and writing configurations for M1 laptops, so the only way is to install chips from a donor. ===MacBooks Pro / Air M1 (A2337 / A2338) NANDs configurations=== ====256 GB total capacity (Toshiba)==== {| class="wikitable" |UN000 |KICM232 (128GB) |- |UN100 |KICM225 (128GB) |} '''256 GB total capacity (Hynix)''' {| class="wikitable" |UN000 |H23B1T82D7AEQ(128GB) |- |UN100 |H23B1T82D7AEQ(128GB |} ====512 GB total capacity (Toshiba)==== {| class="wikitable" |UN000 |KICM233 (256GB) |- |UN100 |KICM227 (256GB) |} ====512 GB total capacity (Hynix)==== {| class="wikitable" |UN000 |H23B2588H7AEQ-BC (256GB) |- |UN100 |H23B2T83G7AEQ-BC (256GB) |} ====1 TB total capacity (Toshiba)==== {| class="wikitable" |UN000 |KICM229 (512GB) |- |UN100 |KICM229 (512GB) |} ====1 TB total capacity (SanDisk)==== {| class="wikitable" |UN000 |SDREGJHIH (512GB) |- |UN100 |SDREGJHIH (512GB) |} ====2 TB total capacity (Toshiba)==== {| class="wikitable" |UN000 |KICM223R (1TB) |- |UN100 |KICM223R (1TB) |} ====2 TB total capacity (Hynix)==== {| class="wikitable" |UN000 |H23B8T85K7AFJ-BC(1TB) |- |UN100 |H23B8T85K7AFJ-BC(1TB) |} == MacBooks Pro M1 (A2442-A2485) NANDs replacement == == MacBooks M2 NANDs replacement == === MacBooks Air M2 (A2681) NANDs configurations === ==== 256 GB total capacity (Toshiba) ==== {| class="wikitable" |UN000 |KICM5224 (256GB) |} 3kbbfdbvap705lyzoy7h1dwuqfggjl5 MacBook OEM, Aftermarket, and Knock-Off Batteries 0 1754 6773 6466 2023-03-01T17:45:26Z Inwerp 16 /* Battery diagnostic and troubleshooting */ 6773 wikitext text/x-wiki ==Batteries== ===MacBook Pro 13" A1502 2015E Model: A1582=== [[File:A1582 OEM TOP.jpg|none|thumb|860x860px|PCB Manufactured by COMPEQ, Controller BQ20Z451, board is secured with torx screws (Most knockoffs use philips)]] [[File:A1582 OEM BOTTOM.jpg|none|thumb|860x860px|Every cell has QR code and lots of numbers including unique serial number]] [[File:A1582 OEM PCB.jpg|none|thumb|860x860px|Main terminals are welded instead of being soldered, it also uses battery balancing wires and thermal couple (absent on almost all knockoff batteries). 15A fuse is clearly seen. ]] [[File:A1582 OEM TEMP.jpg|none|thumb|860x860px|Thermal cutoff device is present on every cell, thermal couple also visible in center]] <br /> ===Macbook Pro 15" A1398 2013L-2014M Model: A1494=== Original battery disassembled from untouched device. [[File:A1494_OEM_TOP.jpg|alt=|none|thumb|860x860px|Allmost all components secured with strong adhesive, gold plating]] <br /> [[File:A1494_OEM_BOTTOM.jpg|alt=|none|thumb|860x860px|Every cell marked with QR code and some sort of serial number (last line)]] [[File:A1494_OEM_PCB.jpg|alt=|none|thumb|860x860px|PCB Manufacturer is COMPEQ (Same as all Logicboards). Thermocouple present (absent on most Knock-off boards). Smartbattery controller: BQ20Z451]] [[File:A1494 OEM TEMP.jpg|none|thumb|860x860px|Every cell has HC77AY-1 Thermal Cutoff Device placed on input. ]] <br /> ===Macbook Pro 15" A1398 Early 2013 Model: A1417=== [[File:A1417 battery for A1398 adh pattern 1fixed.jpg|alt=|none|thumb|850x850px|A1417 battery for A1398 MacBook Pro Early 2013 adhesive pattern reference 1]] [[File:A1417 battery for A1398 adh pattern 2.jpg|alt=|none|thumb|850x850px|A1417 battery for A1398 MacBook Pro Early 2013 adhesive pattern reference 2, for those that have brains that work differently.]] <br /> ===Macbook Pro 13" A1706 Touch Bar 2016 Model: A1819=== Original battery disassembled from untouched device. [[File:A1819 recto.jpg|alt=|none|thumb|860x860px|A1819 recto (manufacturer : Simplo Technology (Changshu) Inc.]] [[File:A1819 recto pcb.jpg|alt=|none|thumb|860x860px|A1819 recto pcb]] [[File:A1819 verso.jpg|alt=|none|thumb|860x860px|A1819 verso]] [[File:A1819 verso pcb.jpg|alt=|none|thumb|860x860px|A1819 verso pcb (black sticker peeled off)]] [[File:A1819 verso thermalcouple.jpg|alt=|none|thumb|860x860px|A1819 verso thermalcouple (one per cell)]]<br /> ==Aftermarket Batteries== ===MacBook Pro 13" A1502 2015E Model: LMP A1582=== [[File:Macbook Pro-2015-13-A1502-A1582-front-LMP.jpg|alt=|none|thumb|860x860px|LMP is a Swiss firm, manufacturing in China. it is delivered in fancy package with glue remover and pry tool. Glue remover is toulene, not recommended. Got EC / TÜV certificates, does not even try to look like OEM-Apple battery. AHT Test passes with no hardware issues found, system information reveals same serialnumbr as on sticker. ]] [[File:Macbook Pro-2015-13-A1502-A1582-back.jpg|alt=|none|thumb|860x860px|Back side of the board. Note much more advanced design compared to regular knock-offs. Thermal pair is present and balanced charging implemented. Pretty suprised, instead of battery controller it actually uses ARM Microcontroller Atmel samd 10u. This board should not be considered as cheap aftermarket since it implements pretty decent charging scheme with high level of control and cell balancing capability. Quite expensive 300LSE adhesive is probably not the best choice, so i would rather replace it with floam before installing.]] [[File:Macbook Pro-2015-13-A1502-A1582-front2.jpg|alt=|none|thumb|860x860px|Exposed cell packs, completely blank front side of the PCB]] ===Apple MacBook Pro 15 A1398 (Late 2013, Mid 2014) Model: LMP A1582=== [[File:LMP A1494 Front.jpg|none|thumb|860x860px|Pretty solid battery. Full balance-charging implemented, temperature sensor could be found in the middle of the battery. Compared to Apple betterie, No thermal-protection devices on individual cells.]] [[File:LMP A1494 Board.jpg|none|thumb|860x860px|Some basic liquid protection like on Apple batteries. Slowburn fuse, thermal pair. Controller is the same Atmel SAMD10U]] ===Battery diagnostic and troubleshooting=== This is an old article. New one is here: [[MacBook battery diagnostics and repair]] Clean AHT does not necessarily mean that battery is fine. The most basic thing you should expect to measure is output voltage as soon as SYSTEM_DETECT_L is pulled low. On many modern boards it is pulled down by mosfet which means it means to have ppbus BEFORE battery will be activated on (after you plug the charger it will pull the switch down and activate the battery). If you do not have the charger (say, cd3215 is blown and you have to recover data urgently) you can find this circuit on your board and simply pull this line to ground for a short period of time. This will enable battery and allow you to safely recover the data before proceeding to fix cd3215/17 circuit. The second thing to expect is communication. if battery outputs voltage, it SHOULD communicate. Many macbooks like A1398 15" DG need good battery to fully boot and properly work. MacBook Pro 16" will throttle with a bad battery and will blow full fan if no battery is present (however it will fully boot). To diagnose Smartbattery controller you need special equipment. There are few devices to reprogram the batteries. Unfortunately it is a mixed experience since most of them are requiring subscription and also known for spying on their customers (they check how many batteries you reset, they limit you to replace SSD / CPU in your bench PC, etc). The only known tool without this kind of arrogance is MBRT /Macbook Battery Repair Tool) which is extremely hard to get in US/EU. If battery is clean and "should be working", there is still a chance that internal fuse is blown and battery will still report good condition. Personally i do not recommend recelling batteries and never plan to. LiPOL Chemistry is not a rocket science but if done unproperly - life dangerous. I am using this device purely to keep stocked batteries in a good shape + charge batteries in case of urgent data recovery. I am currently developing adapter board for all common apple connectors, so this section will be improved later. <br /> 9wp6u5toarz5pxnd7c8ikbswll269rr MacBook OEM and Knock-Off batteries 0 1880 5547 2021-02-04T11:53:12Z Inwerp 16 Inwerp moved page [[MacBook OEM and Knock-Off batteries]] to [[MacBook OEM, Aftermarket and Knock-Off batteries]]: Better page description 5547 wikitext text/x-wiki #REDIRECT [[MacBook OEM, Aftermarket and Knock-Off batteries]] 2da478ofggigea9hlqe4a2vvcg0wyfq MacBook Parts List 0 138 6885 6881 2023-07-25T09:02:21Z Zave 991 /* Parts & Compatibility */ add some part link 6885 wikitext text/x-wiki =='''Trusted Retailers'''== '''Board Components:''' [http://www.mouser.com www.mouser.com] (USA) [http://www.mouser.ca www.mouser.ca] (Canada) [http://www.digikey.com www.digikey.com] (USA) [http://www.digikey.ca www.digikey.ca] (Canada) [http://www.mobilesentrix.com www.mobilesentrix.com] (USA) [http://www.mobilesentrix.ca www.mobilesentrix.ca] (Canada) http://www.heisener.com (China) https://chipdatas.com (China) '''Parts & Complete Logic Boards:''' [http://www.protechrestore.com www.protechrestore.com] (USA) [http://www.deviceparts.com www.deviceparts.com] (China) [http://www.unionrepair.com www.unionrepair.com] (China) [http://www.onebitetechnology.ca www.onebitetechnology.ca] (Canada) =='''Stencils'''== Stencils: *General MacBook stencil kit from [https://www.aliexpress.com/item/33006894821.html?spm=a2g0o.productlist.0.0.10e34b70Cpjb4N&algo_pvid=b4cbe29d-1fc3-4039-a84c-ffed078e8896&algo_expid=b4cbe29d-1fc3-4039-a84c-ffed078e8896-2&btsid=0be3764315896326058074910ef401&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_ AliExpress] (please notice there are five pieces) *Stencil kit for CD3215 and CD3217 from [https://www.aliexpress.com/item/4001335999851.html Aliexpress] =='''Parts & Compatibility'''== MacBook Air 2018-2020 Themal Grease part number: x-23-7868-2d GPU/MCP Capacitor: *A1286 2009-2010 A1297 2009-2010 [https://www.mouser.com/ProductDetail/667-2TPE330MADGB 2TPE330MADGB] <-- This is the exact [https://caps.wiki/wiki/Main_Page capacitor], however I recommend the larger Polymer Cap below. I'll leave this up for discussion. *Replace with [https://www.mouser.com/ProductDetail/667-EEF-LX0D331R EEF-LX0D331R](These are non-tantalum and have 3 pads instead of 2 so you don't have to scrape into the board) Backlight drivers: *A1466 2013-2017: [https://www.mouser.com/ProductDetail/Texas-Instruments/LP8550TLX-A-NOPB?qs=sGAEpiMZZMsE420DPIasPp5tEEXBF6h%252BuFbkYiwyIS73ZkAnA%2Fkmuw%3D%3D LP8550TLX] Subsitute: [https://www.mouser.com/ProductDetail/Texas-Instruments/LP8550TLE-NOPB?qs=sGAEpiMZZMsE420DPIasPlogyTiw5LxrZVnzodlyt%252BM%3D LP8550TLE] or [https://www.digikey.com/product-detail/en/texas-instruments/LP8550TLE-NOPB/296-39068-1-ND/5143097 LP8550TLE] *A1502, A1706, A1707, A1708, A1989, A1990 [https://store.rossmanngroup.com/b4-lp8548b1sq.html LP8548B1SQ] Backlight Fuses: *Various models (32V 3A 0603): [https://www.mouser.com/ProductDetail/693-3412.0121.22 3412.0121.22] & [https://www.mouser.com/ProductDetail/576-0467003.NRHF 0467003.NRHF] CPU MOSFETs: *A1398 L2013-2015 IG: [https://www.mouser.com/ProductDetail/512-FDMF6708N FDMF6708N] or [https://www.mouser.fr/ProductDetail/512-FDMF3030/ FDMF3030] replaces FDMF6808N *A1466/A1465 2013-2017: High:[https://www.mouser.com/ProductDetail/Vishay-Siliconix/SISA18DN-T1-GE3?qs=%2Fha2pyFaduhTwVi4%2FNVcCTxbqBwveEaZWrbfNHiQwSw%3D SISA18DN] Low: [https://www.mouser.com/ProductDetail/Vishay-Semiconductors/SISHA12ADN-T1-GE3?qs=UkDUCjYnTB11vuPTlzSINA%3D%3D SISA12DN] Temp monitoring sensor *Various models [https://www.digikey.com/product-detail/en/microchip-technology/EMC1704-2-AP-TR/EMC1704-2-AP-CT-ND/4490160 EMC1704] PP3V3_G3H/PP3V42 Buck Converter: *A1707: [https://www.mouser.com/ProductDetail/700-MAX77596ETBB%2b MAX77596ETBB] & [https://www.mouser.com/ProductDetail/700-MAX77596ETBC%2b MAX77596ETBC+] PP3V3 & 5V Buck Converter *U9850 6142E can be replaced with pi3vdp *Various models: [https://www.mouser.com/ProductDetail/595-TPS22924BYZZR TPS22924BYZZR] *Older MacBook Pros: U7200 U7201 [https://www.mouser.com/ProductDetail/595-TPS51125RGER TPS51125RGER] *A1708: [https://chipdatas.com/item/8512212-TPS2052BDR.html TPS51980A] ([https://chipdatas.com/item/2hdgb8bvh-TPS51220.html TPS51220] closest Ti public available part [https://www.ti.com/lit/ds/symlink/tps51220.pdf?ts=1593200325335&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FTPS51220 data sheet]) Trackad IPD Flex Connector: *A1466/A1465 2013-2017: TF13BS-20S-0.4SH Source: [https://beetstech.com/product/trackpad-connector-20-pin US] [https://www.aliexpress.com/item/4000134694943.html?spm=a2g0o.productlist.0.0.35b35435K2Otze&algo_pvid=422ee6cb-1cd2-49ff-8fae-ae019aac8008&algo_expid=422ee6cb-1cd2-49ff-8fae-ae019aac8008-2&btsid=716fe582-a800-41fc-8559-0f99d03feae8&ws_ab_test=searchweb0_0,searchweb201602_5,searchweb201603_53 China] V Sync Flex Cable: *A1311 A1312: [https://www.aliexpress.com/item/1998618174.html?spm=a2g0s.9042311.0.0.57024c4d6R0FdH *Need part number and US source] [https://www.mouser.com/ProductDetail/538-15267-0721 Need to test 15267-0721] *A1312 2009: MFG 593-1049-A or APN 922-9161. May have to get off of eBay Battery ISL: *A1706 A1707 A1708: [https://store.rossmanngroup.com/index.php/x5-isl9239.html ISL9239] (Custom chip) *MBP 2010-2015 MBA 2010-2017 U7000 U7100 [https://store.rossmanngroup.com/index.php/t8-isl6259ahrtz.html ISL6259] PPBUS MOSFETs: *A1466/A1465 2013-2017: [https://www.mouser.com/ProductDetail/863-NTMFD4902NFT1G NTMFD4902NFT1G] *A1278/A1286 2012: High/Low: [https://www.mouser.com/ProductDetail/Renesas-Electronics/RJK03M5DNS-00J5?qs=%2Fha2pyFaduhWHsysA2gioi05ld94IUfqj5XvvZJXmV%2FAjt%2FDRXuJ1g%3D%3D RJK03M5DNS] (Verify) USB C Port *A1706 A1707: [https://store.rossmanngroup.com/index.php/za2-cd3215c00.html CD3215C00] (Custom chip) *USB-C [https://aliexpress.com/item/1005002460226377.html Board side connector] (official name NOVASTACK®35-HDP) ISL95870HRUZ-T U8110/U7710 on 820-01598/A2159 and 820-01987/A2289 for example [https://au.mouser.com/ProductDetail/Renesas-Intersil/ISL95870HRUZ-T?qs=dAsayXGOMrtdrjLaFukZjg== Mouser] [https://www.digikey.com/en/products/detail/renesas-electronics-america-inc/ISL95870HRUZ-T/2551659 Digikey] 2011 A1286 A1297 dosdude1 DeMUX Tools: *GMUX Header [https://www.digikey.com/product-detail/en/0781715006/WM5408CT-ND/2769882?utm_medium=email&utm_source=oce&utm_campaign=2988_OCE19RT&utm_content=productdetail_US&utm_cid=519125&so=62184659&mkt_tok=eyJpIjoiWldFeE56RmpNV0ZsTVdSbSIsInQiOiJGWGsyaFBNTjRHQU00R2pU 0781715006] *Lattice to GMUX Wire Housing [https://www.mouser.com/ProductDetail/538-36920-0602 36920-0602] *Programmer [https://www.ebay.com/itm/163044311540 Lattice HW-USBN-2A ICSP FPGA] *JTAG KIT (Alternative) 1. [https://www.mouser.de/ProductDetail/538-78171-5006 Molex connector] PN: 78171-5006 2. [https://www.mouser.de/ProductDetail/538-78172-5006 Molex connector (cable side)] PN: 78172-5006 3. [https://www.mouser.de/ProductDetail/538-79758-1010 Wires] PN: 79758-1010 *[https://aliexpress.com/item/4001238375263.html?af=843361&utm_campaign=843361&aff_platform=portals-tool&utm_medium=cpa&dp=3620ec0b19e66caf6cb2032b4b11c774&aff_fcid=50c941829a354024ba568a6721e46420-1617222034437-05922-_ePNSNV&cv=47843&aff_fsk=_ePNSNV&mall_affr=pr3&sk=_ePNSNV&aff_trace_key=50c941829a354024ba568a6721e46420-1617222034437-05922-_ePNSNV&terminal_id=4f535b2aee21440d88514f606261a6ee&tmLog=new_Detail&utm_source=admitad&utm_content=47843 pogo pins] + [https://oshpark.com/shared_projects/x8CMvEG2 board] EMI shielding tape (need to verify which is closest to OEM): *[https://hollandshielding.com/Mu-ferro-tape-foil holandshieldshielding] *[https://www.digikey.com/catalog/en/partgroup/86750-conductive-fabric-tape/49522 DigiKey] *[https://www.amazon.com/Conductive-Fabric-Adhesive-Laptop-Shielding/dp/B019OTRL5Y Amazon] *[https://www.3m.com/3M/en_US/company-us/all-3m-products/~/3M-EMI-Shielding-Fabric-Tape-CN-4490/?N=5002385+3293415075&rt=rud 3M (Obsolete)] *[https://www.mouser.se/ProductDetail/3M-Electronic-Specialty/AL-36FR?qs=sGAEpiMZZMtQwYqzsFSgXLiXf0JbOX2MTP63nOiCDLU%3D 3M (test this)] Display connectors: *2012+ 30 pin I-PEX 20525-030E-01S (must contact to order) Keyboard FPC Cable Connector: *MB/MBP A1342 A1278 A1286 A1297 [https://www.ebay.com/itm/10pcs-Keyboard-FPC-Cable-Connector-For-MacBook-Pro-A1342-A1278-A1286-A1297-JIsz/202867576968?hash=item2f3bd99088:g:Dh8AAOSwnAJeBbKK ebay US] [https://www.ebay.com.au/itm/10pcs-Keyboard-FPC-Cable-Connector-For-MacBook-Pro-A1342-A1278-A1286-A1297-JIsz/202867576968?_trkparms=aid%3D1110006%26algo%3DHOMESPLICE.SIM%26ao%3D1%26asc%3D20131003132420%26meid%3D0c54979636704ce199147cefa1bcd17d%26pid%3D100005%26rk%3D5%26rkt%3D12%26mehot%3Dpf%26sd%3D330972574623%26itm%3D202867576968%26pmt%3D1%26noa%3D0%26pg%3D2047675%26algv%3DSimplAMLv5PairwiseWeb%26brand%3DUnbranded&_trksid=p2047675.c100005.m1851 eBay AU] Keyboard Backlight Connector *A1502 and a variety of other boards see [https://imgur.com/a/QC0pKxk here] Verified on 820-3476 (J4915) MPN - [https://au.mouser.com/ProductDetail/656-AA07A-S010VA1R6 WP7A-S010VA1-R6000] Note this is a 10 position socket. I/O to Logic Board Connector *MacBook Air 11" A1465 and 13" A1466 [https://beetstech.com/product/io-to-logic-board-connector-48-pin J4700 and J9500] 820-00840 Q3100 FDPC 4044 *[https://www.digikey.com.au/product-detail/en/on-semiconductor/FDPC4044/FDPC4044CT-ND/4494096?utm_adgroup=ON%20Semiconductor&utm_source=google&utm_medium=cpc&utm_campaign=Dynamic%20Search_EN_Suppliers&utm_term&productid&gclid=Cj0KCQjwtZH7BRDzARIsAGjbK2YKVHWh3rYghm6ga-F-B5i5ggmqOlpdfHD-Q31V7PbNaBIz2EAz4nkaAg1SEALw_wcB&fbclid=IwAR21wJyOLUeXrKaHd077NUnmCGc9oaxO5w-dj30uQeULSiqeLNyGMV7whho N channel MOSFET] Extension cables *[https://www.aliexpress.com/item/1005001860231489.html iPex eDP (USB C models) display test extension] (works as an extension cable without removing from chassey) *[https://www.aliexpress.com/item/32910194485.html?spm=a2g0o.productlist.0.0.590a3e31rbKSFs&algo_pvid=f840fded-838c-4301-ace7-aff94df0406d&algo_expid=f840fded-838c-4301-ace7-aff94df0406d-0&btsid=0bb0623416017602855437582e4266&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_ I-PEX 30 pin] Works with 2012 A1278, A1369, A1370, A1398, A1425 A1465, A1466, A1502# WIFI Antenna cable *[https://www.digikey.com/product-detail/de/cinch-connectivity-solutions-johnson/415-0088-500/J952-ND/1305571 Hirose 50cm HF cable](US) [https://www.digikey.de/product-detail/de/cinch-connectivity-solutions-johnson/415-0088-500/J952-ND/1305571 Hirose 50cm HF cable](Germany) *[https://alexnld.com/product/dc-power-jack-for-macbook-pro-retina-13-inch-a1708/?gclid=Cj0KCQiA7YyCBhD_ARIsALkj54quT5Iqx9-4m5ZLlN-Ovrd_4Vi0VwCkp3lBLOO5znphYPaOhoHQ5CYaAtfEEALw_wcB USB-C charge port A1708] (soldered on) TouchID/Power button connector (Mesa) (J4900) *Board side: Molex 505066-1220 replaced by [https://www2.mouser.com/ProductDetail/538-505066-1222 Molex 505066-1222] *Button side: Molex 505070-1220 replaced by [https://www2.mouser.com/ProductDetail/538-505070-1222 Molex 505070-1222] Board side also available on [https://www.aliexpress.com/item/4001214086236.html Aliexpress] ===Keyboards "known-good parts"=== Macbook Pro 2019 16" A2141 https://www.aliexpress.com/item/4001214086236.html - looks 100% original, there is even a tape to secure fpc connector lock. Routing is 100% identical, same markings, manufacture date is laser-engraved. ===SPI Tools=== [https://aliexpress.com/item/33058068396.html? T2 SOC ROM Adapter] (search for USON8 if sold out) you need tl866 with 1.8v adapter or RT809H to programm this chip ([https://aliexpress.com/item/1005002748887534.html? mx25u3235f] for example, U4770 on 820-01700). ===Mouser / Hirose Connectors (iPhone/JTag-Like)=== How to search for connectors by local iphone suppliers or aliexpress, patterns: #Macbook connector placenumber on board. #iphone or ipad + fpc flex connector + pin number #samsung flex connector [https://www.mouser.de/Molex/Connectors/Board-to-Board-Mezzanine-Connectors/SlimStack/_/N-ay0kr?P=1z0zlewZ1yilumnZ1yzuwyz Mouser search for other "SlimStack" macbook connectors] A2179 Auidio board tonnector could be found as "44 pin iphone fpc" connector A2159 MacBook Pro 13" Touch Bar Two USB C BN 820-01598 *[[File:touchbarconnector.png|left|thumb|Hirose 34 pin connector, both Touch Bar/controller sides could be found as "iPhone X fpc LCD connector" on aliexpress]]<br />[[File:Touchbar controller board.png|left|thumb|touchbarcontrollerboard, prob. LED]]<br /> [[Category:Mac]] [[Category:MacBook]] 9m8dza5htx8afiat1ikev9lu8xqg37t MacBook Power Up Circuits 0 25 561 26 2020-02-02T11:31:12Z Piernov 10 Category Mac MacBook 561 wikitext text/x-wiki At this level, in order to discuss in greater detail, we need to make use of schematic diagrams, here we will be taking the 820-3437 MacBook Air 2013 A1466 Intel Haswell CPU logic board as an example. 1. The always-on 3.42V power rail PP3V42_G3H can be created directly from an internal battery or Magsafe charger shown as below: [[File:MacBook-power-up-1.jpg|thumb]] Battery power goes through R7006, D7005 to U7090 the power management chip. Charger power also can go through R7005, D7005 to U7090. D7005 is used to prevent the 14.5V charger voltage to be delivered directly to the battery. U7090 is a low power 300mA buck converter chip. It converts 8.4V from the battery or 14.5V from the charger to 3.42V. This power rail powers the System Management Controller (SMC). The Mac is in off mode (G3) but the SMC keeps scanning the keyboard power-on button and MagSafe connector for actions. Checkpoint 1: PP3V42_G3H can be measured at L7095 inductor (coil). 2. If you connect Magsafe2 to the Mac, the Magsafe2 will output 3V with a limited current to test the load and detect shorted circuits. If the load is 170K then 14.5V will be output to Magsafe connector. The power management chip U7000 is responsible for creating the 8.4V power rail PPBUS_G3H shown below: [[File:MacBook-power-up-2.jpg|thumb]] U7000 receives power from pin 2 CHGR_DCIN 14.5V then outputs 5.1V VDD on pin 19. VDD goes through R7101 and comes back as VDDP to power the PWM module of U7000. Charger 14.5V is divided by R7110 and R7111 as 3.81V feeding to pin 3 ACIN for voltage detection. 3.81V is above ACIN threshold 3.2V and SMC_BC_ACOK will be sent out from pin 14 to one-wire circuits. SMC will use the one-wire circuit to read code from the chip on the Magsafe connector to identify the type of charger. A green light indicates that the one-wire circuit and charger are both fine. When the pin 2 DCIN voltage is higher than pin 17 CSON battery voltage, pin 1 output AGATE 0V and R7186 is effectively shorted to ground. Charger power PPDCIN_G3H 14.5V is divided by R7185 and R7186 and 6V will be applied to the gate of Q7180 P-channel dual MOSFET pin 3. Q7180 pin 1 and 2 source voltage is 14.5V and the gate pin 3 is 6V so the MOSFET on the left will be open. 14.5V power will go through the left MOSFET and then the internal diode of the right MOSFET to reach pin 4 and 5. 0.4V drops on the internal diode and the 14.1V power will go through R7120 for current sensing. When the current reaches to 0.4A, the 8mV voltage drop on R7120 will be sent to U7000 pin 28 CSIP and pin 27 CSIN charger current sensing circuit. U7000 will output 0V CHGR_SGATE and R7181 is effectively shorted to ground. 14.1V will be divided by R7180 and R7181 and 5.4V will be applied to Q7180 gate pin 6. The MOSFET on the right will be fully open to provide high current for more circuit power up. And the 0.4V voltage drop will disappear. If over-current is detected, U7000 will pull up AGATE and SGATE to close Q7180, cutting off power from the charger. The PWM module of U7000 then starts to work. Pin 23 PHASE will check the PPBUS_G3H to make sure no short on this power rail and pin 24/21 output UGATE and LGATE to control Q7130 and create the PPBUS_G3H power rail. Pin 6 CELL is used to set the PPBUS_G3H “base” voltage. When CELL pulls up to 3.42V, the PPBUS_G3H “base” voltage is 12.22V (equal to 3-cell battery voltage). When CELL pulls down to 0V, the PPBUS_G3H “base” voltage is 8.1V (equals to 2-cell battery voltage). When CELL opens to float, the PPBUS_G3H “base” voltage is 4.05V (equals to 1-cell battery voltage). PPBUS_G3H “base” voltage is 8.1V for this logic board. [[Category:Mac]] [[Category:MacBook]] aflq6em27hp1n01owwfjnsdvgc0pzwm MacBook Pro Diode Measurements 0 452 1028 2020-04-07T18:09:40Z Chrisb 1 Chrisb moved page [[MacBook Pro Diode Measurements]] to [[MacBook Diode Measurements]]: Include MacBooks as well as MacBook Pros 1028 wikitext text/x-wiki #REDIRECT [[MacBook Diode Measurements]] 5auwvr5t2kfimcrr252l54ibx3d4aay MacBook Pro Pictures 0 1696 7035 5997 2023-12-25T22:23:46Z Heinrich1129 1064 /* MacBook Pro 15" Retina L2013 IG (820-3662) */ 7035 wikitext text/x-wiki ==MacBook Pro 15" 2010 (820-2850)== [[File:820-2850 top.jpg|900px]] [[File:820-2850 bottom.jpg|900px]] '''OpenBoardView Background Image configuration''' <nowiki> TopImageFile = 820-2850_top.jpg TopImageOffsetX = -400 TopImageOffsetY = -91 TopImageScalingX = 2.250000 TopImageScalingY = 2.250000 TopImageMirrorX = false TopImageMirrorY = false TopImageTransparency = 0.000000 BottomImageFile = 820-2850_bottom.jpg BottomImageOffsetX = -220 BottomImageOffsetY = -9 BottomImageScalingX = 2.200000 BottomImageScalingY = 2.190000 BottomImageMirrorX = true BottomImageMirrorY = false BottomImageTransparency = 0.000000</nowiki> ==MacBook Pro 13" Unibody 2012 (820-3115)== [[File:820-3115 top.jpg|900px]] [[File:820-3115 bottom.jpg|900px]] ==MacBook Pro 13" Retina L2013 8GB/16GB (820-3476)== [[File:820-3476 top.jpg|900px]] [[File:820-3476 bottom.jpg|900px]] '''OpenBoardView Background Image configuration''' <nowiki> TopImageOffsetX = -250 TopImageOffsetY = -43 TopImageScalingX = 2.133000 TopImageScalingY = 2.140000 TopImageMirrorX = false TopImageMirrorY = false TopImageTransparency = 0.000000 BottomImageFile = 820-3476_top.jpg BottomImageOffsetX = -140 BottomImageOffsetY = -10 BottomImageScalingX = 2.140000 BottomImageScalingY = 2.120000 BottomImageMirrorX = false BottomImageMirrorY = true BottomImageTransparency = 0.000000 TopImageFile = 820-3476_bottom.jpg</nowiki> ==[[MacBook]] Pro 15" Retina L2013 IG (820-3662)== [[File:820-3662 top.jpg|900px]] [[File:820-3662 bottom.jpg|900px]] ==MacBook Pro 15" Retina L2013 DG (820-3787)== [[File:820-3787 top.jpg|900px]] [[File:820-3787 bottom.jpg|900px]] ==MacBook Pro 15" Touch Bar 2016 (820-00281)== [[File:00281 recto composite v2.jpg|600px]]<br> [[File:00281 recto low res.jpg|300px]]<br> [[File:00281 verso composite v2.jpg|600px]]<br> [[File:00281 verso low res.jpg|300px]]<br> Note : low res pictures for comparison in case composite image is not accurate. '''OpenBoardView Background Image configuration''' <nowiki> TopImageFile = 00281_verso_composite_v2.jpg TopImageOffsetX = -305 TopImageOffsetY = -424 TopImageScalingX = 2.350000 TopImageScalingY = 2.345000 TopImageMirrorX = false TopImageMirrorY = false TopImageTransparency = 0.000000 BottomImageFile = 00281_recto_composite_v2.jpg BottomImageOffsetX = -204 BottomImageOffsetY = -392 BottomImageScalingX = 2.310000 BottomImageScalingY = 2.310000 BottomImageMirrorX = true BottomImageMirrorY = false BottomImageTransparency = 0.000000</nowiki> ==MacBook Pro 13" Touch Bar 2017 (Four thunderbolt 3, 820-00923)== [[File:00923 recto composite.jpg|900px]]<br> [[File:00923 verso composite.jpg|900px]]<br> '''OpenBoardView Background Image configuration''' <nowiki> TopImageFile = 00923_verso_composite.jpg TopImageOffsetX = -429 TopImageOffsetY = -606 TopImageScalingX = 2.084500 TopImageScalingY = 2.080000 TopImageMirrorX = false TopImageMirrorY = false TopImageTransparency = 0.000000 BottomImageFile = 00923_recto_composite.jpg BottomImageOffsetX = -336 BottomImageOffsetY = -280 BottomImageScalingX = 2.140000 BottomImageScalingY = 2.130000 BottomImageMirrorX = true BottomImageMirrorY = false BottomImageTransparency = 0.000000</nowiki> ==MacBook Pro 15" Touch Bar 2017 (820-00928)== [[File:00928 recto composite.jpg|900px]]<br> [[File:00928 recto low res.jpg|600px]]<br> [[File:00928 verso composite.jpg|900px]]<br> [[File:00928 verso low res.jpg|600px]]<br> Note : low res pictures for comparison in case composite image is not accurate. '''OpenBoardView Background Image configuration''' <nowiki> TopImageOffsetX = -423 TopImageOffsetY = -506 TopImageScalingX = 2.175000 TopImageScalingY = 2.205200 TopImageMirrorX = false TopImageMirrorY = false TopImageTransparency = 0.000000 BottomImageFile = 00928_recto_composite.jpg BottomImageOffsetX = -534 BottomImageOffsetY = -469 BottomImageScalingX = 2.396000 BottomImageScalingY = 2.375000 BottomImageMirrorX = true BottomImageMirrorY = false BottomImageTransparency = 0.000000 TopImageFile = 00928_verso_composite.jpg</nowiki> ==MacBook Pro (13-inch, 2019, Two Thunderbolt 3 ports) A2159 820-01598== [[File:820-001598-A Top.jpg|left|frameless|900x900px|820-001598-A Top]] <br /> [[File:820-001598-A Bottom.jpg|left|frameless|900x900px|820-001598-A Bottom]] [[File:820-01598 top brd.jpg|left|frameless|900x900px|820-01598 top for board view]] [[File:820-01598 bottom brd.jpg|left|frameless|900x900px|for board view]] <br /> [[Category:Mac]] [[Category:MacBook]] [[Category:MacBook Pro]] c4k5wtwqgjfocn7r2j8lfw5y0vycbq0 MacBook SSD Repair 0 2229 6906 6866 2023-09-07T11:59:14Z Inwerp 16 /* Tools */ 6906 wikitext text/x-wiki ==Disclaimer== This article is purely speculative, based on various facts and ideas gathered online and from random discussions in chat rooms. There might be, and obviously are, many elements I have partially or completely misunderstood. I use "most likely" in its literal sense, indicating that 30-50% of the points made here could be inaccurate. I would genuinely appreciate if someone corrects me, explaining how these processes truly work. This article is intended for repair technicians. SSD repair/replacement is not something that can be accomplished after a few hours of watching repair videos online. It requires advanced soldering equipment and the expertise of a professional repair technician. ==Little Theory== Since 2016, the 4TBT model from Apple has been using embedded SSD drives soldered on the motherboard. The first generation of such SSD drives allowed for Lifeboat access to extract data from a broken logic board if you had the rather unique "Apple Customer Data Migration Tool (CDM) Apple P/N 076-00236", which is essentially a fancy PCI-E to USB adapter. The Lifeboat connector is essentially a plug that disconnects internal power supplies and PCI-E differential pairs, allowing the external interface to read the drive itself. There is a possibility (not yet proven) of hard-wiring a standard M.2 SSD drive connector to the Lifeboat plug. If you install an M.2 2240 SSD Drive into the chassis, you can expand to 2 TB of space or whatever capacity you find on the market. Modern SSD drives consist of three components (excluding the power supply): the Controller, RAM, and NAND memory chips arranged in some sort of RAID array for performance and wear distribution. Internal firmware is stored in a service area on one of the NANDs and is somewhat similar to HDD firmware. It includes a bad block list, LBA Translator, self-monitoring logs, and so forth. To replace such a drive, you need a full set of SSD Chips as well as a controller, so you can only source it from a working donor. I've heard a few stories of people being able to use the Gumstick5 (2TBT 2016-2017 model) drive as a source, but I can't confirm this. Later in their development, Apple "removed" the Lifeboat feature by introducing the Intel-T2 hybrid architecture. This is not entirely true because they simply moved it to another place, which I will describe later. There is no longer an embedded SSD drive, but rather a monolithic SIP NAND drive which integrates the controller, DDR cache, and NAND into a single package. It operates through the same PCI-E interface and essentially stems from the iPhone/iPad architecture. In fact, these are basically the same chips; you could even use a MacBook as a donor for an iPad or iPhone. Apple uses different brands, including Toshiba and Sandisk, on different boards, but the principle remains the same. Each NAND functions as a separate device on the T2 BridgeOS level, and it is, indeed, mounted into a hardware RAID0-like volume, seen as a single internal drive to the end user. It's most likely that the T2 OS (BridgeOS) itself is stored on the volume level, just in a hidden area, which makes it impossible to restore the T2 partition if you swap NAND positions or replace them, thus disrupting the RAID array. Most likely, NANDs are preprogrammed using a pogo-pin connector after board assembly. Each board has a set of pins, allowing direct, low-level access to each NAND. ==Tools== Replacing the T2 MacBook NAND is similar to the process for the iPhone or iPad. You'll need the standard tools for underfilled chips, a stencil, and quality soldering equipment. The most crucial tool is the JC P13 NAND configuration tool, which is currently the only one available(P11 can be used if you have dumps + probably any other P13 clone could do same job if you have dumps, however it is not really clear). This tool is used to configure the NAND before soldering them onto the board. It can also serve as a reference for purchasing replacement chips (to prepare the NAND, you'll need to specify which IC and device you have). Use [[MacBook NAND List]] as a reference. More info here: https://www.youtube.com/watch?v=yR7m4aUxHcM To figure proper NAND set refer to the [[MacBook NAND List]] page. Do not forget to check your T2 memory size. ==More Theory and Practice== As mentioned earlier, the T2 acts as a RAID controller, which expects to see a configured set of SSDs in the correct order. This is precisely why you need the JC P13. It writes a sysconfig block (on iPhones/iPads, this is used to configure WIFI, SN, etc.) to the raw drive using a repository of original configuration images. You must select the number of chips, their vendor and capacity, as well as the target device, to ensure everything works as it should. After you've prepared the NANDs, you need to solder them onto the board in the correct order and perform a full DFU restore (since there will be no BridgeOS on the NAND yet, it's similar to the process you'd follow for an iPhone after a NAND upgrade). After this, you should have a functional Mac once again. Unconfirmed Possibilities: *Partial NAND Replacement: If you had a highly shorted 2.5v rail, there's a good chance that only one NAND was damaged. You might be able to read its config block using the JC P13 and a freezer (the freezer provides higher current, and it's been confirmed to be useful in iPhone repairs to recover the original MAC/SN/WLAN config) and prepare just one NAND, meaning you won't have to remove them all. *Whole RAW NAND Backup: Currently, devices like the Magico and JC P13 only work with small sysconfig blocks. However, it's clear that technically RAW NAND access should and could be free to use. This could potentially allow for data transfer from a faulty, shorted NAND to a good one (if it permits itself to be read under a freezer/being reset every few seconds, etc.). MacBook M1 and Beyond: Here's some good news. You might have figured out that T2 SSD repair/upgrade is in fact easier and more convenient than doing so on T1 MacBooks. And the process is even simpler on the M1, since M1 DFU does not require you to prepare the NANDs. You just solder them onto the board like any other chip and it works. No BridgeOS means no NAND preparation. Again use [[MacBook NAND List]] as a reference(M1 models compatible IC IDs added recently). UPDATE: It is not clear since which AC2 update this happened but for now DFU Restore only works only if you solder unprogrammed clean / unused NANDS. Yay! ==Data Recovery Possibilities== As previously mentioned, the Pre-T2 Lifeboat connector provides a direct interface to the SSD drive, similar to a normal M.2 NVME drive. The T2 can grant access to the internal volume using a tool called the "data transfer utility," which is only accessible to AASP providers. To run the app, you need approval and a ticket in the AASP system. It operates through a USB 2.0 interface, so the transfer rate is... well, it doesn't really matter because it can read an SSD with a dead Intel CPU/PCH part. 9r2saalzyv0gdh9jjo7zmzq4fm60a3i MacBook Stencils 0 1811 5305 2020-12-06T18:42:50Z Chrisb 1 Redirected page to [[MacBook Parts List#Stencils]] 5305 wikitext text/x-wiki #REDIRECT [[MacBook Parts List#Stencils]] ckt28jwf6tgyrztmk086h78esytg1p6 MacBook USB-C LCD Backlight Flex Compatibility 0 2214 6760 6759 2023-02-14T22:55:05Z Alan.l 19 6760 wikitext text/x-wiki {{DISPLAYTITLE:MacBook USB-C LCD Backlight Camera Flex Compatibility}} [[File:backlightflexcable3.jpg|thumb]] <br /> =='''Pair (Left and Right)'''== '''MacBook Air 13" A1932 A2179 A2337''' Left PN: 821-01317-A Right PN: 821-01318-A '''MacBook Pro 13" A1706 A1708 A1989 A2251 A2289''' Left PN: 821-00602-03 Right PN: 821-00603-03 Left PN: 821-01228-A Right PN: 821-01229-A '''MacBook Pro 15" A1707 A1990''' Left PN: 821-01270-01 Right PN: 821-01271-01 '''MacBook Pro 16<nowiki>''</nowiki> A2141''' Left PN: 821-02251 Right PN: 821-02252 [[Category:Mac]] [[Category:MacBook]] {{DEFAULTSORT:MacBook_USB-C_LCD_Backlight_Camera_Flex_Compatibility}} n1w685dx06xmsl71h58xv74stt37mrt MacBook USB-C Video Out 0 1725 5755 5754 2021-04-21T23:11:11Z Nobluesky 182 cleaned url 5755 wikitext text/x-wiki Many video adapters and multiport hubs will not support video out until MacOS has booted to a login screen. Apple's own USB Type-C Digital AV Multiport Adapter does not display video out until macOS is booted. '''The most reliable means of getting boot-menu and Apple-logo loading screen output is with the internal display connector fully disconnected.''' Most USB-C to Displayport adapters should support boot menu display out natively when the internal display is disconnected, because there's no intermediary adapter between the USB-C port's native DisplayPort Out and the monitor itself. [https://www.amazon.com/gp/product/B01J6DT070 This] USB-C to DisplayPort cable is confirmed as working at the boot menu with a T2-era MacBook Pro A2159, among other later-era MacBooks equipped with USB-C / TB3 / TB4. It is a DisplayPort 1.4 adapter so it supports 8K/60Hz and lower resolutions at higher refresh rates. Many HDMI adapters will not work reliably as the USB-C port does not put out a native HDMI signal, but [https://www.amazon.com/gp/product/B075V5JK36/ this] adapter is tested and works to display the EFI portion of boot so you can see the Apple symbol and the FileVault screen. It is a HDMI 2.0 adapter so it also supports 4K/60Hz display. m2u0lhlf0fv99w71378ecagsacs7w76 MacBook battery diagnostics and repair 0 2153 7064 7063 2024-03-06T12:25:39Z Inwerp 16 /* How to test if charging circuit works properly. */ 7064 wikitext text/x-wiki ==Disclaimer== We strongly do not recommend you to refurbish / repair batteries for further customer use unless you know what are you doing, and you are qualified(which is clearly not the case if you read this article). Batteries are highly explosive and dangerous products, this is exactly a red line where consumer electronics repair stops being safe, so '''we do not recommend re-celling batteries''' since good li-pol cells is not something you can confidently buy in electronics store. There are very few cases where you might try to fix the battery instead of installing a new one: - if you have slightly over-discharged battery. - If your battery had short circuit on board in 100% charged condition. Such lock might also happen if you had 19V on your PPBUS line, but it would also burn the fuse. Usually short circuit causes temp.fail condition which is reset if BMS sees current flow in opposite direction(which means from Laptop TO battery). Since "FULLY_CHARGED" flag will prevent the battery from opening its mosfet, charging the battery won't reset this flag. Some old PC laptop batteries could be discharged with external load(use digital controlled load only) on cells to reset this flag. - if you need to backup customer's data before fixing charging circuit / ordering a new battery, etc. ==Theory== Moderns notebook batteries are quite sophisticated devices(also known as smart battery) with its own microcontroller and balancing electronics. Check [[MacBook OEM, Aftermarket, and Knock-Off Batteries]] for comparison and photos of Macbook Battery internal parts. #Battery controller (Texas instruments b20 series) This part of the battery stores all the service information like remaining capacity (calculated during charge), cycles, fail flags, etc. #Cell charging/balancing system. Say, there are 3 cells in your battery in series, each is discharged to 3V. We apply 13V to the battery pack. Each cell has its own capacity, resistance and charging performance. To keep batteries charged evenly we need to control and balance them by injecting voltage between cells during charge or withdrawing excess charge from "overcharged" cells during discharge. Balancing algorithm is dependent on BMS and cell pack design. If the difference between cells is more than 0.2V, Temporary FAIL flag might be triggered and battery will stop charging. [https://www.ti.com/download/trng/docs/seminar/Topic%202%20-%20Battery%20Cell%20Balancing%20-%20What%20to%20Balance%20and%20How.pdf Further read] #Fuse. Macbooks use self-burning fuse which has 4 pins. there is a heating element which melts solder blob between two B+ poles. This event is triggered if battery is shorted in use, or overvoltage is detected. In some cases battery might even report itself as a "perfect condition". it will pass AHT, but still, there would be no charge and no output. #Cells. In most macbooks there will be 3S(3 Cells/Cell Packs in SERIES) battery with 10-12.8v output voltage. PPBUS voltage when running from power supply is approximately same voltage as a fully charged battery. PPBUS Voltage is set by CELL pin on charger IC. #Thermal couple on battery pack. Small, but really important thing. In some cases thermal couple gets damaged by drop damage, it might also be damaged during transport or battery installation. (for example, on MacBook Air '''A1466''' It is mounted close to sharp plastic edge which cuts thermal couple). This is Permanent "TERMINATE_DISCHARGE" flag failure, and you can fix it by replacing the thermal couple and resetting the battery (special equipment required, but maybe this particular flag has some sort of timeout since hot battery never causes battery bricking itself on Smartphones, however it happens from time to time). To check the thermal couple, measure voltage across: there should be 0.15V cycling every second. If you see higher voltage, most likely the sensor is OL. [[File:thermal couple.png|none|thumb|thermal couple cut by plastic frame after drop damage(MacBook Air Battery)]]<br /> <br /> ==Troubleshooting== #To turn on the battery you need to pull down SYSDETECT_L to ground. on old models it is done by connector itself, modern macs need you to plug the power supply to switch this line to ground. If you need to turn on such battery without power supply, simply short it to ground with tweezers once. If it only shows empty battery sign on screen, you can also pull BATLOW_L to 3.3V with 10-Ohm jumper(say, you have charging circuit problem, but you want to first backup data using pre-charged battery) [[File:SYSDETECT L.png|none|thumb|508x508px|Sysdetect_l circuit. Once battery is ON, there will be PP3V3_G3H on gate which will keep Q6955 ON, thus shorting SYS_DETECT_L to ground. ]]<br /> #No output would mean that the battery is in permanent/temporary failure state. Measure voltage on banks, check if you have bad balance and correct it with bench power supply. This is not a repair solution, but it might be necessary if you have one of the macs which won’t boot without the battery, and you need data first. #If there is output, but battery is not detected, inspect I2C lines. Some macs like M1 MAX will, in fact, run from battery with no communication with the battery. For some reason it will show 0% battery even in system. all 16" models will throttle and run 100% fan with no battery connected. The battery won't charge without i2c communication, both lines are active every 0.5seconds, so it could even be seen as a slight voltage fluctuation on RMS multimeter. #If battery is detected but not being charged, you can also get more information from it usind terminal command(on mac devices it is much more verbose): ioreg -l -w0 | grep Capacity this command will show you quite a lot useful information including battery voltage. if your battery voltage calculates to below 2.8V per cell, battery will lock itself. for example if you have 2S-cell battery like Macbook air, everything below 5.6V would mean that battery is not possible to recover without special device and precharging cells to 3V. === How to test if charging circuit works properly. === with battery disconnected: # Check with Multimeter or Oscilloscope if SCL / SDA lines have 1/Sec activity. Good multimeter will indicate slight voltage jump. # Check if there is output voltage to the battery. Working charger IC would send 6-7V pulses every second and permament 12V on M1 PRO/MAX macbooks (Need to confirm on few other devices) The idea behind that is that if battery is not detected, charger will try to "wake it" with power pulses and SDA/SCL "ping". # check if Gate on BatFet is below ppbus voltage (2-5V) # also good indicator is PPBUS voltage on intel macs: 12.3 indicate problem with SMC-Charger IC communication (even if mac works). with battery connected: # there should be communication on SCL SDA lines # Batfet Gate should be stable 2-4V which indicate open BatFET # voltage to the battery should be around normal PPBUS voltage. If battery charges, its voltage should slowly raise. '''<u>note on M1 devices:</u>''' non working SDA/SCL will cause device to show "1%" battery and "service recommended" instead of "no battery detected". However, mac will work from battery. The battery will be also charged a just a tiny bit to 12V (default PPBUS voltage). If used for long period of time, battery will lose its calibration and it will need to be fully discharged (approx 9.8V till it shuts itself down) and then fully charged. <br /> ==Links== [https://www.ti.com/download/trng/docs/seminar/Topic%202%20-%20Battery%20Cell%20Balancing%20-%20What%20to%20Balance%20and%20How.pdf Texas Instruments Balancing guide] Known good 3rd party Battery suppliers: [https://lmp-adapter.com/product/ LMP] They also produce batteries for very old models. Since late 2021 they changed Cell supplier which seems to have much lower quality. Diagnostic equipment:<br />[https://www.laptopu.ro/product/professional-laptop-battery-analyzer-nlba1/ NLBA1(laptop battery analyzer and repair device)] You can also use EV2300 (Texas Instruments programming kit), but without some deep knowledge of registers / tech mode key this is useless. There is also a small apple-only device called MBRT, available on aliexpress. (no reason to link since they expire quite fast) sg0a8pdgxtgx28eu7z18txhavr1ap6i Mac GPU Repair 0 2653 7740 7737 2025-02-04T07:16:47Z Leshuq 657 Added VRAM for 0885252, corrected dram p/n 7740 wikitext text/x-wiki == Introduction == # '''GPU reflow is scam. GPU Rehot is scam and always has been. Never reflow GPU if you are not the one who knows thats a drop damage and you gonna reball it afterwards.''' # '''GPU flip is scam. A1286 GPU replacement is scam. There is no such thing as "fixed" or "better" chips with later datacode.''' == AMD VRAM Compatibility == if possible always replace AMD gpu with its VRAM if vendor is different. it looks like there are differently marked chips with same model number in system but different ram. Especially the case if you move macbook GPU to iMac. Below here are <u>known good combinations of GPU+VRAM</u> (either factory variants or manually tested ones): 2016-2017 GPUs: '''216-0896074''' = ('''TODO''': Model) / Samsung ('''TODO''':Which/capacity) '''216-0896144''' = Radeon Pro 450 (MacBook A1707 2016) / Elpida ('''TODO''':Which/capacity) '''216-0885348''' = Radeon Pro 555 (MacBook A1707 2017) / Samsung K4G41325FE-HC28 x4 = Total 2GB || Elpida W4032BABG-70-F x4 = 2GB || Hynix H5GC4H24AJR x4 = Total 2GB '''216-0885184''' = Radeon Pro 555 (iMac 21.5" 4K 2017) / Hynix H5GC4H24AJR x4 = Total 2GB '''216-0885252''' = Radeon Pro 555 (iMac 21.5" 4K 2017) / Samsung K4G41325FE-HC28 x4 = Total 2GB '''216-0885238''' = Radeon Pro 560 (Macbook A1707 2017) / Samsung K4G80325FB-HC28 x4 = Total 4GB '''216-0885170''' = Radeon Pro 560 (iMac 21.5" 4K 2017) / Hynix H5GQ8H24MJR x4 = Total 4GB '''216-0885286''' = Radeon Pro 560 (iMac 21.5" 4K 2017) / Hynix H5GC8H24MJR x4 = Total 4GB 2019-2020 GPUs: '''215-0932252''' = Radeon Pro 5500M (Macbook Pro A2141) / (Samsung K4Z80325BC-HC14 x4 = Total 4GB) || (Samsung K4ZAF325BM-HC14 x4 = Total 8GB) '''215-0932268''' = Radeon Pro 5300M (Macbook Pro A2141) / (Samsung K4Z80325BC-HC14 x4 = Total 4GB) '''215-0932348''' = Radeon Pro 5300 (iMac 27" 5K A2115 2020) / Micron D9WCW x4 = Total 4GB '''215-0932332''' = Radeon Pro 5500XT (iMac 27" 5K A2115 2020) / Micron D9WZX x4 = Total 8GB == MacBook Pro 2019 16" A2141 GPU failure == This issue seems to be a common problem. In many cases it starts with GPU being unable to wake up after sleep and some GPU-related kernel panics after it reboots. Once it progresses, device works only in safe mode. Last step is no post and no image/backlight. Unfortunately there is no good source for new replacement chips, so if you use chips from donor, it is agood idea to get 2 chips and put one aside for warranty. It is also a good practice to give prolonged warranty since it might fail again. 8ge7el1cdtdi7173pmje4qztjbu452d Mac Pro 6,1 Late 2013 Diagnostic LEDs 0 634 1323 1321 2020-06-09T12:58:24Z Pranas 2 added block diagram 1323 wikitext text/x-wiki [[File:late-2013-mac-pro-system-block-diagram.png|thumb|Mac Pro 6,1 Late 2013 System Block Diagram]] The Mac Pro (Late 2013) contains several diagnostic LEDs and test points to assist in troubleshooting: Status LEDs are green, and do not illuminate unless the DIAG button (refer to the I/O Board LEDs topic) on the I/O board is being pressed. This type of LED is only found on the I/O board. They are used to identify power states and are useful in troubleshooting the startup sequence. Error LEDs are red, and illuminate continuously when there is a problem. [[File:macpro 4.png|thumb]] Warning LEDs are yellow, and illuminate continuously when a thermal problem is detected. This type of LED is only found on the CPU riser card. Using Diagnostic LEDs for Troubleshooting The Mac Pro (Late 2013) contains a Hall Effect sensor that will prevent operation of the computer with the housing removed. For the purpose of viewing diagnostic LEDs only, it is possible to briefly operate the computer with the housing removed. From the Apple menu, choose Shut Down (or if the computer is not responding, hold the power button until it turns off). Remove the AC power cord and all cables and peripherals that might be connected to the system. Remove the housing. Connect the AC power cord. Warning: To prevent injury, avoid contact with the bus bars and the bus bar screws (shown below) when the computer is plugged in and powered on. The bus bars and the bus bar screws, located at the top of the main boards, have enough energy to cause a burn if they are bridged with metal (such as a ring or other jewelry). Avoid contact with I/O board bus bars and bus bar screws: [[File:macpro 3.jpg|thumb]] [[File:macpro 1.png|thumb|[[File:macpro 2.png|thumb]]]] I/O Board Error LED <nowiki>#</nowiki>1: Flex Check: This indicates that there is a connection issue between the logic board and the I/O board. Check the mezzanine connectors on both the logic board and I/O board to be sure the connections are fully seated. I/O Board Status LEDs <nowiki>#</nowiki>2: 11V Power: This indicates 11V power from the power supply. It should remain illuminated whenever AC power is connected. <nowiki>#</nowiki>3: 12V Power: This indicates 12V main system power. It should illuminate once the power button has been pressed, and should remain on while the system is powered on and not in sleep mode. If high-power USB or Thunderbolt devices are connected prior to sleep, this LED will remain illuminated during sleep. <nowiki>#</nowiki>4: Platform Reset Release: This indicates that the system has transitioned to a fully running power state (S0). During startup, this indicates that the system can transition to EFI Boot. <nowiki>#</nowiki>5: S5 Power State: This indicates that the S5 (soft power off) state is available. It will illuminate at all power states, until the computer is fully shut down. If the computer is scheduled to turn on at a certain time in the Energy Saver preference pane, this LED will still illuminate after the computer has been shut down. <nowiki>#</nowiki>6: S0 Power State: This indicates that the S0 (full power) state is available. It will illuminate once the computer begins the startup sequence, but does not necessarily indicate that computer has successfully started up. <nowiki>#</nowiki>7: S4 Power State: This indicates that the S4 (hibernate) state is available. It should illuminate at the same time as the S0 LED. If, during startup, this LED illuminates without S0 illuminating, it may indicate an issue. <nowiki>#</nowiki>8: PCIe Switch Status: This indicates the status of the link from the PCIe switch on the I/O Board to the CPU. During startup, this indicates that the system has reached EFI Boot. If the link to the PCIe switch is not operating in PCIe v3 mode, this LED will blink. A fast blink indicates v2 mode, while a slow blink indicates v1 mode. These states may correlate to issues with Thunderbolt or USB devices. Important: Be sure to remove any magnetic source used in step 6 (above) to re-enable the safety interlock circuit as soon as possible, to minimize risk of injury from contact with the bus bars and bus bar screws. pre39tqaefm6qz1u9w43voayey6xbkw Mac Pro 6,1 Trash Can Late 2013 Diagnostic LEDs 0 1679 5013 2020-10-12T14:07:46Z Chrisb 1 Redirected page to [[Mac Pro 6,1 Late 2013 Diagnostic LEDs]] 5013 wikitext text/x-wiki #REDIRECT [[Mac Pro 6,1 Late 2013 Diagnostic LEDs]] 29frhdfbmvmxmqz2sc7stw87hc9cssr Mac mini Common Issues 0 1881 5551 2021-02-07T17:47:18Z Chrisb 1 Redirected page to [[A1347 2010-2012 common issues]] 5551 wikitext text/x-wiki #REDIRECT [[A1347 2010-2012 common issues]] mivuzt3wubx6lxssllsotkc3fdckidb Mac sensors reference designators 0 1902 6693 6692 2022-12-31T13:02:16Z Alex6337 28 /* Example: */ added some details 6693 wikitext text/x-wiki SMC sensor codes (reported in ASD) can be quite cryptic and there is no way to immediately know which component it refers to on the logic board. Some schematics have the sensor code next to the component, some don't. Some schematics tell the description for a group of sensor, some give a hint on the placement, but sometimes it is wrong. Remember that when you have an issue on an SMBUS, you will have multiple sensors showing an error, all related to the same sensor hub on that specific SMBUS, but it may be caused by something else (eg. ALS or Touchpad). '''Warning: this is a work in progress. The information here has not been exhaustively verified!''' This is mostly guess work from the information in the schematics, the boardviews, the ASD sensor lists and reports of correlation between sensors found on the web. Warning 2: when using a monitoring software such as HWMonitor, the sensor descriptions may be wrong. It may even hide some sensors and show missing ones. ==List of abbreviations used in sensor descriptions== *TBT = Thunderbolt *T29 = Thunderbolt controller *MLB = Main Logic Board *BOT = Bottom *TBD = To Be Determined (ie. no information in this schematics revision) *BMON = Battery Monitoring *AMON = AC Adapter Monitoring ==Replacing temperature sensors== ==='''Carefully check the datasheet of the sensor you are trying to replace.'''=== ===<u>Example:</u>=== TMP461 (known as U5850 on 820-00239 - Thunderbolt die, Airflow Left, but widely used on Macbook board) as several ground pads. It's close to the edge of the board and is sometimes teared off by careless repair shops... '''Pads 5 and 10 are actually used to determine the I2C address. They can be GND, floating, or VCC.''' These pads can be ground or pulled high, and must grounded or pulled high carefully (like...when the lines have been raped... We've all been ther) so that the sensor is recognized. It may be similar for other sensors references. ==MacBook Air== ===MacBook Air 11" 2013 820-3435=== Matching between reference designators and sensor description is different from the MacBook Air 13" 2013 820-3437. MacBookAir6,1 in [[SMC Sensor Codes]]. Schematics contains gives wrong hints about sensors. {| class="wikitable" |+Temperature sensors |- !SMC Sensor Code!!Description!!Reference designator!!Bus |- |TS2P||Memory Proximity||Q5810||SMC S0 "1" SMBus |- |THSP||T29 Proximity||Q5820||SMC "3" SMBus S0 |- |Ta0P||Inlet||Q5830||SMC S0 "1" SMBus |- |TW0P||Wireless Proximity||Q5840||SMC "3" SMBus S0 |- |TM0P||Camera Proximity||Q5850||SMC "3" SMBus S0 |- |TCHP||Charger Proximity||Q5860||SMC S0 "1" SMBus |- |TC0P||CPU Proximity||U5800||SMC S0 "1" SMBus |- |Tm0P||Logic Board Top Side||U5810||SMC "3" SMBus S0 |- |Ts0P||Trackpad||J4800||SMC "3" SMBus S0 |- |TB0T||Battery||J6950||SMC "5" SMBus G3H |- |TB1T||BMU 1||J6950||SMC "5" SMBus G3H |- |TB2T||BMU 2||J6950||SMC "5" SMBus G3H |- |Th1H||Fin Stack||J9500||SMC "2" SMBus S3 |- |TCXC||CPU Core PECI||U0500||PECI |- |TPCD||Platform Controller Hub||U0500||PECI |} ===MacBook Air 13" 2013 820-3437=== MacBookAir6,2 in [[SMC Sensor Codes]]. Schematics contains gives wrong hints about sensors. {| class="wikitable" |+Temperature sensors |- !SMC Sensor Code!!Description!!Reference designator!!Bus |- |TS2P||Camera Proximity||Q5810||SMC S0 "1" SMBus |- |THSP||T29 Proximity||Q5820||SMC "3" SMBus S0 |- |Ta0P||Inlet||Q5830||SMC S0 "1" SMBus |- |TW0P||Wireless Proximity||Q5840||SMC "3" SMBus S0 |- |TM0P||Memory Proximity||Q5850||SMC "3" SMBus S0 |- |TCHP||Charger Proximity||Q5860||SMC S0 "1" SMBus |- |TC0P||CPU Proximity||U5800||SMC S0 "1" SMBus |- |Tm0P||Logic Board Top Side||U5810||SMC "3" SMBus S0 |- |Ts0P||Trackpad||J4800||SMC "3" SMBus S0 |- |TB0T||Battery||J6950||SMC "5" SMBus G3H |- |TB1T||BMU 1||J6950||SMC "5" SMBus G3H |- |TB2T||BMU 2||J6950||SMC "5" SMBus G3H |- |Th1H||Fin Stack||J9500||SMC "2" SMBus S3 |- |TCXC||CPU Core PECI||U0500||PECI |- |TPCD||Platform Controller Hub||U0500||PECI |} ===MacBook Air 13" 2015 820-00165=== MacBookAir7,2 in [[SMC Sensor Codes]]. Warning: HWMonitor may show a non-existent "Meomory Proximity" and hide "Thunderbolt Proximity" Schematics contains gives wrong hints about sensors. {| class="wikitable" |+Temperature sensors |- !SMC Sensor Code!!Description!!Reference designator!!Bus |- |TS2P||S2 Camera Proximity||Q5810||SMC S0 "1" SMBus |- |THSP||T29 Proximity||Q5820||SMC "3" SMBus S0 |- |Ta0P||Air Flow||Q5830||SMC S0 "1" SMBus |- |TW0P||Wireless Proximity||Q5840||SMC "3" SMBus S0 |- |TM0P||Memory Proximity||Q5850||SMC "3" SMBus S0 |- |TCHP||Charger Proximity||Q5860||SMC S0 "1" SMBus |- |TC0P||CPU Proximity||U5800||SMC S0 "1" SMBus |- |Tm0P||Logic Board Top Side||U5810||SMC "3" SMBus S0 |- |Ts0P||Trackpad||J4800||SMC "3" SMBus S0 |- |TB0T||Battery||J6950||SMC "5" SMBus G3H |- |TB1T||Battery Sensor 1||J6950||SMC "5" SMBus G3H |- |TB2T||Battery Sensor 2||J6950||SMC "5" SMBus G3H |- |Th1H||Fin Stack||J9500||SMC "2" SMBus S3 |- |TC1C||CPU Core 1||U0500||PECI |- |TC2C||CPU Core 2||U0500||PECI |- |TCGC||Intel GPU||U0500||PECI |- |TCSA||CPU System Agent Core||U0500||PECI |- |TPCD||Platform Controller Hub||U0500||PECI |} ===Repair section=== In most cases failed sensors is rather a communication line problem. Since it is shared between multiple sensors, it might cause lots of different issues. For example, failed ALS sensor on the display side might cause malfunctions of amost all thermal sensors on board, simply because it is pulling shared SMC SMBus line to ground. <br /> ==820-3437-B multiple sensor issues== '''The problem:-''' 70% CPU usage when idle, machine slow and you may need to hold the power button to get the system to boot, however, sometimes the system still fails to power. ASD faulting sensors (IC0R, ID0R, IM3C, ISDC, PB1R, PC0R, PDTR, PPBR, PSDC, VC1C, VCS0, VP0R). Device takes 0.06MAh. '''Issues found/fixed:-''' PBUS_S0_VSENSE missing - Q5500 Pin 3 via severely corroded. Ran jumper to R5503 Pin 1 to restore, issues persist. C5021 turned into 1Ω. Capacitor replaced, issues resolved, and ASD passed diagnostics. '''Addition:-''' I had an issue with C5021 again (21st September 2021) and this time the machine would not power on and PM_SLP_S4_L was missing. A quick check of C5020, C5021 and C5125 showed they were shorted to ground through C5021. Replacing C5021 (1uf X5R 0201) fixed the issue and the machine boots again. If there is a short in this area, it can cause all sorts of issues. [[File:SMCSensorRevised.png|thumb|alt=|left]] [[Category:Mac]] [[Category:MacBook]] [[Category:MacBook Air]] [[Category:MacBook Pro]] tdhelnvtirxituwh7ku6yt7ac0m8nbx Macbook - Documented Repairs and Guides 0 2121 6360 6359 2022-01-21T19:07:20Z Alpha Bravo Tech. 538 6360 wikitext text/x-wiki This is Dusten Mahathy's house! Everyone is welcome to visit and everyone is welcome to contribute! [[Category:Mac]] gtd101nh5dr2q5doclsxc4q6yjgzd6e Macbook Failures From Experience 0 2096 6271 6270 2021-11-29T19:37:04Z Dusten04 30 /* 820-00928 PPBUS not being generated, no shorts */ 6271 wikitext text/x-wiki ===Overview:=== This page is more of a diary of repairs, more than a guide on how to repair. <br /> ==='''820-00958 CPU Failure'''=== The unit came in with slight liquid damage on U7650, U6940, and Q7660. Shorted was PP5V_G3S. The shorted component was U8245. After replacing U8245, I found that PP5V_G3S was 10v, instead of the 5v that it was intended for. After only a few seconds of having the board on again after replacing U8245, to check measurements, it was shorted again. At this point, I replaced U7650, Q7660, and repaired several traces and capacitors, resistors. Once again, replacing U8245. This time when powering on the board PP5V_G3S, was at its normal voltage. However, the unit still would not boot. Hovering about 20v 100mA. So after further investigation, I found PPVCCIN_AUX_PCH was not being generated. This was due to PPVCCINAUX_VCC being shorted to ground. This failed component was U7400. Which was powered by PP5V_G3S. So, after replacing U7400, I was making progress. The unit would start the boot process, getting 1v8 on PPVCC_S0_CPU for a second, then 0v, but pulsing. So on/off/on/off scenario. I found the pulsing started all the way back at PP1v8_SLPS2R. I did find, however, that if I removed R7210, R7220, and R7230 the system would be stable again. These are the three resistors that powers PPVCC_S0_CPU. At this point, I am pretty certain that I have some sort of CPU failure. Wether it be the CPU itself or not, I am not sure. I felt that it was, as I have a suspicion the 10v going through the CPU MOSFETs probably killed the CPU. However, as a last desperation, and for research, I decided to attempt to DFU the machine. At his point, it failed, and I got '''error code 9'''. This was somewhat expected, as all the power rails are pulsing currently. So what I decided to do, was remove the three resistors mentioned early, to make the system stable again. At this point, the DFU restore went through successfully. This leads me to believe that CPU failure can cause '''error code 9''' <br /> ===820-01700 Not booting without battery, not charging stone dead battery=== Unit not booting without battery present. This board will boot on a 96watt adapter normally. I have seen 3 cases where the board doesn't boot on the adapter alone, and wouldn't charge a stone dead battery normally. Without battery connected: 20v with a jump to 300-500mA then back to 70mA and kind of sit there. With battery connected: It would very slowly raise to charging amperage. (It would take 2 to 3 minutes for it to reach 4 and a half amps, vs the normal 30 seconds to a minute) After diagnosing the charging circuit, and seemingly everything on the board is physically okay, I decided to DFU restore the unit, thinking something with the SMC, that T2 is now handling. This resolved the issue. <br /> ===820-00928 PPBUS not being generated, no shorts=== 5v and 100mA for about 10 seconds then would jump to 20v 60mA - PPBUS not being generated. Initially found short on SMBUS_SMC_5_G3_SDA caused by D6950. After diode replacement, same result. Resolved issue by replacing SMC. Voltages I had *PPBUS_G3H - 0.300 *PP3V3_G3H - 3.4 *TBA_GATE_Q1 - 0 *TBA_GATE_Q2 - 0 *TBA_GATE_Q3 - 0 *TBA_GATE_Q4 - 0 *PPVIN_G3H_P3V3G3H - 19.8 *TBA_AUX_DET - 5.07 *HPWR_EN_L - 3.36 *SMC_RESET_L - 3.4 *TBA_VDDA - 5.07 *TBA_VDDP - 5.07 *PM_EN_P3V3_G3H - 5.08 *PPDCIN_G3H_CHGR - 19.8 *SMC_BC_ACOK - 3.4 *CHGR_AMON - 0 *CHGR_BMON - 0 === 820-01949 PPBUS Short, leading to T2 shorted === This one started with 5v-60mA, classic PPBUS short draw for the T2 models. The PPBUS short was caused by U6903. After removing the IC, PPBUS short went away, however after probing the area around, I discovered PP3V3_G3H_RTC was short as well. So before I injected any voltage I removed R5920, which connects PP3V3_G3H_RTC to PP3v3_G3H_SSD. Probing under this resistor, I found that the short on PP3V3_G3H_RTC went away, and PP3V3_G3H_SSD0 was shorted. This time the short was caused by U9000. So after replacing U9000 and U6903 I checked around both ICs for shorts and didn't find anything. So I went ahead and attempted to boot the unit. At which point the unit would just restart my amp meter repeatedly, before even giving me a reading. All the power rails were pulsing from PPBUS to 12.6v to 3v very rapidly, and the pulsing stopped at PP3v3_G3H, which was just 0v. At this point I discovered that PP1V8_SLPS2R was shorted. The short being caused by T2. Just speculating, but I think something that connects PP3V3_G3H_RTC and PP1V8_SLPS2R probably shorted internally, and shoved 3v3 into 1v8. Again, purely speculation. tcsvrnf928aqm79oxfc6lw5a9jdjknt Macbook Lid Angle Sensor Calibration 0 2247 6958 6956 2023-10-06T21:46:15Z Vladislav98759 951 6958 wikitext text/x-wiki [[File:MLASCT.jpg|thumb]] https://github.com/Vladislav98759/Macbook-Lid-Angle-Sensor-Calibration-Tool/tree/main This tool can be used to calibrate the new lid angle sensor on the macbook A2141 A2442 A2485 A2779 A2780 A2681. The programmer has 3 operating modes, the modes are switched by a short push of a button and switched in a circle. You can tell which mode is currently selected by the blinking of the LED (1, 2 and 3, respectively). Each of the modes is activated by pressing the button for a long time (1 second). In the mode 1, calibration is performed for the PRO series macbooks (A2141, A2442, A2485, A2779, A2780), if the calibration was successfully recorded, the LED will light up for 3 seconds. In the mode 2, calibration is performed for the AIR series macbooks (A2681), if the calibration record was completed successfully, the LED will light up for 3 seconds. In mode 3, the function of recognizing the current angle is activated (if the lid is open, the LED lights up, closed - goes out). Before recording in modes 1 and 2, the tool makes checks for the possibility of flashing, if the sensor is not connected, the LED will blink 3 times, if a sensor removed from another device (calibrated by Apple) is connected, it will blink 6 times. <youtube>4y4Nq-6QuaA</youtube> t0ikr2jvcy6ezlnr27xdmia9ftrfubw Macintosh Plus Resources 0 475 1153 1152 2020-04-30T17:42:05Z Chrisb 1 1153 wikitext text/x-wiki [http://www.micromac.com/whats_new/logic_board_picture.html Logic board pictures can be found] [https://www.instructables.com/id/Apple-M0110-Keyboard-Crossover-Adapter/ DIY keyboard cable] [https://www.shapeways.com/product/27DNUVPJA/replacement-floppy-drive-gear-for-macintosh-comput Replacement Floppy Drive Gear]<br><br> Classic Mac Tech Info:<br> [[File:Classic_Mac_Tech_Info.pdf|page=1|Classic Mac Tech Info|alt=|200x200px]]<br><br> The Dead Mac Scrolls:<br> [[File:The_Dead_Mac_Scrolls_1992.pdf|page=1|The Dead Mac Scrolls|alt=|200x200px]]<br><br> Macintosh Repair and Upgrade Secrets:<br> [[File:Macintosh_Repair_and_Upgrade_Secrets.pdf|page=1|Macintosh Repair and Upgrade Secrets|alt=|200x200px]] <br /> oxg5vjwmv7zrl70pfhys4dcoxx2x9ud Macintosh Portrait Display Cable 0 1863 5486 5484 2021-01-15T13:49:25Z Chrisb 1 5486 wikitext text/x-wiki {| class="wikitable" |'''Apple DB-15 to 13W3 Pinout''' |Version 1.0 – October 2020 |- | | |- |'''DB-15 (Male Side) Pin #''' |'''13W3 (Male Side) Pin #''' |- |1 |A3 (Outside) |- |2 |A3 (Inside) |- |3 |5 |- |4 |9 |- |5 |A2 (Inside) |- |6 |A2 (Outside) |- |7 |8 |- |8 |None / Not Connected |- |9 |A1 (Inside) |- |10 |3 |- |11 |4, 7, & 10 |- |12 |2 |- |13 |A1 (Outside) |- |14 |1 |- |15 |6 |- |Connector Sheild |Connector Sheild |} [[File:Apple-DB15-13w3-pinout-diagram-cropped.jpg|800x800px]] '''Note!''' This page only shows the basic pinout of this cable. The original cable may have resistors or other components inside which are unknown to me. If you happen to find additional information on what is needed to replicate this cable, or you successfully build a replacement cable, please contact us or https://mac84.net/ with any additional helpful information you may have. [https://Mac84.net/web/mac84tv/repair-guides-documents/apple-db-15-to-13w3-cable-pinout-for-macintosh-monitors-portrait-display-two-page-monochrome-display/ Pinout for 13W3 to DB-15 cable] [https://support.apple.com/kb/TA43900?locale=en_US Link to Apple's site with pinout] gam7wek2of9xlp8a4dyfavoo7vbj1bd Macintosh SE Resources 0 531 5481 5480 2021-01-14T05:22:45Z Chrisb 1 5481 wikitext text/x-wiki [[File:Iconic Book 1.jpg|thumb|''Iconic: A Photographic Tribute to Apple Innovation By Jonathan Zufi'']] [http://www.micromac.com/whats_new/logic_board_picture.html] Logic board pictures can be found <br><br> [https://www.shapeways.com/product/27DNUVPJA/replacement-floppy-drive-gear-for-macintosh-comput Replacement Floppy Drive Gear] SE Classic Mac Tech Info:<br> [[File:Classic_Mac_Tech_Info.pdf|page=1|Classic Mac Tech Info|alt=|200x200px]]<br><br> The Dead Mac Scrolls:<br> [[File:The_Dead_Mac_Scrolls_1992.pdf|page=1|The Dead Mac Scrolls|alt=|200x200px]]<br><br> Macintosh Repair and Upgrade Secrets:<br> [[File:Macintosh_Repair_and_Upgrade_Secrets.pdf|page=1|Macintosh Repair and Upgrade Secrets|alt=|200x200px]] Apple Memory Guide [[File:Apple_Memory_Guide.pdf|page=1|Apple Memory Guide|alt=|200x200px]] <br /> c94et8btxsyoxp4h81hbisseb32mcbp Magsafe Sleep Mode 0 328 7018 6453 2023-11-25T17:00:35Z Inwerp 16 7018 wikitext text/x-wiki Magsafe has a "sleep" mode where it sends out 3V or 6V (Magsafe2/Magsafe1) when disconnected. It is unrelated to 1-wire. It measures the current going out and when you connect it to a Macbook, it will detect the small current consumption of the small resistor between PPDCIN_G3H and ground. (22k, 68k…, R7012 on 820-3437) If it detects a current consumption within the correct range, it'll send out the 16.5V (or 14.8V/18.5V/20V depending on Magsafe power and version). The Macbook will enable PP3V42_G3H circuit only when voltage is above a threshold, due to the zener diode (D7012 on 820-3437) + MOSFET (Q7010 on 820-3437). And charger IC (U7100 on 820-3437) will turn on DC-in MOSFET (Q7180 on 820-3437) when it's above a certain threshold as well (on the ACIN pin n°3). The knockoff Magsafe (or a PSU) don't do that and that's why you can get sparks with them. When a genuine Magsafe doesn't send out the full voltage but the Macbook works properly with a knockoff or a PSU, it is related to those circuits Either the resistor between PPDCIN_G3H and ground, the threshold circuit for PP3V42_G3H, or the DC-in MOSFETs and their gate control (resistors and traces). Most common is a shorted DC-in MOSFET. Important note: 45W Magsafe 2 charger sends 0.7-0.9V and this is totally fine. If you have no-"Sparkitecture" problem with 45W PSU but it works from 85W, troubleshoot it like "no-genuine charge" problem. There might be a funny issue where macbook air works fine with 85W charger but does not activate 45V right after re-plugging it. It might go green after 10-30 seconds or even newer work before you completely discharge ppbus caps. The reason for that would be bad In-Rush mosfet which causes DCIN to get some leaking voltage from PPBUS thus not allowing power supply to be triggered (it turns on once DCIN reaches 0.3v, so if its 3-4V because of leakage, it wont work with magsafe after replug. [[File:PPDCIN G3H resistor to ground and PP3V42 threshold on 820-3437.png|thumb|PPDCIN G3H resistor to ground and PP3V42 threshold on 820-3437]] [[File:Charger IC Threshold on 820-3437.png|thumb|Charger IC Threshold on 820-3437]] [[File:DC-in MOFET and gates on 820-3437.png|thumb|File:DC-in MOFET and gates on 820-3437]] [[Category:Mac]] [[Category:MacBook]] snxjr36ptkuoh0spnssuc7xg6cmawg8 Magsafe troubleshooting 0 2207 7089 7088 2024-04-16T17:34:36Z Francis 4 7089 wikitext text/x-wiki ===Notes on Magsafe 3: <ref>fronke_</ref>=== '''Only the Magsafe 3 cable that comes with the 140W USB-C charger will work with it, the Magsafe 3 cables from the 14" M1 and M2 Macbook pro and M2 Macbook Air will NOT work/charge and will make the Magsafe 3 head blink orange.''' ====Lower wattage USB-C chargers that come with Magsafe 3 have been untested as of yet.==== The 140W charger and the Magsafe 3 that came with that charger will charge any Magsafe 3 macbooks normally. If the magsafe 3 head blinks orange and its the original that came with the charger, then try cleaning the Magsafe 3 port with a microfiber towel and some isopropanol. (Feel free to correct this info if you discover something new) The 140W charger can be used normally with a regular USB-C charging cable, up to 96W with macbooks as well as with any USB-C charged device. <br />[[File:Magsafe pinout.png|thumb]] ==Magsafe 1 and 2:== Magsafe 1 and 2 work identical. The only difference is in the mechanical shape of the plug. Magsafe-2 is longer and narrower than Magsafe-1. '''1.''' Test a known good DC-IN board first, and make sure you have a genuine MagSafe cable. Newer machines are extremely fussy about being able to communicate with the charger tip properly. '''2.''' Check '''PP3V42_G3H''' is 3.42v. Without this G3 rail the '''SMC''' will remain unpowered, along with other important circuits, i.e.: '''1-Wire'''. '''3.''' Check '''SMC_RESET_L''' is high. If this signal is missing then '''SYS_ONEWIRE''' will not come up to communicate as the '''SMC''' is stuck in reset mode; ''SMC'' is in ''RESET'' when signal is ''L(OW).''   '''3a.''' Check the '''SMC''' is powered (Can be checked at the '''PP3V3_S5_SMC_VDDA''' inductor).   '''3b.''' Check the '''SMC''' is running ('''PPBUS_G3H''' gets boosted by roughly ''400mv,'' varies per model). '''4.''' Check the service port for corrosion as '''PP3V42_G3H''' and '''SMC_RESET_L''' both show up here. '''5.''' Check the '''1-Wire''' circuit is working as it should (If it's on the logic board, MacBook Air have '''1-Wire''' on the LIO board, which should already be ruled out in step '''1''').   '''5a.''' On MacBook Air '''3437/00165''' boards, make '''SURE''' to check ''R7012'' is not damaged and measures 68k regardless of whether you have '''PP3V42_G3H''', or not. Sometimes you can be led to a dead end, and this resistor is the culprit of all your misery. [[File:Magsafe schematics.png|frameless|478x478px]] '''6.''' Remove the '''MAX9940''' IC to check '''ADAPTER_SENSE''' and '''SYS_ONEWIRE''' voltages. Both sides should be chattering at around +3v through the '''MAX9940''', this IC is there to stop 14.85+ volts going to the '''SYS_ONEWIRE''' bi-directional data line and cooking the '''SMC'''. ''' 6a.''' If both are at the correct voltage check '''C7000''' and '''R7029''', replace '''MAX9940''' if necessary. ''' 6b.''' If '''ADAPTER_SENSE''' is low check the '''ADAPTER_SENSE''' line back to the DC-IN board. ''' 6c.''' If '''SYS_ONEWIRE''' is low you most certainly have a faulty '''SMC'''. This line comes directly from the '''SMC''' straight to the '''MAX9940''' (In most cases?). '''1-Wire notes:''' ·       '''SMC_BC_ACOK''' must be present on ''both'' pins 2 and 3 (A+B) of the '''U7001''' AND gate otherwise it will not open and let 3.42v out to create '''SMC_BC_ACOK_VCC'''. ·       If the capacitor ('''C7000''') on '''SMC_BC_ACOK_VCC''' goes bad then current will go directly to ground as it will become the path of least resistance; therefore, '''U7000''' won’t be powered. ·       Sometimes adapter voltage can leak onto '''ADAPTER_SENSE'''. This will cause '''U7000''' to trigger overvoltage protection and shut off to protect the '''SMC'''. '''Other notes:''' ·       Just because a MacBook turns on, it does not rule out the System Management Controller. One way to tell if the '''SMC''' has a bad '''SYS_ONEWIRE''' line is as follows: Plug in a charged battery, power on the device and start MacOS, then plug in the charger and see if the light comes up after 10-60 seconds and MacOS detects charging. If so, this indicates a partially faulty '''SMC'''. ·       In RARE occurrences you may get away with flashing the System Management Controller. ·       On a MacBook Air, it’s always a good idea to check '''J9500''' and the LIO Board Flat Flex Connector. Corrosion can damage either of them and affect communication across '''SYS_ONEWIRE'''. ·       '''PP3V42_G3H''' can be pulled low by corrosion hidden in, or underneath the keyboard connector. ·       Fake MagSafe chargers will work when a battery is plugged in, however usually fail to charge the device once the battery is flat or unplugged, they also FORCE voltage into the system. '''Put fake chargers where they belong''' 🗑️. When in doubt use a CMIzapper MagSafe Tester to see if the charger is real or fake. ·       Sometimes '''PP3V3_S5_AVREF_SMC''' (and other SMC circuits) can become shorted to '''SMC''' analogue ground; this will cause strange and temperamental behaviour, including no light on the charger. [[File:SMC AVREF .png|frameless|499x499px]] === Cases: === fronke_: board only works with fake charger, had low resistance on R7080, replaced Q7080 and R7020, fixed issue. See [https://boards.rossmanngroup.com/threads/820-3332-no-power-magsafe-light-turns-green-and-off-then-repeats.38598/ here]. [https://boards.rossmanngroup.com/threads/820-3332-turns-on-but-don´t-charge.64326/ This] can also help '''Discord: muertogb''' <references /> i5oh75y5avwh4yab0nvw78dh65cqkdj Main Page 0 63 7686 7680 2024-08-30T01:00:51Z CBax 996 /* Welcome to Logi.Wiki */ 7686 wikitext text/x-wiki =='''Welcome to Logi.Wiki'''== This site is dedicated to sharing known good information about logic board repair. Please post only information that is proven. If you find anything incorrect please edit or leave notes so it can be corrected. Feel free to contribute, this is a group effort. You can use the “discussion” or talk pages to discuss changes to the current info or ask questions. <br> == '''We now have a Discord! Please [https://repo.doslabelectronics.com/misc/logicord.html click here] for the invite link.''' == <strong><span style="color:red">If you need any help</span></strong>, contact @cbax on discord or visit the [https://doslabelectronics.com/contact DosLab Electronics contact form]. [https://www.facebook.com/profile.php?id=100082550894310 David Roberts] is also available on Facebook, you can tag him in the [https://www.facebook.com/groups/MacBookLogicBoardRepair MacBook Repair Community] group. PLEASE SEND ME ANY FEEDBACK OR SUGGESTIONS YOU HAVE TO MAKE WIKI BETTER! <br /> =='''Categories'''== {| class="wikitable sortable" style="width:100%;" |- style="vertical-align:top;" | style="width:33%;border:none;" |{{#categorytree:Mac|depth=0}} | style="width:33%;border:none;" |{{#categorytree:iPhone|depth=0}} | style="width:33%;border:none;" |{{#categorytree:iPad|mode=all|depth=0}} |- style="vertical-align:top;" | style="width:33%;border:none;" |{{#categorytree:Troubleshooting_Guide|mode=all|depth=0}} | style="width:33%;border:none;" |{{#categorytree:Game_Consoles|mode=all|depth=0}} | style="width:33%;border:none;" | |} =='''All pages'''== {{Special:AllPages}} =='''Recent Contributions'''== {{Special:RecentChanges|limit=15|days=7}} =='''Top Users'''== {{Special:ContributionScores/10/180}} ==Special Thanks== Special thanks to Jonathan Zufi for his [http://iconicbook.com Iconic Book]! Its a cover to cover treasure for any Apple lover. [[File:Iconic Book 1.jpg|800x800px]] 9xcgefc15bj7xfq90lpturci3j1sacq Malware Removal 0 735 7547 7081 2024-07-19T04:31:51Z Miloh 918 Brief description of the Library folders, what type of information the folders hold. Also added a description of Browser malware 7547 wikitext text/x-wiki Steps 0-2 can and should be done on a booted testing drive/machine, not booted into the customers OS. (Preferably performed with the customer machine in target mode/share disk mode). It can still be done in the customers OS if necessary, but some programs may be more stubborn to remove. Steps 3-6 should be done in the customers OS. If you suspect malware is running when the user logs in you can start the computer in safe mode to disable auto launch programs. Applications and executables that load from LaunchAgents and LaunchDaemon plist files will be disabled. Malware can be installed to the system, root user, a user account, as an application or within a browser. There may be more variations such as profiles installed on the user account, or chrome being "managed by an organization." The Library folders are often the first locations to look at because they hold OS and application files used to run programs. Library/LaunchAgents and Library/LaunchAgents, either system or user-specific, will hold a plist file pointing to an executable or program that launches at user login. Most programs rely on this to start services, such as Microsoft's background AutoUpdater, Spotify, etc. You can preview or open in TextEdit one of these plist files and determine where the program resides. Using best judgement, either by the naming scheme: com.microsoft.xxx.plist or com.xjffiyc.plist looking suspicious, or the location of the program written in the plist file, you can remove these at your discretion though some programs may break until these are restored. Microsoft Office's background processes complain and do not restore if deleted. Most executable malware - programs that run on the computer as applications do, are located within Library/Application Support. Having "Show Hidden Files" enabled to see (dot). files and folders can sometimes reveal malware that is hiding as .xjffiyc. Executables should be located within their own folder and will have a black terminal preview image. Names that are unfamiliar can be noted as suspicious but shouldn't be removed by default. Malware often has a suspiciously vague name or some form of identifier that looks different from stock Application Support folder names, and/or executable names. In most cases executable malware is installed to the user library /Users/<current user>/Library but can be installed to the system's editable library: /Library. The system's non-writable library of /System/Library is generally unaffected unless System Integrity Protection has been disabled, or if it is an older operating system. The root user, seldom affected, has a folder of /private/var/root, with it's own Library folder, which can be checked manually if malware persists after re-login/reboot. Browsers are the most commonly affected items. Safari is usually safer because it's limited by Apple, in comparison to Chrome or Firefox. As a general checklist: extensions, plugins, startup pages, auto-complete search engines, browser-specific notifications, search history, and proxies, are good settings to check for each browser. Malware programs such as ClamXAV or Malwarebytes typically do not catch browser-specific malware. Extensions usually have a Chrome Web Store link which can be investigated to compare your suspicion to relative downloads, reviews, and ratings. Browsers that support different profiles may require you to check multiple profiles for all of these settings, as malicious settings may be specific to one profile. == '''Step 0: (optional)''' Use ClamXAV to speed things up a bit. == ===Install ClamXAV from official website=== *https://www.clamxav.com **Follow the instructions to add necessary items to security settings, making sure to allow the several entries. **The program will want to restart a few times during this process, proceed. *Select Macintosh HD under "drives" in the left-hand pane then click "Scan now" **Make sure to allow access to specific library/path popups that happen on newer systems while the scan runs **The scan can take upwards of several hours for disks with more than 300-500gb of data. **During the scan, you can choose to quarantine or delete the detected files **At the end of the scan, it's suggested to open the report view and screenshot/take a photo for client purposes. =='''Step 1:''' Clear Malicious Apps== ===Applications (Root)=== *Check for and remove anything weird **Install Mac **Webtools **MacKeeper **Tune My Mac **Clean My Mac ===Applications (User)=== *Navigate through Macintosh HD/Users/(user name)/Applications **Check for and remove anything weird. Remove Chromium and '''Opera''' if the customer does not know what those are. **Delete any MacCleaner type applications ===Shared (User)=== *Navigate through Macintosh HD/Users/Shared **Check for and remove anything weird. The only typical folders seen here are Adobe and audio libraries. =='''Step 2:''' Clear Directory Remnants== Finder (If on Sierra or newer use '''CMD+Shift+Dot''' to show hidden files, Does not work on El Cap or lower.) ==='''Library''' (Root)=== *Internet Plug-Ins **Do NOT remove these ***''Default browser.plugin'' ***''nslQTScriptablePlugin.xpt'' **Use best judgment for the rest *Launch Agents **Delete all except for Office and music programs. If there are questionable items, talk to the customer. This will only remove them from startup and will not break most programs. *Launch Daemons **Delete all except for Office and music programs. If there are questionable items, talk to the customer. This will only remove them from startup and will not break most programs. *Startup *Occassionally you will find additional remnants in Application Support files.  Delete any remnants associated with the files you removed but proceed with caution!   ==='''''User Library'''''=== '''<nowiki>*</nowiki>Note: to access hold option/alt key while under “GO” menu of finder if running newer OS;''' Otherwise, navigate through Macintosh HD/Users/(user name)/Library *Internet plug-ins **If there are any here they are probably bad ***Use best judgement *Launch Agents **Delete all except for Office and music programs. If there are questionable items, talk to the customer. This will only remove them from startup and will not break most programs. *Launch Daemons **Delete all except for Office and music programs. If there are questionable items, talk to the customer. This will only remove them from startup and will not break most programs. *Application Support - Same as library files above. *Startup =='''Step 3:''' Check Login Items== *Under system pref->users->login items **Delete anything that doesn’t need to run at start =='''Step 4:''' Clear Browser(s)== ==='''Safari''': Click Safari under menu. Then select preferences=== *Check home page **Reset to “google.com” if wonky **Check browser extensions/ add-ons ***Delete anything suspicious *Check search engines **Enable Quick Website Search -> "Manage Websites" ***Delete anything suspicious ==='''Firefox''': Click Firefox finder menu. Then select preferences=== *Check home page **Reset to “google.com” if wonky **Check browser extensions ***Click on the button with 3 parallel horizontal bars ***Select add-ons ****Delete anything suspicious *Check search engines **Go to settings -> Search ***Search Shortcuts ****Delete anything supicious ==='''Chrome''': Click Chrome from finder menu. Then select preferences=== *Under Appearance, make sure home page set to “google.com” *Click Extensions (top left) **Delete anything suspicious or anything non-google **At bottom of page click “Get more extensions” **See [[Cleaning Policies From Chrome|Cleaning Policies For Chrome]] for additional assistance if needed *Check search engines **Settings -> Search Engine -> Manage Search engines ***Investigate Search Engines and Site Search === All Browsers: Verify history when typing search === * If the malware was redirecting to a fake "search" website, the search history may be compromised. ** Scenario: customer searches by typing "search" in the address bar, but instead of google, anysearch appears from history. ** You might opt to wipe the search history, or search through history for keyword "search" which will help identify the malware ** If you see a suspicious website, you can then filter history by the website and remove all entries =='''Step 5:''' Check System Preferences== *Verify that no additional profiles have been added *If a profile has been added, remove it directly from system preferences. If unable to remove from system preferences, refer to Google search. *Check network settings to make sure there aren't any weird connections/devices/VPNs/proxies. =='''Step 7:''' Check Notifications!== *Some websites (legitimate and not) add annoying notifications. Often customers will click ok and add them without knowing. Clean notifications from browsers and/or talk to customers about turning off notifications in System Preferences for the browsers. =='''Step 6:''' Empty Trash and TEST!== *Reboot and recheck all browsers. They should have a legitimate home page and when using the search bar, should return a major search engine directly, like google. j5t8ka3g2sc32l3putftj9jvekxp3u1 Microscopes and Microscope Cameras 0 1743 5180 5148 2020-11-03T06:13:24Z OptimizeLogicRepair 243 5180 wikitext text/x-wiki -Recommended microscopes -What kind of scope do you need? -Recommended microscope cameras A good option: https://www.amscope.com/1080p-hdmi-digital-camera-for-standalone-and-pc-imaging.html -Do you need a microscope camera? ogwntecwlbysqhgd0z3qoo27t46727x Mojave Common Issues 0 141 562 411 2020-02-02T11:31:24Z Piernov 10 Category Mac 562 wikitext text/x-wiki == WiFi: No Hardware Installed, sluggish performance after Mojave upgrade == If your Mac is running slow and/or your WiFi hardware is missing after upgrading to macOS Mojave, You may have an exisiting incompatible config file from a previous version of Mac OSX. Deleting this file will speed up the operating system and restore Wi-Fi functionality. ''If you're booting from a usb drive, make sure to edit the file on the right volume.'' 1.  Start the terminal app from Applications/Utilities 2.  Check if the file exists, by typing ''    '' <code>ls -l /etc/sysctl.conf</code> If this returns a result like the following, then the file exists:   <code>-rw-r--r--  1 root  wheel 125 21 Nov  2016 /etc/sysctl.conf</code> If it does not, then your issues are caused by something else''   '' 3.  Rename the file:     <code>sudo mv /etc/sysctl.conf /etc/sysctl.conf.bak</code> 4.  Restart your computer, and you should be all set, or if you've rolled back to High Sierra, you should be good to attempt the upgrade again. <br /> == Messages Running slow after Mojave Upgrade == Your Mac can have a '''corrupted Contacts database'''. Signing out and back in to iCloud isn’t fixing anything because your Mac reusing its local database, and thinking that everything is up to date. Updating a contact is what “rebuilds” its entry, allowing it to be displayed. Try wiping your local cache to force your MacBook Pro to re-download all of your contacts from iCloud. # '''Sign out of iCloud'''. # Delete <code>~/Library/Application Support/AddressBook</code> # Delete <code>~/Library/Caches/com.apple.AddressBookSourceSync</code> # Delete <code>~/Library/Saved Application State/com.apple.AddressBook.savedState</code> # Delete <code>~/Library/Preferences/com.apple.AddressBook.plist</code> # Restart your Mac # Sign Back into iCloud Your contacts should all download fresh from iCloud. (Note: '''Steps 2 & 3''' are really the crucial ones, but the '''Contacts.app''' doesn’t have much in the way of preferences, so might as well be thorough.) [[Category:Mac]] ifabz9bqiy4nlij8tf0vyo165ipbyr0 Move iTunes or Music Library 0 736 1593 1564 2020-08-30T18:31:46Z Chrisb 1 Chrisb moved page [[Editing Move iTunes or Music Library]] to [[Move iTunes or Music Library]] without leaving a redirect 1564 wikitext text/x-wiki For Catalina - The process is the same but instead of "iTunes" folders you will be using "Music" Folder. # Encourage customer to back up their music prior to moving the library. # Check size of iTunes or Music library is to make sure that it fits in the location that you are moving it to (ie. external hard drive). To do this, right-click "Get Info" on the ~/UserName/Music folder or wherever the music is currently stored. # Plug in external drive and make sure to quit iTunes/Music if open. # Open Finder and select the Mac's hard drive. # Click on the Music Folder # Select iTunes and drag it to external hard drive. You may need to enter password. For Catalina, there is second folder named "Music" within the first Music folder. This is the one you will move. # Once folder is transferred, press the option key and launch iTunes/Music. # Click on Choose Library. # Select the external hard drive under devices in Finder sidebar. # Open iTunes or Music folder. # Check items in iTunes/Music to make this was successful (you can find info by right-clicking a song and selecting "Get Info" to verify where the file is stored). # If working, you can either delete the old iTunes/Music library on the internal drive. # The external MUST be connected when iTunes/Music is launched going forward in order to find the files. b673haqwy54sxj5y2dpqwmh2x9arjbj Multimeter 0 1690 5182 5181 2020-11-03T06:17:30Z OptimizeLogicRepair 243 5182 wikitext text/x-wiki -Just get a nice multimeter, non accurate measurements will only hurt you and your learning progress -Fine/needle point gold leads and their importance Good multimeter leads with sharp tips help with measuring tiny resistors without slipping and potentially causing a short. A good option is Probe Master brand. USA company based in California, top notch quality. cxjizpe21jqjpgu3gt7z7t97oz2ucgt NAND Compatibility 0 530 1159 1158 2020-05-01T14:22:15Z Dusten04 30 1159 wikitext text/x-wiki <br /> ==32/64bit NAND (ALL CROSS COMPATIBLE) LGA60== ===Programmer Needed: NaviPlus=== iPhone 5 iPhone 5s iPhone 5c iPhone 6 iPhone 6 Plus iPad Air 1 iPad Air 2 iPad Mini 1 iPad Mini 2 iPad Mini 3 iPad Mini 4 <br /> ==PCI-E NAND: (ALL CROSS COMPATIBLE)== ===Programmer Needed: P7=== iPhone 6s iPhone 6s Plus iPhone 7 iPhone 7 Plus iPhone SE (2016) iPad 5 iPad 6 iPad 7 iPad Pro 12.9 1st Generation iPad Pro 12.9 2nd Generation iPad Pro 9.7 iPad Pro 10.5 <br /> ==PCI-E 2: (ALL CROSS COMPATIBLE)== ===Programmer Needed: P11=== iPhone 8 iPhone 8 Plus iPhone X ==Newer Models: (ALL CROSS COMPATIBLE)** READ DISCLAIMER**== ===Programmer Needed: P11=== iPhone XS iPhone XS Max iPhone XR iPhone 11 iPhone 11 Pro iPhone 11 Pro Max iPad Pro 12.9 3rd Generation iPad Pro 12.9 4th Generation iPad Pro 11 1st Generation iPad Pro 11 2nd Generation <nowiki>*</nowiki>DISCLAIMER: If iPad Pro came with Black NAND, it will work with Silver NAND, but may cause issue. If iPad Pro came with Silver NAND, it will work with Black and Silver d45rnf480mkgdp49n7k8g1ducfkyiag NVRAM 0 1432 3164 2020-10-10T22:11:36Z QuiveryNut 206 Created basic page for NVRAM 3164 wikitext text/x-wiki Similar to PRAM Key Combination: Option + Command + P + R Stands for "Non-volatile Random-Access Memory", NVRAM is Random-Access Memory that stores information that's accessed during boot even before the OS X bootloader kicks in. NVRAM stores information for Volume, screen resolution, time zone information, and which disk to boot from. Corrupt NVRAM can cause glitches and prevent the machine from booting, and while clearing it may not solve the problem, its always a good first step. 9v1wpvkt2ec9mpx03ak7i9gpjpqekus Nintendo Switch 0 2107 6327 2022-01-08T05:29:17Z Alpha Bravo Tech. 538 Created page with "Nintendo Switch info here [[Category:Game Consoles]]" 6327 wikitext text/x-wiki Nintendo Switch info here [[Category:Game Consoles]] 38ys70vgki6n3fbkwl10vrjybdqvhwx Nintendo Switch Lite 0 2108 6328 2022-01-08T05:29:38Z Alpha Bravo Tech. 538 Created page with "Nintendo Switch Lite info here [[Category:Game Consoles]]" 6328 wikitext text/x-wiki Nintendo Switch Lite info here [[Category:Game Consoles]] g9hvfcj7qfsko7236suzhykasdz0mdm Older MacBook Power up Sequence 0 20 7094 802 2024-05-03T06:35:48Z Acro 1133 Link PPBUS_G3H 7094 wikitext text/x-wiki 2008 [https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/systems-without-suspend-supply-paper.pdf document] from intel about power states. Notes: 1. An always-on PP3V42_G3H 3.42V power rail is created directly from internal battery or a charger. This power rail powers the System Management Controller (SMC). The Mac is in “off mode" (G3) but the SMC keeps scanning the keyboard power-on button and Magsafe connector for further inputs. 2. If you connect Magsafe to the Mac, the SMC will read code from the chip on the Magsafe connector to identify the type of charger connected. The charger outputs a pre-set voltage (14.5/16.5/18.5/20) 1 second after the connection is stabilized and the charger type is identified. The green light then turns on. The charging circuit will receive power from Magsafe. A power management chip will create a [[PPBUS_G3H]] power rail, operating at 12.6V for MBP and 8.4V for MBA and Retina. The SMC reads the chip on the battery to check the battery status and therefore determine the required charging current. If the battery is empty then a high current will be applied (fast charging mode).The current will be gradually reduced when the battery is near full. The orange light turns on while battery is being charged. Once the battery is fully charged, the green light will turn on again and no current will be sent to the battery. 3. When you press the power-on button then release it, a high-low-high pulse will be sent to SMC. SMC will enable a power management chip to create a 3.3V power rail from the PPBUS_G3H rail. This rail powers up Intel’s Platform Controller Hub’s (PCH) real-time clock circuit, deep sleep power well, and suspend power well. PCH will enable the remaining power management chips to create different voltage rails (5.0V, 1.8V, 1.5V, 1.35V, 1.2V, 1.05V, 0.9V, etc. depending on hardware design) for different devices. All these power rails can be measured on the inductors (coil). Since more than 50% of faulty logic boards are related to one or more missing power rails, this information will be helpful if you decide to get it fixed by a component level repairer. 4. The memory module (RAM) will receive power first followed by the CPU, hard drive, optical drive, graphics chip, screen, sound chip, and WiFi card. DDR3 RAM will receive the 1.5V power rail (1.35V for low voltage DDR3). Mechanical hard drives and optical drives will receive the 3.3V and 5V rails. SSD drives will receive the 3.3V rail only. CPU and GPU core power rails are dynamic depending on load. 5. All power rails report to the SMC by sending PG (power good) signals. If any one of these rails fail to send a PG signal within a pre-set time, the SMC would shut down all power rails except the always-on PP3V42_G3H 3.42V rail and PPBUS_G3H 12.8V/8.4V rail. Multiple voltage and current sensing circuits, in addition to other protective circuits are implemented in the MacBook logic board as safety measures. Malfunction of any one of these circuits can shut down all power rails to protect the MacBook. This is the reason why MacBooks are much harder to repair than other laptop brands. If all the power rails are fine, SMC will report to PCH and it will send a “reset” signal to the CPU. 6. Upon receiving the reset signal, the CPU will load BIOS/EFI codes (hardware specific codes stored in the ROM chip) to the memory module and execute POST (Power-On-Self-Test). After POST, all devices including the hard drive, optical drive, USB, sound card, WiFi and GPU will be initialized and ready to go. 7. The GPU will read the code chip on the LVDS (Low Voltage Differential Signalling) or eDP (Embedded Display Port) screen circuits for resolution setting and switches on the screen image processing logic circuit and back-light circuit. The Mac will chime at the same time as screen back-light turns on. If you hear a chime but no image on the screen, shine a touch from the back of the screen through the Apple logo and if you can see the image, then the Mac has back-light problem. You may have a faulty screen (LED light or cable fault) or faulty back-light circuit on the logic board. Apple puts the back-light circuit on the logic board instead of on the screen as other brand names do. This is the major reason why other screen brands cannot be used on MacBook. This design also makes MacBook particularly vulnerable to water damage. Water can kill the 28V-50V back-light circuit instantly. 8. The CPU starts and executes BIOS/EFI’s PnP (Plug and Play) codes to allocate resources such as DMA channels, I/O port address and IRQs. 9. The CPU then executes BIOS/EFI’s input/output codes to access bootable devices such as hard drives, optical drives or USB drives, searching for an operating system loader. If no bootable drive is found or the bootable drive does not have a loader, a question mark will be displayed. If a loader is found, the Apple logo will be displayed. The CPU then executes the loader and loads the rest of Apple’s OSX software into your Mac. You will see a loading progress bar while OSX loads (older OS X uses a rotating gear image). 10. The loader loads the core OSX first followed by application and hardware drivers. MacBooks with graphics issues usually start going wrong at 2/3rds of the loading progress bar, corresponding to the moment the graphics driver is being loaded and executed. 11. Upon finishing loading, control is passed to OSX. [[Category:Mac]] [[Category:MacBook]] 0otr1t3v3cujdpic3srkwl7aech0b1f Option ROM 0 1434 3167 2020-10-10T22:25:18Z QuiveryNut 206 Created basic page for Option ROM pulled from Wikipedia 3167 wikitext text/x-wiki An '''Option ROM''' is a piece of [[wikipedia:Firmware|firmware]] that resides in BIOS or on an expansion card, which gets shadowed into memory and executed to initialize the device and register it with the BIOS. It is essentially a driver that interfaces between BIOS services and hardware. === <u>UEFI Option ROMs</u> === The PCI spec allows multiple option ROM images on the same device. These option ROMs could be Legacy x86 & UEFI. If the Option ROM format is set to "UEFI Compatible" in the UEFI Setup, the DXE stage will load the newer UEFI Option ROM if one is present and the legacy Option ROM if one is not. UEFI can use legacy option ROMs when a [[wikipedia:Compatibility_support_module|Compatibility Support Module]] (CSM) is enabled. Note that when [[wikipedia:Secure_Boot|Secure Boot]] is enabled, execution of the Compatibility Support Module and legacy Option ROMs is prohibited because legacy firmware drivers do not support authentication, which is a security threat. See [[wikipedia:Option_ROM|Wikipedia]] for more g9um7sb33i40ek3nqkewwv15imc5bld Oscilloscope 0 1691 5040 2020-10-17T20:14:58Z JamesGilligan 200 Created page with "-Do you need one? -Price brackets and quality" 5040 wikitext text/x-wiki -Do you need one? -Price brackets and quality 6xsw3jm2cdpniw6icowwc9pd6fb5stl PM SLP S4 L Timing 0 2130 6385 2022-02-02T17:42:50Z Chrisb 1 Chrisb moved page [[PM SLP S4 L Timing]] to [[PM SLP S4 L Timing Troubleshooting]]: searchablity 6385 wikitext text/x-wiki #REDIRECT [[PM SLP S4 L Timing Troubleshooting]] 97liwclo86o43gxjj6uuse58evup79l PM SLP S4 L Timing Troubleshooting 0 19 6384 6383 2022-02-02T17:42:50Z Chrisb 1 Chrisb moved page [[PM SLP S4 L Timing]] to [[PM SLP S4 L Timing Troubleshooting]]: searchablity 6383 wikitext text/x-wiki {{DISPLAYTITLE:PM_SLP_S4_L Troubleshooting}} PM_SLP_S4_L Apple Mac Logic Board Signal Timing Discussion<br><br> When will the CPU or PCH shoot out the PM_SLP_S4_L signal?<br><br> This question burdens a lot of component level repair technicians. This article discusses the prerequisites that must be met before the Intel CPU/PCH outputs PM_SLP_S4_L. Once you understand the timing, missing PM_SLP_S4_L signal is not hard to deal with.<br><br> There are two sets of PM_SLP_S4_L prerequisites. Intel 1st to 5th generation CPUs use the same set of prerequisites called 11+1 conditions. Intel 6th generation onward CPUs use a different set of prerequisites called 13+1 conditions (discuss in a separate article). Intel and Apple use a different naming system. We use the Apple naming system by default. Since Apple uses different names referring to the same Intel CPU/PCH signal in different models, we use MacBook Air 2013 A1466 Haswell-ULT CPU 820-3437 schematics here as an example.<br><br> Intel 1st to 5th generation CPUs 11+1prerequisites for PM_SLP_S4_L:<br><br> 1. PPVRTC_G3H (VCCRTC) – Intel naming system<br> 2. RTC_RESET_L (RTCRST#)<br> 3. PCH_SRTCRST_L (SRTCRST#)<br> 4. PCH_INTVRMEN_L (INTVRMEN)<br> 5. PCH_DSWVRMEN_L (DSWVRMEN)<br> 6. SYSCLK_CLK32K_RTCX1 (RTCX1)<br> 7. PP3V3_S5 (VCCDSW3-3)<br> 8. PM_DSW_PWRGD (DPWROK)<br> 9. PP3V3_SUS (VCCSUS3)<br> 10. PM_BATLOW_L (BATLOW#)<br> 11. PM_RSMRST_L (RSMRST#)<br> +1. PM_PWRBTN_L (PWRBTN#)<br> If PM_SLP_S4_L missing, we need to check these before replacing the CPU/PCH.<br> 1. PPVRTC_G3H (VCCRTC) real-time clock circuit power supply. 3.3V ok<br> 2. RTC_RESET_L (RTCRST#) real-time clock circuit reset. 3.3V ok<br> 3. PCH_SRTCRST_L (SRTCRST#) secondary real-time clock circuit reset. 3.3V ok<br> 4. PCH_INTVRMEN_L (INTVRMEN) internal voltage regulators 1.05V and 1.5V enable. 3.3V ok<br> 5. PCH_DSWVRMEN_L (DSWVRMEN) deep sleep well(power) voltage regulator enable. 3.3V ok<br> 6. SYSCLK_CLK32K_RTCX1 (RTCX1) 32khz clock for RTC circuit. Measured by an oscilloscope.<br> 7. PP3V3_S5 (VCCDSW3-3) deep sleep well (power rail) present. 3.3V ok<br> 8. PM_DSW_PWRGD (DPWROK) deep sleep well not only present but also stable(OK). 3.3V ok<br> 9. PP3V3_SUS (VCCSUS3) suspended mode(shallow sleep mode) power rail present. 3.3V ok<br> 10. PM_BATLOW_L (BATLOW#) if the battery voltage is NOT low, or no battery is connected, SMC will output 3.3V to inform CPU/PCH. 3.3V ok<br> 11. PM_RSMRST_L (RSMRST#) stands for “resume reset”, the system is ready for resuming from suspended mode (from shallow sleep mode to wake up). 3.3V ok<br> 12. PM_PWRBTN_L (PWRBTN#) power button on/off. If the logic board is connected to the battery only, you need to press the power button on the keyboard to send a high-low-high pulse to the CPU/PCH (via SMC). If you connect the logic board to the charger only without connecting the battery, once SMC receives the SMC_BC_ACOK from charging circuit power management IC u7100, SMC will output SMC_ADAPTER_EN (ACPRESENT). In this case, the signal SMC_ADAPTER_EN will act as the same as PM_PWRBTN_L. In other words, the PM_PWRBTN_L is not always a “must" in some situation. It is why we call it “+1" condition. When the 11 prerequisites are met, once you press the power button (PM_PWRBTN_L) or connect a charger to the logic board (SMC_ADAPTER_EN), CPU/PCH will shoot out PM_SLP_S5_L, PM_SLP_S4_L and PM_SLP_S3_L to enable S4, S3 and S0 state power rails.<br><br> In most models, Apple does not utilise PM_SLP_S5_L, just feedback this signal to SMC and that is all. PM_SLP_S4_L will enable the S3 state power rails including the memory module power rail. PM_SLP_S3_L will enable the rest S0 state power rails. [[Category:Mac]] rglirqov8kln4vybvuk4tsvqfbf6kr1 PP3V42 G3H 0 51 565 333 2020-02-02T11:32:01Z Piernov 10 Category Mac MacBook 565 wikitext text/x-wiki {{DISPLAYTITLE:PP3V42_G3H}} PP3V42_G3H takes power from either the DC in or battery through a three legged SOT dual diode. It creates 3.42V from either source. It is used to power the circuits needed to create the [[S5]] power rail. The SMC and inrush/charging circuits use PP3V42_G3H as does the [[one-wire]] circuit. Without this rail you will not get a charger light. Check this first if you have no charger light with an [[OEM charger]]. ==Troubleshooting== Check for a [[short to ground]] on the output side of this [[power rail]] after the [[inductor]]. If there is a short you can [[inject voltage]] to find the component that gets hot. If there is no short test the input and [[SHDN]] pins. The SHDN pin is fed through a [[resistor]] from [[VIN]]. After that test all the [[passive components]] around the [[buck converter]]. The [[voltage divider]] between output, feedback, and ground is used to keep the output as close to 3.42V as possible. If either resistor is out of spec, the voltage will be off. If everything looks good, replace the chip. [[Category:Mac]] [[Category:MacBook]] iztjz7nnhribrf7g4xrdk9hy0ajcw8q PPBUS G3H 0 2271 7095 2024-05-03T06:36:06Z Acro 1133 Redirected page to [[PPBus G3H]] 7095 wikitext text/x-wiki #REDIRECT [[PPBus_G3H]] hpgnjgjy893567cjbpxqtubkby6w4x5 PPBus G3H 0 50 7100 7099 2024-05-03T06:38:16Z Acro 1133 Fix glitch 7100 wikitext text/x-wiki {{DISPLAYTITLE:PPBus_G3H}} PPBus_G3H is the main power rail of the Mac. It is powered from either the battery or DC in. Its voltage will be based off how many battery cells are in series. The MacBook Pro series uses a 3S2P battery so on the charger it has a PPBus of 12.6V (12.2V before [[SMC]] boosts). The Air has a 2S3P battery so on the charger it has a PPBus of 8.6V (8.2 before boosting). This is to charge the battery, which will have a lower voltage than PPBus<br>Note : older Air have a lower PPBUS_G3H, at 8.4V.<br> PPBus voltage on the battery will equal the current voltage of the battery. It is enabled from a MOSFET controlled by an ISL62xx through a current sensing resistor. This circuit controls how quickly the battery charges. If any of those components are damaged it may not run off battery or charge.<br><br> The [[ISL]] that creates PPBus is powered from [[PP3V42_G3H]]. This rail is created either from the charger or battery. Since it is [[G3H]] rail it is always on when the Mac has power. All the power rails are created from this. Always check for [[#PPBus_Shorts]] when you do not have full PPBus voltage. ==PPBus Current Sense== Measure resistance of the current sensing circuit at the PPBus Supply and Battery Charging chip. It is typically an ISL62xx. <br> Pins 17/18 measure the battery charging/discharging current.<br> Pins 27/28 measure the charger input current.<br> Use the schematic to verify total resistance by adding the current sense resistor value and the value of the resistor on each pin. <br> If the resistance is off by more than 10% check the individual passive components. Remember to account for the resistance of your leads<br> <br> [[MOSFETs|How to test MOSFETs]] ==PPBus Shorts== Injecting 5V on PPBUS_G3H with a shorted high-side MOSFET = melting CPU/GPU/PCH So no, it is ABSOLUTELY NEVER safe to inject a high voltage on this kind of rail. First you have to check exact resisntace to ground, can give an indication if it's a full short on the rail, or a partial short through a MOSFET. If a partial short through a MOSFET is suspected, you have to find it first, so check resistance to ground on all the inductors, if there is a similar value check resistance between that inductor and the main power rail. If that gives an almost 0ohm resistnace there is a high-side MOSFET shorted that you have to remove first. Otherwise always start at 1V and check if any large BGA is heating up first. If 1V is not enough to generate heat (remember that it's the power which is voltage times current that generates heat, not the voltage or the current alone) then you can try increasing little by little, checking again if any large BGA heats up. Better be on the safe side, even if a shorted high-side MOSFET almost always means a dead BGA chip on newer platforms. [5:31 PM] piernov: Let's take a concrete example: I'm working on an Haswell platform, I suspect a short to ground on main power rail because it is missing, I measure resistance to ground and I get 50 ohms. What can I conclude? This is a partial short, injecting voltage is not necessarily helpful in those cases, and it sounds like the resistance of CPU VCore. So I check resistance of CPU VCore to ground and I get 50 ohms as well. Then I check resistance between main power rail and CPU VCore and I get 0 ohm. Only then I can rightfully conclude I have a shorted high-side MOSFET on CPU VCore and I should not inject voltage but replace all high-side MOSFETs and their driver/controller (CPU is probably dead anyway though). [5:34 PM] piernov: Now, same platform, still suspecting a short to ground, but I measure 0.3 ohm to ground. Then this is a full short to ground, and it is unlikely any other power rails is measuring 0.3 ohm short to ground, so it is unlikely that I have a shorted high-side MOSFET. I don't have to waste my time measuring resistance between main power rail and each inductor. I can start by injecting 1V on the main power rail, monitoring current to know what power it is dissipating, and trying to locate the component that heats up, but still checking CPU/GPU/PCH first, you never know… If the power is not enough, I can slowly increase the voltage until I get a satisfying power dissipation (let's say 3W). [5:35 PM] piernov: This 2 to 5 basic measurements with the multimeter to know what's happening, before injecting voltage, before any soldering, before destroying the board. And it takes a minute to do at worst. [[Category:Mac]] [[Category:MacBook]] g4iwhmzdnkeb827oas5ackwp4v1i15c PRAM 0 1431 5421 3179 2020-12-25T01:27:07Z Joesipaq 20 Added link to reset 5421 wikitext text/x-wiki Stands for "Parameter Random Access Memory," and is pronounced "P-ram." PRAM is a type of memory found in Macintosh computers that stores system settings. These settings include display settings (like screen resolution and color depth), the time zone setting, speaker volume, and the startup volume choice. The system settings that are stored in the computer's PRAM differ from Mac to Mac, but the purpose of the memory remains the same. PRAM resetting a Mac is extremely important when processing for resale. The Find My Mac token is stored in PRAM. To preform a PRAM reset, visit [[Startup_Keys#PRAM_Reset:|here - PRAM Reset]] d0708ydcdvm3xwf5ddu1iqjb6061ieg Playstation 4 0 2104 6405 6404 2022-02-07T06:17:49Z Alpha Bravo Tech. 538 6405 wikitext text/x-wiki '''<big>Diode Mode Readings Around Southbridge on PS4 Pro NVG-002</big>''' <br />[[File:Diode Mode Readings Around Southbridge on PS4 Pro NVG-002 BACK.jpg|none|thumb|Diode Mode Readings Around Southbridge on PS4 Pro NVG-002 BACK]] [[File:Diode Mode Readings Around Southbridge on PS4 Pro NVG-002 FRONT.jpg|none|thumb|alt=|Diode Mode Readings Around Southbridge on PS4 Pro NVG-002 FRONT]] [[Category:Game Consoles]] mn3te1jnfd4nwdur1x2ax7wu06ng1xe Playstation 5 0 2106 7093 6326 2024-05-02T04:08:20Z Acro 1133 Add much needed punctuation 7093 wikitext text/x-wiki Playstation 5 info here. [[Category:Game Consoles]] qb49e5gjfc31a1qc9csmcpk3mhjb9fc Power On Pads 0 102 2915 2914 2020-10-03T15:32:31Z Chrisb 1 2915 wikitext text/x-wiki {{Mbox|text=A power button press can be simulated by shorting these two pads. A conductive pair of tweezers or a screwdriver tip will work.}} MacBook Pro Unibody https://beetstech.com/blog/where-are-macbook-pro-unibody-power-on-pads-located MacBook Air https://beetstech.com/blog/macbook-air-power-pads Macbook A1534 It's hard to get access to SMC_ONOFF_L on these machines. To test keyboard functionality, these test points are useful. [[File:A1534 SMC ONOFF Trackpad Test point.jpg|thumb|alt=|none|400x400px]] Power button test point on the keyboard backside, under the black film (No continuity to SMC_ONOFF_L) [[File:SMC ON OFF Keyboard TP.jpg|none|thumb| 400x400px]] And the power pads are located here on the board: [[File:SMC ONOFF L POWERPAD TOP.jpg|none|thumb| 400x400px]] [[File:SMC ONOFF L POWERPAD BOTTOM.jpg|none|thumb| 400x400px]] <br /> [[Category:Mac]] [[Category:MacBook]] 9j6zrkqaasv9gqmg5cood38t93o77xe Power Rail List 0 1920 5711 5708 2021-04-01T10:59:31Z Piernov 10 typos 5711 wikitext text/x-wiki ==A1278== ===820-3115=== {| class="wikitable" |+ ! colspan="7" |[[File:Optimize Logic Repair.png]] |- ! colspan="7" |'''Model # A1278 - 820-3115''' |- | | |Normal | | | |Normal |- |"G3Hot" Rails |PPBUS_G3H |12.6V | |ENET Rails |PP3V3_ENET |3.3V |- | |PPBUS_S5_HS_COMPUTING_ISNS |12.6V | | | | |- | |PPBUS_S5_HS_OTHER_ISNS |12.6V | |"FW" Firewire Rails |PPVP_FW |12.8V |- | |PPDCIN_G3H |18.5V | | |PP3V3_FW_FWPHY |3.3V |- | |PP3V42_G3H |3.42V | | |PP1V0_FW_FWPHY |1.0V |- | |PPVRTC_G3H |3.3V | | | | |- | | | | |T29 Rails |PP15V_T29 |17.8V |- |5V Rails |PP5V_S5 |5.0V | | |PP3V3_T29 |3.3V |- | |PP5V_SUS |5.0V | | |PP1V05_T29 |1.05V |- | |PP5V_S3 |5.0V | | | | |- | |PP5V_S0 |5.0V | |1V05 S0 LDO |PP1V05_S0_PCH_VCCADPLL |1.05V |- | |PP5V_S0_HDD |5.0V | | | | |- | | | | |Chipset "VCore" Rails |PPVCORE_S0_CPU |1.25V |- | | | | | |PPVCORE_S0_AXG |1.05V |- |3.3V Rails |PP3V3_S5 |3.3V | | |PP1V5_S3_CPU_VCCDQ |1.5V |- | |PP3V3_SUS |3.3V | | |PP1V05_S0_CPU_VCCPQE |1.05V |- | |PP3V3_S4 |3.3V | | |PP1V8_S0_CPU_VCCPLL_R |1.8V |- | |PP3V3_S3 |3.3V | | | | |- | |PP3V3_S0 |3.3V | | | | |- | | | | | | | |- |1.8V/1.5V/ 1.2V/1.05V Rails |PP1V8_0 |1.8V | | | | |- | |PP1V5_S3_DDR |1.5V | | | | |- | |PP1V5_S3 |1.5V | | | | |- | |PP1V5_S3RS0 |1.5V | | | | |- | |PP1V5_S0 |1.5V | | | | |- | |PPVTTDDR_S3 |0.75V | | | | |- | |PP0V75_S0_DDRVTT |0.75V | | | | |- | |PPVCCSA_S0_CPU |0.9V | | | | |- | |PP1V05_S0 |1.0V | | | | |- | |PP1V05_S0_PCH |1.0V | | | | |} ==A1297== ===820-2914=== {| class="wikitable sortable mw-collapsible" ! colspan="7" |[[File:Optimize Logic Repair.png]] |- ! colspan="7" |'''Model # A1297 - 820-2914''' |- | | |Normal | | | |Normal |- |"G3Hot" Rails |PPBUS_G3H |12.6V | |1.5V/1.05V Rails |PP1V5_S0 |1.5V |- | |PPVIN_S5_HS_COMPUTING_ISNS |12.6V | | |PP1V2_S0 |1.2V |- | |PPVIN_S5_HS_OTHER_ISNS |12.6V | | |PP1V05_SUS |1.05V |- | |PPVIN_S5_HS_GPU_ISNS |12.6V | | |PP1V05_S0 |1.05V |- | |PP3V42_G3H |3.42V | | | | |- | |PPVRTC_G3H |3.42V | |Chipset Rails |PPVCORE_S0_CPU |1.1V |- | | | | | |PPVCORE_S0_AXG |1.02V |- |5V Rails |PP5V_S5 |5.0V | | |PPVCCSA_S0_CPU |0.9V |- | |PP5V_S3 |5.0V | | |PP1V5_S3_CPU_VCCDQ |1.5V |- | |PP5V_S3_ISNS_R |5.0V | | |PP1V05_S0_CPU_VCCPQE |1.05V |- | |PP5V_S0 |5.0V | | | | |- | |PP5V_S0_ISNS_R |5.0V | |ENET Rails |PP3V3_ENET |3.3V |- | |PP5V_SUS |5.0V | | |PP1V2_ENET |1.2V |- | | | | | | | |- |3.3V/1.8V Rails |PP3V3_S5 |3.3V | |T29 Rails |PP3V3_T29 |3.3V |- | |PP3V3_S4 |3.3V | | |PP1V05_T29 |1.05V |- | |PP3V3_S5_ISNS_R |3.3V | | |PP15V_T29 |15V |- | |PP3V3_SUS |3.3V | | | | |- | |PP3V3_S3 |3.3V | |DDR Rails |PP1V5_S3 |1.5V |- | |PP3V3_S3_ISNS_R |3.3V | | |PP1V5_S3RS0 |1.5V |- | |PP3V3_S0 |3.3V | | |PP1V5_S3RS0_CPUDDR |1.5V |- | |PP1V8_S0 |1.8V | | |PPVTTDDR_S3 |0.75V |- | |PP1V8_S0_CPU_VCCPLL_R |1.8V | | |PP0V75_S0_DDRVTT |0.75V |- | | | | | | | |- |"FW" Firewire Rails |PPVP_FW |12.6V | |GPU Rails |PPVCORE_GPU |1.5V |- | |PP3V3_FW_FWPHY |3.3V | | |PP3V3_S0GPU |3.3V |- | |PP1V0_FW_FWPHY |1.0V | | |PP1V5_S0GPU_ISNS_R |1.5V |- | | | | | |PP1V5R135_GPU_FB_ISNS |1.5V |- | | | | | |PP1V0_S0GPU_ISNS_R |1.0V |- | | | | | |PP1V0_S0GPU_ISNS_R |1.0V |- | | | | | |PP1V8_S0GPU |1.8V |} ==A1466== ===820-3437=== {| class="wikitable" |+ ! colspan="7" |[[File:Optimize Logic Repair.png]] |- ! colspan="7" |'''Model # A1466 - 820-3437''' |- | | |Normal | | | |Normal |- |"G3Hot" Rails |PPBUS_G3H |12.6V | |ENET Rails |PP3V3_ENET |3.3V |- | |PPBUS_S5_HS_COMPUTING_ISNS |12.6V | | | | |- | |PPBUS_S5_HS_OTHER_ISNS |12.6V | |"FW" Firewire Rails |PPVP_FW |12.8V |- | |PPDCN_G3H |18.5V | | |PP3V3_FW_FWPHY |3.3V |- | |PP3V42_G3H |3.42V | | |PP1V0_FW_FWPHY |1.0V |- | |PPVRTC_G3H |3.3V | | | | |- | | | | |T29 Rails |PP15V_T29 |17.8V |- |5V Rails |PP5V_S5 |5.0V | | |PP3V3_T29 |3.3V |- | |PP5V_SUS |5.0V | | |PP1V05_T29 |1.05V |- | |PP5V_S3 |5.0V | | | | |- | |PP5V_S0 |5.0V | |1V05 S0 LDO |PP1V05_S0_PCH_VCCADPLL |1.05V |- | |PP5V_S0_HDD |5.0V | | | | |- | | | | |Chipset "VCOR" Rails |PPVCORE_S0_CPU |1.25V |- | | | | | |PPVCORE_S0_AXG |1.05V |- |3.3V Rails |PP3V3_S5 |3.3V | | |PP1V5_S3_CPU_VCCDQ |1.5V |- | |PP3V3-SUS |3.3V | | |PP1V05_S0_CPU_VCCPQE |1.05V |- | |PP3V3_S4 |3.3V | | |PP1V8_S0_CPU_VCCPLL_R |1.8V |- | |PP3V3_S3 |3.3V | | | | |- | |PP3V3_S0 |3.3V | | | | |- | | | | | | | |- |1.8V/1.5V/ 1.2V/1.05V Rails |PP1V8_0 |1.8V | | | | |- | |PP1V5_S3_DDR |1.5V | | | | |- | |PP1V5_S3 |1.5V | | | | |- | |PP1V5_S3RS0 |1.5V | | | | |- | |PP1V5_S0 |1.5V | | | | |- | |PPVTTDDR_S3 |0.75V | | | | |- | |PP0V75_S0_DDRVTT |0.75V | | | | |- | |PPVCCSA_S0_CPU |0.9V | | | | |- | |PP1V05_S0 |1.0V | | | | |- | |PP1V05_S0_PCH |1.0V | | | | |} ===820-00165=== {| class="wikitable" |+ ! colspan="7" |[[File:Optimize Logic Repair.png]] |- ! colspan="7" |'''Model # A1466 - 820-00165''' |- | | |Normal | | | |Normal |- |"G3Hot" Rails |PPBUS_G3H |8.6V | |LCDBKLT Rails |PPHV_S0SW_LCDBKLT |50V |- | |PPBUS_S5_HS_COMPUTING_INS |8.6V | | | | |- | |PPBUS_S5_HS_OTHER_ISNS |8.6V | |TBT Rails |PP15V_TBT |17.8V |- | |PPDCIN_G3H_ISOL |18.5V | | |PP3V3_TBTLC |3.3V |- | |PPDCIN_G3H |18.5V | | |PP1V05_TBTCIO |1.05V |- | |PP3V42_G3H |3.42V | | |PPVIN_SW_TBTBST |12.8V |- | |PPVRTC_G3H |3.0V | | | | |- | | | | |CPU "VCORE" Rails |PPVCC_S0_CPU |1.8V |- |5V Rails |PP5V_S5 |5.0V | | | | |- | |PP5V_S4RS3 |5.0V | | | | |- | |PP5V_S0 |5.0V | | | | |- | | | | | | | |- |3.3V Rails |PP3V3_S5 |3.3V | | | | |- | |PP3V3_S4 |3.3V | | | | |- | |PP3V3_SUS |3.3V | | | | |- | |PP3V3_S3 |3.3V | | | | |- | |PP3V3_S0 |3.3V | | | | |- | |PP3V3_S4SW_SNS |3.3V | | | | |- | |PP3V3_S0SW_SSD |3.3V | | | | |- | |PP3V3_S4_TBTAPWR |3.3V | | | | |- | | | | | | | |- |1.8V/1.5V/ 1.2V/1.05V Rails |PP1V8_S3 |1.2V | | | | |- | |PP1V2_S3 |1.2V | | | | |- | |PP1V05_SUS |1.05V | | | | |- | |PP1V5_S0 |1.5V | | | | |- | |PP0V6_S0_DDRVTT |0.75V | | | | |- | |PP1V05_S0 |1.05V | | | | |- | |PP1V05_S0SW_PCH_HSIO |1.05V | | | | |} ==A1706== ===820-00239=== {| class="wikitable" |+ ! colspan="7" |[[File:Optimize Logic Repair.png]] |- ! colspan="7" |'''Model # A1706 - 820-00239''' |- | | |Normal | | | |Normal |- |PBUS Rails |PPBUS_G3H |13.1 V | | |PP1V8_S4 |3.3 V |- | |PPBUS_HS_CPU |13.1 V | | |PP1V8_S3 |1.8 V |- | |PPBUS_HS_OTHSV |13.1 V | | |PP1V8_S3_MEM |1.8 V |- | |PPBUS_HS_OTH3V3 |13.1 V | | |PP1V8_S0 |3.3 V |- | |PPBUS_S4_HS_TPAD |13.1 V | | | | |- | | | | |1V0 Rails |PP1V0_SUS |1.0V |- |3V3 G3H Rails |PP3V3_G3H |3.3 V | | |PP1V0_SUSSW |1.0V |- | |PP3V3_G3H_SMC_ISNS |3.3 V | | |PP1V0_S3 |1.0V |- | | | | | |PP1V0_S0SW |1.0V |- |RTC Rails |PP3V0_G3H |3.0 V | |5V Rails |PP5V_S5 | |- | | | | | |PP5V_S4 |5.0 V |- |IMVP Rails |PPVCC_S0_CPU |1.5 V | | |PP5V_S4SW |5.0 V |- | |PPVCCSA_S0_CPU |1.5 V | | |PP5V_S4SW_ISNS |5.0 V |- | |PPVCCGT_S0_CPU |1.5 V | | |PP5V_S0 |5.0 V |- | | | | | |PP5V_S0_KBD |5.0 V |- |CPU VCCIO Rails |PPVCCIO_S0_CPU |0.95 V | | | | |- | | | | |3V3 Rails |PP3V3_S5 |3.3 V |- |CPU EDRAM Rails |PPVCCEDRAM_S0_CPU |1.05 V | | |PP3V3_SUS |3.3 V |- | | | | | |PP3V3_S4 |3.3 V |- |PCH Prime Core Rails |PPVCCPRIMCORE_SUS_PCH |1.0 V | | |PP3V3_TBT_X_S0 | |- | | | | | |PP3V3_TBT_T_S0 | |- |0V6 Rails |PP0V6_S0_DDRVTT |0.6 V | | |PP3V3_S4_BT |3.3 V |- | |PP0V6_S3_MEM_VREFDQ_A |0.6 V | | |PP3V3_S4_TPAD |3.3 V |- | |PP0V6_S3_MEM_VREFCA_A |0.6 V | | |PP3V3_S4SW_SNS |3.3 V |- | |PP0V6_S3_MEM_VREFDQ_B |0.6 V | | |PP3V3_S5_SSD_LB |3.3 V |- | |PP0V6_S3_MEM_VREFCA_A |0.6 V | | |PP3V3_S5_SSD |3.3 V |- | | | | | |PP3V3_S4_MESA |3.3 V |- |1V8 Rails |PP1V8_SUS |1.8 V | | |PP3V3_2V7_NAND_VCC |2.7 V |- | | | | |T208 Rails |PP3V3_S5_T139 |3.3 V |- | | | | | |PP3V3_S4_SOC_PMU |3.3 V |} d8wx38o08jf1hd6dfw5wooyiui96942 Power Rail Order 0 1923 5665 2021-03-11T14:42:23Z Chrisb 1 Chrisb moved page [[Power Rail Order]] to [[Power Rail List]]: More accurate 5665 wikitext text/x-wiki #REDIRECT [[Power Rail List]] 9b9m246m6nhtga9f1vpdez2j4kr30gk Power Supply 0 1741 6430 6429 2022-02-18T18:38:52Z Inwerp 16 6430 wikitext text/x-wiki ==How to start 15" MacBook with lower wattage supply/fake cable and no battery== 1. Device will start in SMC Bypass mode (Hold power button and plug n magsafe cable. release after 5 seconds), device will start with no magsafe light and full fan 2. pull up SMC_BATLOW_L to 3v3_S5 Lineline. Device should immidiately start. On 820-2915 board that would be R5040 pin 1 to pin 3 of Q5040. [[File:batlow l to 3v3 s5.png|none|thumb|How to start 15" MacBook Pro with Start with 65w charger and no battery]] ==Why its important to have a good power supply== Even slight overvoltage(~25V) might cause mainboard damage. If you take in the device with cheap Knock/off charger - ALWAYS tell customer to buy a good one. It would also be reasonable to warranty if customer ignores your recommendation. In most burned ISL6259 cases there is a knock-off charger somewhere in customer's backpack. '''Magsafe 1&2:''' get a dead OEM 85W charger and use its cable to have a reference cable: such cable will work with every Macbook. This is really important if you troubleshoot SMC/ISL6259/Battery. You also need to check it with original working charger after the repair: if you have bad [[Magsafe Sleep Mode|MagSafe Sleep mode]], your device wont run from OEM charger but will work on bench! Important note: Refer to [https://logi.wiki/index.php/MacBook_Battery_Compatibility#MacBook_Pro_15%22 MacBook Battery compatibility page] for the list of boards which wont boot / properlz start with no battery wven on proper charger. [http://www.righto.com/2013/06/teardown-and-exploration-of-magsafe.html Read more about how OEM MagSafe works and what exactly is hidden in Magsafe connector.] '''USB-C Models:''' you need a 100W power supply to autostart 16" macbook, so thats also must have for your bench. <br /> <br /> iwbmgbh9peejgsn9gbgdtg8i7oojlyp Programmers 0 1746 5167 5151 2020-10-29T00:18:07Z Chrisb 1 Chrisb moved page [[programmers]] to [[Programmers]] without leaving a redirect 5151 wikitext text/x-wiki -Programmers recommended -iphone -macbook lxn8x9kvr9b86fmzggvss4giqua0rxi Proper Nomenclature 0 738 7125 1758 2024-06-14T12:25:40Z Francis 4 /* Operating System & Formatting */ 7125 wikitext text/x-wiki '''Not sure how to properly refer to a product on a work order? Check here.''' Things listed here will be properly capitalized and worded. Any additions are welcome. Just run them by your leader first. ''This is not to waste your time or insult your intelligence telling you obvious things like what an iPhone is. This page exists so that we can efficiently communicate in work orders and all be on the same page. Proper capitalization of nomenclature will be taken VERY seriously in work orders or any type of documentation that will be in front of a customer at ANY time.'' <br />Link to Apple official [https://www.apple.com/legal/intellectual-property/trademark/appletmlist.html trademark names] and [https://www.apple.com/legal/intellectual-property/guidelinesfor3rdparties.html guidelines on usage]. ==Operating System & Formatting== macOS - Macintosh Operating System iOS - iPhone and iPod Touch Operating System, also on older iPad models which do not update to iOS 13. watchOS - Apple Watch Operating System iPadOS - iPad Operating System HFS - Hierarchical File System - Mac OS Standard - drive format up to macOS 9 HFS+ - Hierarchical File System Extended - Mac OS Extended - drive format up to 10.13 High Sierra APFS - Apple File System - drive format beginning with 10.13 (High Sierra) to present macOS. Read/write support was introduced in Sierra, but Sierra will not boot from an APFS formatted drive. The High Sierra installer converts HFS to APFS with SSDs. The Mojave installer converts all HFS to APFS. If Mojave is cloned to a HFS drive it will boot but not update. ==Devices== iPhone iPad iPad Pro iPad Air iPad mini iPod - Apple Music Player iPod Touch - Touch screen variant of the iPod Apple Watch - do NOT use iWatch Apple TV 4K - Apple streaming device in 4K Apple TV HD - Apple streaming device HomePod - Apple's smart speaker <br /> ==Computers== MacBook Pro - Not to be confused with a standard Aluminum MacBook iMac - Desktop all-in-one Apple machine iMac Pro - Desktop all-in-one Apple computer, introduced in 2017 Mac mini - Stand alone Apple computer in a small form factor Mac Pro - Apple aluminum tower. Switched form factor in 2013 to the cylinder. ==Accessories== Magic Keyboard - Wireless, battery operated Bluetooth Apple keyboard Magic Keyboard 2 - Wireless, rechargeable Bluetooth Apple keyboard - uses lightning to USB cable Magic Keyboard with Numeric Numberpad - Wireless, rechargeable Bluetooth Apple Keyboard, comes in white or Space Gray - uses lightning to USB cable Magic Trackpad - Wireless, battery operated Apple Bluetooth track pad Magic Trackpad 2 - Wireless, rechargeable Bluetooth Apple track pad - uses lightning to USB cable Magic Mouse - Wireless, battery operated Bluetooth Apple mouse Magic Mouse 2 - Wireless, rechargeable Bluetooth Apple mouse - uses lightning to USB cable. Apple Mouse - formerly Apple Mighty Mouse - Wired and wireless options, Apple USB mouse with trackball feature Lightning to USB cable - Apple USB charging cable using a lightning connector 30-pin to USB cable - Apple USB charging cable used with older iPod, iPhone, and iPad devices MagSafe charger - Apple's magnetic charger for notebooks, 1st generation used from 2006 - 2012 MagSafe 2 charger - Apple's magnetic charger for notebooks, 2nd generation, introduced in 2012. AirPods - Wireless bluetooth headphones (come in 1st generation, 2nd generation, and Pro models) EarPods - Wired headphones Apple Pencil - 1st and 2nd generations, for use with new model iPads Smart Keyboard - iPad accessory for iPad Pros and 7th generation iPad Apple USB SuperDrive - Apple's external USB optical drive AirPort Extreme - functions as router, network switch, wireless access point AirPort Time Capsule - AirPort Extreme but includes internal hard drive for Time Machine backups or network attached storage. AirPort Express - Wi-Fi base station ==Common Parts== LCD - Liquid Crystal Display OLED - Organic light-emitting diode Top case - varies by model, but typically includes keyboard, trackpad, speakers, microphone and other small parts Display assembly - notebook display including clamshell, hinges, etc. <br /> 45vimd0tr2pz1ztu50tow9ps4stzu4d Purple - iOS research 0 725 1682 1647 2020-09-13T04:20:21Z Joesipaq 20 1682 wikitext text/x-wiki What is purple? How do you use it? What can be done? This is where we will explore that. (in progress) ==[[BBOX|Using Purple with BBOX/ Windows]]== ==Using Purple with DCSD cable/ Mac== c8ms0ryxzgss7reshbu7d5c3ez933tp QuickLookd 0 126 568 344 2020-02-02T11:32:41Z Piernov 10 Category Mac 568 wikitext text/x-wiki Quicklookd can get stuck indexing files when iCloud drive is turned on.  Its usually third party extensions that cause issues.  To fix the problem run the following command and restart.<ref>http://hamell.net/how-to-disable-os-x-quick-look/</ref><syntaxhighlight lang="bash"> defaults write “$3/System/Library/LaunchAgents/com.apple.quicklook” Disabled -bool true </syntaxhighlight> [[Category:Mac]] 7wkwus8mnt7x7henjxitxyfkvdbl2c1 Recovery Mode 0 114 6261 569 2021-11-27T14:27:39Z Inwerp 16 Added small recovery mode tip 6261 wikitext text/x-wiki '''Recovery Mode''' This covers the start up mode using Command + R keys. Note: Recovery Mode takes longer to boot - this is normal. Things you can do in Recovery Mode: *Restore from Time Machine back up *Reinstall the last macOS that was previously installed *Go to Apple Support help online *Use Disk Utility to partition, repair, erase, format drives *Add or remove an EFI password (must know password if removing) *Troubleshoot network connection *Open Terminal from Recovery Partition (reset user password, disable/enable SIP, change date, etc.) *Select a different startup disk *See the Installer Log If you cannot startup in Recovery Mode by this startup combination, the recovery partition may be corrupt or non-existent, keyboard may be faulty, or the Mac was running an older OS (10.6 or older). Try a wired keyboard, Internet Recovery, a different startup disk, or bootable installer. <br /> === Using Recovery environment to backup folders and data === In some cases (for example, you replaced PCH on 16" Macbook Pro and it wont boot untill DFU Restore clears the ME region, target disk mode dows not work too) you can only use recovery mode. You can actually backup any folder or even whole partition using Disk utility. Simply mount target drive and unlock source drive, then create an image of folder you need. [[Category:Mac]] rgo78jj60fiseniat05p3lbvpor3v5s Reflow & Replace SMC 0 1330 2904 2020-09-30T17:21:09Z Onebitetechnology 13 Reflow/Reball instructions for SMC! 2904 wikitext text/x-wiki Remember that your troubleshooting steps should point to this as a potential solution, don't do this without a specific reason. Reflow: Remove edge bonding and heat at 280 Celsius with flux to burn any crap underneath. If no change, 430 full air flow no nozzle. Give it a '''light''' nudge once you can see it moving under the air. Replace: 430 full air, no nozzle. Grab it off once it is moving. Clean the board and remove all the old solder. Mount your SMC upside down (ball side up) in a bracket/vice/clamp etc that will hold it still. Clean off the solder and clean with iso. Place your SMC stencil and hold it in place with tape or another method. Apply solder paste. I use the back of a spudger to scrape the paste into all the holes. Go over it a few times with the excess paste to make sure the holes are filled. Brush the top clean with a dry cloth or iso pad (not soaked though). Make sure there isn't any excess paste sitting on top of the stencil. Be PATIENT. I slowly heat at 385 degrees with airflow of 40-50. Hold it a few inches away to let it heat (I count to 10 or 15), then move it closer by an inch, count again. Keep doing this until you see the paste starting to heat and form balls. Don't get too close or you risk blowing the balls out of their holes. Again, be patient. Once all the balls are melted, inspect closely to ensure they are all similar and uniform. If any "bulge", push the solder down with the tip of your tweezer, and then heat it again until it melts and goes to where it should be. If any look small/low, add the tiniest amount of paste using the tip of your tweezer, and reflow. As is it cooling, add a TINY bit of flux which will get between the stencil and the SMC to help with removal. This may not be necessary, but I find it helps. Remove your stencil/SMC from your mount. I use a flat blade xacto and slowly wedge it under the edge of the SMC. Wiggle ever so slowly until it breaks free from the stencil. Apply a small amount of flux to the board, and cover the whole SMC area. Not too much, or the SMC will "float" and might now stick to the right spot. Apply the SMC into place, and again, slowly apply heat (low airflow so it doesn't blow away). You can hold it in it's place with tweezers, just be careful not to be apply pressure. Just keep it from moving out of place. Once it has attached itself in place, you can turn up the airflow to make sure it is properly flowed. I've found you can't go too high with the heat or airflow after a reball as the low melting point of the paste/solder will cause it to blow away, so just be aware. jgx6cqlwqd2tcmwstact4hm0s0ysivt Replacement Capacitors for Older Macintosh Computers 0 2001 5939 5916 2021-07-12T09:14:38Z Hexington 489 5939 wikitext text/x-wiki <big>This page outlines the capacitors that are on the boards of older Macintosh computers and where to locate them. If there are any errors please feel free to correct me.</big> <big>Macintosh SE/30</big> Note: SMD Electrolytics can be substituted for Tantalum polymer caps provided they are correctly rated for voltage, can physically fit and due to the contact size/shape differing from the originals care must be taken to ensure that soldering them doesn't contact unwanted nearby vias. The benefits are they won't leak in the future. 10x 16V 47µF Electrolytic SMD [https://ebay.us/6pUA30 eBay], [https://www.mouser.com/ProductDetail/5985-AVS16V47-F Mouser] | Tantalum [https://uk.farnell.com/avx/tcqd476m016r0070/cap-47-f-16v-20/dp/2845687 Farnell] 01x 50V 1µF Electrolytic SMD [https://ebay.us/Wkp5Ox eBay], [https://www.mouser.com/ProductDetail/80-EDH105M050A9BAA Mouser] | Tantalum [https://uk.farnell.com/kemet/t521b105m050ate200/cap-1-f-50v-20/dp/2855275 Farnell] 01x 16V 220µF Electrolytic Through-Hole (Radial) [https://ebay.us/XHP7VI eBay], [https://www.mouser.com/ProductDetail/Elna/RFS-16V221MH55?qs=HV%2FSjD3ivR8SPzpuGAdFSg%3D%3D Mouser] | (Axial) [https://ebay.us/AzavNI eBay](Select 16V 220µF), [https://www.mouser.com/ProductDetail/Vishay/MAL213835221E3?qs=cAZGeXF9iMrACMoSNANXsA%3D%3D Mouser] 01x 16V 470µF Electrolytic Through-Hole (Radial) [https://ebay.us/nLfLwD eBay], [https://www.mouser.com/ProductDetail/Elna/RFS-16V471MI65?qs=HV%2FSjD3ivR8sl6Ua5eZbKQ%3D%3D Mouser] | (Axial) [https://ebay.us/h2i04c eBay], [https://www.mouser.com/ProductDetail/Vishay-BC-Components/MAL213835471E3?qs=cAZGeXF9iMrD9rFShf%252Bcsg%3D%3D Mouser] [[File:Macintosh_SE-30_Capacitor_Placement.jpg|alt=|frameless|615x615px]] <big>Macintosh LC</big> AP1455-03 01x 50V 1µF Electrolytic SMD [https://ebay.us/Wkp5Ox eBay], [https://www.mouser.com/ProductDetail/80-EDH105M050A9BAA Mouser] 01x 6.3V 100µF Electrolytic SMD [https://www.mouser.com/ProductDetail/Cornell-Dubilier-CDE/AVE107M06D16T-F?qs=%2Fha2pyFadujh1ouMiqXUJngyN76LQjJs4gSOkuAI%2FjY%3D Mouser] 08x 16V 10µF Electrolytic SMD [https://www.mouser.com/ProductDetail/Cornell-Dubilier-CDE/AVS106M16B12T-F?qs=%2Fqg72hM0uyzL462ZV6gueg%3D%3D Mouser] 05x 16V 47µF Electrolytic SMD [https://ebay.us/6pUA30 eBay], [https://www.mouser.com/ProductDetail/5985-AVS16V47-F Mouser] [[File:Macintosh_LC_Capacitor_Placement_01.jpg|alt=|frameless|600x600px]][[File:Macintosh_LC_Capacitor_Placement_02.jpg|alt=|frameless|600x600px]] <big>Macintosh LCII</big> 820-3027-A 05x 16V 47µF Electrolytic SMD [https://ebay.us/6pUA30 eBay], [https://www.mouser.com/ProductDetail/5985-AVS16V47-F Mouser] 01x 6V 100µF Electrolytic SMD [https://www.mouser.com/ProductDetail/Cornell-Dubilier-CDE/AVE107M06D16T-F?qs=%2Fha2pyFadujh1ouMiqXUJngyN76LQjJs4gSOkuAI%2FjY%3D Mouser] 10x 16V 10µF Electrolytic SMD [https://www.mouser.com/ProductDetail/Cornell-Dubilier-CDE/AVS106M16B12T-F?qs=%2Fqg72hM0uyzL462ZV6gueg%3D%3D Mouser] 01x 50V 1µF Electrolytic SMD [https://ebay.us/Wkp5Ox eBay], [https://www.mouser.com/ProductDetail/80-EDH105M050A9BAA Mouser] [[File:Macintosh_LCII_Capacitor_Placement_01_Corrected_2.jpg|alt=|frameless|600x600px]][[File:Macintosh_LCII_Capacitor_Placement_02.jpg|alt=|frameless|600x600px]] <big>Macintosh LCIII</big> 820-0650-B 05x 16V 10µF Electrolytic SMD [https://www.mouser.com/ProductDetail/Cornell-Dubilier-CDE/AVS106M16B12T-F?qs=%2Fqg72hM0uyzL462ZV6gueg%3D%3D Mouser] 01x 6V 100µF Electrolytic SMD [https://www.mouser.com/ProductDetail/Cornell-Dubilier-CDE/AVE107M06D16T-F?qs=%2Fha2pyFadujh1ouMiqXUJngyN76LQjJs4gSOkuAI%2FjY%3D Mouser] 05x 16V 47µF Electrolytic SMD [https://ebay.us/6pUA30 eBay], [https://www.mouser.com/ProductDetail/5985-AVS16V47-F Mouser] [[File:Macintosh_LCIII_Capacitor_Placement.jpg|alt=|frameless|600x600px]] mapb76uz36m93fjr1fu17ul0u0ujmge Reset to EFI POST State for Ivy Bridge Haswell and Broadwell 0 783 1688 1674 2020-09-13T11:37:30Z Chrisb 1 Redirected page to [[Bootup Signal Order]] 1688 wikitext text/x-wiki #REDIRECT [[Bootup Signal Order]]<br /> gy7frwrxiuivpj17ag44y7zye2056yf Resistance to Ground List 0 41 6649 6458 2022-10-14T19:37:28Z Chrisb 1 6649 wikitext text/x-wiki I feel it important to state that this is truly Resistance to ground - not Diode readings. Paul Daniels is adding resistance and voltage to FlexBoardView. Linking to his repo [https://openboarddata.org here] ==Resistance by Board Number== ===820-2796 2010 11" MacBook Air=== L6995 PP3V42_G3H 160 KΩ ===820-3024 2011 11" MacBook Air=== C7649 PP1V05_S0 51 Ω ===820-00165 2015/17 13" MacBook Air=== C2740 PP0V6_S0_DDRVTT 630 Ω C7648 PP1V05_S0 217 Ω C1910 PPVRTC_G3H ~ 7 MΩ C6100 PP3V3_SUS 54 kΩ ==='''820-00875 2016 13" MacBook Pro with Function keys'''=== L2950 VR09V_IND_TBT_X 564 Ω C2994 PP3V3_TBT_X_F 2.8 KΩ <br /> ==CPU Resistance== ===Penryn=== 2010 MBA 11" 59 Ω<br> 2010 MBP 13" 23.5 Ω<br> 2010 MBP 13" P8600: 62Ω<br> ===Arrandale=== 2010 MBP 15" i5 101 Ω<br> 2010 MBP 15" i7 51 Ω<br> 2010 MBP 15" i5-520M: CPU=15Ω/iGPU=64Ω<br> 2010 MBP 15" i5-540M: CPU=57Ω/iGPU=33Ω, CPU=46Ω/iGPU=59Ω<br> ===Sandy Bridge=== 2011 MBP 13" i5 8 Ω<br> 2011 MBP 13" i5-2415M: CPU=17Ω/iGPU=15Ω<br> 2011 MBA 11" I5 23 Ω<br> 2011 MBA 13" i5-2557M: CPU=25Ω/iGPU=20Ω, CPU=29Ω/iGPU=25Ω<br> 2011 MBA 13" i7-2677M: CPU=25Ω/iGPU=23Ω<br> ===Ivy Bridge=== Down to 1.5 Ω<br> 2012 MBP 13" i5-3210M: CPU=2.0Ω/iGPU=1.3Ω<br> 2012 MBP 13" i7-3520M CPU=2.0Ω/iGPU=2.1Ω<br> 2012 MBP 15" i7 4.1 Ω<br> 2012-E2012 MBPr 15" 1.5 Ω<br> 2012 MBA 13" i5 4.3 Ω<br> 2012 MBA 13" i5-3427U: CPU=3.4Ω/iGPU=2.0Ω<br> ===Haswell=== ====Haswell-U==== At least 20 Ω<br> L2013-2014 13" MBP<br> L2013 MBP 13" i5-4258U: 53Ω, 76Ω, 77Ω<br> M2014 MBP 13" i5-4278U: 165Ω<br> 2013-2014 MBA i5 120 Ω <br> ====Haswell-H==== Above 10Ω<br> L2013-M2014 15" MBP<br> L2013 15" MBP iGPU i7-4750HQ: 22Ω, 35Ω<br> M2014 15" MBP iGPU i7-4770HQ: 10Ω, 15Ω<br> M2014 15" MBP dGPU i7-4870HQ: 15Ω<br> L2013 15" MBP dGPU i7-4850HQ: 21Ω<br> ===Broadwell=== Around 18 Ω<br> 2015 13" MBP i5 15 Ω<br> 2015 MB<br> 2015-2017 11 MBA i5 23 Ω<br>2015-2017 13 MBA i5 18 Ω<br> 2015-2017 13 MBA i7 23 Ω<br> ===Skylake=== 6 Ω, 7 Ω<br> 2016 MBP<br> 2016 MB<br> ===Kaby Lake=== 2017 MBP 13" i5 10 Ω<br> 2017 MB 12" m3 16 Ω<br> ===Coffee Lake=== 2018-2019 MBP 15" 4.8 Ω<br> 2018-2019 MBP 13"<br> 2019 MBP 16"<br> ===Amber Lake Y=== 2018-2019 MBA<br> [[Category:Mac]] [[Category:MacBook]] 9gt7ilfmrsguvp4k4f7y87qc9els204 Resistor 0 52 571 86 2020-02-02T11:34:07Z Piernov 10 Category Resources 571 wikitext text/x-wiki A resistor is a passive component that resists the flow of electricity. It is used to lower current or divide voltages. Resistors usually fail open or at a higher resistance. Be careful testing resistors in circuit. They will usually test lower as there are other paths the current can take. See the full Wikipedia entry on [https://en.wikipedia.org/wiki/Resistor resistors] [[Category:Resources]] eitfz5lznf6xs8gvy7gzkmipi1vlk67 Resources and Tools 0 98 6944 6225 2023-09-29T06:30:01Z CBax 996 discord dead links 6944 wikitext text/x-wiki ==Links== ===Software=== [https://pldaniels.com/flexbv/ FlexBV]: Paul Daniel's wonderful FlexBV takes board view files and schematics together to make an easy to search tool. You can easily move back and forth between board views and schematics just by right clicking. It also has an amazing parts search, so you can find that missing component on a totally different board. Clicking on nets highlights everything attached, pin 1 shows up red, and it will soon include resistance readings, voltages, and basic instructions. iPhone boards are now supported. Check the links below.<br> [https://store.ipadrehab.com/ZXW-3-0-INSTANT-ONLINE-License-Code-p93116884 ZXW]: is the original reverse engineered board view for iPads and iPhones. Paul's software is rapidly taking over, but this has a few things that are still relevant.<br> [http://dosdude1.com/software.html DosDude1's macOS Patcher] to run macOS on unsupported hardware. Please note, not all machines supported by this patch will run well, for example the unibody iMacs do not have an integrated GPU and the dedicated is not supported.<br> [https://computeco.de/Demux DosDude1's DeMux] to turn off the 2011 series MacBook Pro dedicated GPU in the video mux firmware.<br> [https://github.com/foxlet/macOS-Simple-KVM KVM] is a simple VM to run macOS in. <br> [https://github.com/upekkha/AppleHardwareTest Older AHT downloads]<br> ===EFI Tools=== [https://github.com/sadponyguerillaboy/Swift-Apple-EFI-Patcher GUI EFI Tool for removing EFI lock, changing Serial and swapping ME to a known good]<br> [https://github.com/sadponyguerillaboy/Python-Apple-EFI-Patcher Script EFI Tool]<br> ===Schematics=== [https://www.badcaps.net/forum/showthread.php?t=80466 Bad Caps iPhone]<br> [https://www.badcaps.net/forum/forumdisplay.php?f=23 Bad Caps Laptop]<br> [https://www.badcaps.net/forum/forumdisplay.php?f=41 Bad Caps Requests]<br> [https://discord.gg/f3QYDsZ Sorin's Discord #schematics] (dead invite link) ===[https://www.apple-schematic.se/ apple-schematic.se]=== [https://link.resilio.com/#f=Technician%20Files&sz=14E9&t=2&s=5G2UT3UQKD2HWHSCXZWJ4NIPZBN3CCPALIRDC5IHUD2QFIIG2VNA&i=CVRIRPKOV2MFHEIZSZUZFPD2WWNPCUJ62&v=2.6&a=2 resilio link to most of the stuff you'll ever need.] ===Helpful sites=== [http://knownappleissues.com/ Known issues with Apples products]<br> [https://www.facebook.com/groups/MacBookLogicBoardRepair MacBook Logic Board Repair Facebook Group]<br> [https://discord.gg/efCgbpZ Rossmann's Discord] (dead invite link)<br> [http://honestgeek.ca Honest Geek's] site has useful information on EFI repair.<br> [http://advancedreworks.com/forum/archive/index.php/forumdisplay.php/mac-computers-motherboard-repair.html Advanced Reworks Repair Forum Index] Useful forum posts about macbook problems and general troubleshooting. (Site down)<br> [https://gbatemp.net/forums/ A Console repair site that can be helpful.] [https:///www.microsoldering.com Micro Soldering] - Resource for getting started with your micro soldering journey. Detailed lists of tools and equipment, parts and supply, and a 5-hour online course -- all you need to know to get started. ===YouTube Channels=== [https://www.youtube.com/channel/UC2DjFE7Xf11URZqWBigcVOQ EEVBlog] Dave explains electronics engineering in a fun way. He also does cool tear downs and reviews of equipment we need.<br> [https://www.youtube.com/user/eaterbc Ben Eater] builds a full computer on a breadboard. Learn lots about latches, memory, and discrete logic.<br> [https://www.youtube.com/user/ContourCorsets Fran's Lab] has a different feel than most electronics channels. Learn electronics from a different view.<br> [https://www.youtube.com/channel/UCabpXFEszoj-HwHWdKtmAXg Piernov] What more needs to be said? ==Tools== ===[[Multimeter]]=== ===[[Hot Air Stations]]=== ===[[Oscilloscope]]=== ===[[Power Supply]]=== ===[[Soldering Stations]]=== ===[[Microscopes and Microscope Cameras]]=== ===[[Stencils]]=== ==='''[[Ultrasonic Cleaners]]'''=== ===[[Programmers]]=== === [[Thermal Cameras]] === [https://www.aliexpress.com/item/33006894821.html?spm=a2g0o.productlist.0.0.10e34b70Cpjb4N&algo_pvid=b4cbe29d-1fc3-4039-a84c-ffed078e8896&algo_expid=b4cbe29d-1fc3-4039-a84c-ffed078e8896-2&btsid=0be3764315896326058074910ef401&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_ Aliexpress]. Buy all five stencils. ==Shopping== Support [https://store.ipadrehab.com iPad Rehab], Jessa's store and buy from iPad rehab. Her store carries mostly iPhone and iPad components and tools [USA] [https://www.digikey.com DigiKey] has general electronics components. [https://www.mouser.com Mouser] has general electronics components. [USA/Canada] [https://www.arrow.com/ Arrow.com] US based and well worth a look for general electronic components [USA] Support [https://store.rossmanngroup.com Rossmann Group]'s store and buy your MacBook Parts here. [USA] [https://mobilesentrix.com Mobile Sentrix] MacBook & mobile parts, board components, and tools. [USA/Canada] [https://www.injuredgadgets.com/ Injured Gadgets] mobile & tablet, board components, and tools [USA] [https://www.crazyparts.com.au/ Crazy Parts] mobile & tablet, board components, and tools [Australia/New Zealand] <br /> [[Category:Resources]] s4l9zwir0ek04asq15xg8ezwpvktadq S0 to Reset State for Ivy Bridge Haswell and Broadwell 0 781 1687 1673 2020-09-13T11:34:20Z Chrisb 1 Redirected page to [[Bootup Signal Order]] 1687 wikitext text/x-wiki #REDIRECT [[Bootup Signal Order]]<br /> gy7frwrxiuivpj17ag44y7zye2056yf S3 to S0 State for Ivy Bridge Haswell and Broadwell 0 779 1686 1685 2020-09-13T11:33:40Z Chrisb 1 Replaced content with "#REDIRECT [[Bootup Signal Order]]" 1686 wikitext text/x-wiki #REDIRECT [[Bootup Signal Order]] is6pbad0jj59f6os4c16ae2p2r8ih18 SCSI IDC 50 pin 0 202 598 596 2020-02-02T12:11:23Z Piernov 10 IDC 50 pin adapter on SCA-2 80 pin 2.5" 37GB HDD 598 wikitext text/x-wiki The original HDD in PowerPC Macintosh (before G3) are SCSI drives with an IDC 50 pin connector. They are often found dead and no replacement are available (or very expensive and not necessarily in a good state). They can be replaced by SCSI drives with an SCA-2 80 pin connector which are cheaper, faster, quieter, in better state and with higher capacity. Adapters can be found on eBay for a few bucks. Some of these adapters come with the MTR jumper populated, it has to be removed to allow the drive to start when powering on. Other jumpers can be removed too as usually you don't need the other features and SCSI ID 0 is ok. In theory it should also work with 68k Macs but due to software limitations only small partitions of 2GB or 4GB can be used under older Mac OS. There are also some 2.5" drives available that could be used in PowerBooks, provided someone makes the proper adapter. [[File:SCSI SCA-2 to IDC-50pin.jpg|thumb|SCSI SCA-2 to IDC-50pin]] [[File:IDC 50 pin adapter on SCA-2 80 pin 2.5" 37GB HDD.jpg|thumb|IDC 50 pin adapter on SCA-2 80 pin 2.5" 37GB HDD]] [[Category:Mac]] [[Category:PowerPC]] le4zp615w8fs06hehcyq7q1hcxo7mx0 SMC 0 1435 6702 5797 2023-01-10T17:11:11Z Alex6337 28 Cosmetic changes. 6702 wikitext text/x-wiki The '''System Management Controller''' ('''SMC''') is a subsystem of Intel processor-based Macintosh computers. It is similar in function to the older SMU or PMU or UAE of non-Intel Macintosh computers, as well as the newer T2 Security Chips made by Apple (more information [https://support.apple.com/en-us/HT208862 here]; spoiler alert, they're really annoying). ==Overview== The SMC has roles in controlling thermal and power management, battery charging, video mode switching, sleep and wake, hibernation, and LED indicators. It also enables enforcement of the macOS End User License, allowing macOS to identify when it is running on non-Apple hardware. ==Troubleshooting== To '''reset your SMC''', see [[Startup_Keys#SMC_Reset:|this page]]. For older machines (Ivy Bridge Haswell and Broadwell), see [[G3 to S3 State for Ivy Bridge Haswell and Broadwell|this page]]. For CD3215 '''''without''''' T2 chip, see [[CD3215 Bootup Sequence|this page]]. For CD 3215/17 '''''with''''' T2 chip, see [[T2 and CD3215 Power on Sequence|this page]]. For a more in-depth explanation of '''how the SMC circuit works''' and basic functionality, see [[SMC Circuits|this page]]. To '''reflow, solder and/or replace the SMC''', see [[Reflow & Replace SMC|this page]]. For more '''info on the SMC circuits''', see [[SMC Circuits|this page]]. For '''SMC sensor codes''', see [[SMC Sensor Codes|this page]]. To '''Flash the SMC''', see [https://logi.wiki/index.php/SMC_flashing this page.] ==See also== [[wikipedia:System_Management_Controller|Wikipedia]] 1jb0bdqw8bs8vwz27ksi2s3am95kfo5 SMC Circuits 0 16 5419 1040 2020-12-24T23:10:27Z Piernov 10 Add some clarification about SMC requirements 5419 wikitext text/x-wiki We need to provide power, clock and reset signals to kick-start the SMC chip. [[File:SMC Power up.jpg|thumb]] pp3v42_g3h created by u7090 will provide main power to the SMC chip u5000 via the BGA ball K12, VBAT. The pp3v42_g3h also goes through L5001 to power the SMC internal logic model VDDA. The SMC will create pp1v2_s5_smc_vddc to power itself. Then the SMC crystal circuit will start to output 12 MHZ square-ls clock for the SMC. [[File:Smc-crystal-circuit.jpg|thumb]] U5110 monitors the voltage of pp3v42_g3h. If pp3v42_g3h is not less than 3.0V and stable, U5100 will output a delayed smc_reset_l 3.3V to reset the SMC chip. The delay time is determined by R5101and C5101. U5110 also outputs pp3v3_s5_avref_smc 3.3V references voltage for the analog-digital conversion function of SMC sensors circuits including current sensors, voltage sensors and temperature sensors. [[File:Smc-reset-circuit.jpg|thumb]] On receiving smc_bc_acok from charging chip u7100, SMC will communicate with the MagSafe via the one-wired circuit and the green light on the charger will be on. Meanwhile, SMC uses SMBus to communicate with u7100 to adjust the ppbus_g3h from base voltage 8.1V to standard 8.45V. If you can get 8.45V ppbus_g3h output, it means SMC is functioning, at least partially. SMC uses the same SMBus to read battery status to determine the battery charging current. SMS monitors system input current (AMON) and battery charging current (BMON) all the time. [[File:Battey-connector.jpg|thumb]] SMC is a very important and complex chip designed by Apple. There is no “new" SMC chip you can buy. It has to be from a donor board with the same model and year. We will discuss more SMC functions later. SMC requires VDD (PP3V42_G3H), VDDA (PP3V3_S5_SMC_VDDA) and SMC_RESET_L to be 3.42V in order to turn on. It also requires the crystal to be in good shape to generate the clock. The crystal circuit is almost never the problem as long as it is not visually damaged. VREFA (PP3V3_S5_AVREF_SMC) is not required for the SMC to turn on, but it is required to reach a stable S0 state, otherwise without current/voltage sensing working properly the board won't reach an S0 state or cycle. In general the board can still boot in SMC bypass mode. '''SMC bypass is a mode where several SMC features are disabled (sensors in particular), you disconnect all power, press power button, connect Magsafe and keep power button held for 5 to 10 seconds. Fans should go at max speed.''' [[Category:Mac]] [[Category:MacBook]] 1j415jp8czse2cj8bwkilv9jgjdegio SMC Compatibility 0 263 7114 7113 2024-05-21T21:00:09Z Echow2001 1148 formatting 7114 wikitext text/x-wiki Question: That reminds me. I have to swap a SMC on a 2010 A1286. I don’t have an exact donor. Can I use a donor with a different processor? Answer: [Piernov] as long as it's the same model donor board it's fine. In some cases you can use one from similar boards. SMC firmware is exactly the same on 3476 and 3536 for example, I guess it's the same for 00163 and 00426. In some other cases SMC from similar board should work fine but there may be some discrepencies (between 11" and 13" Air) In some cases it'll not be 100% compatible but enough to boot, then you can force flash the SMC update for the correct board… may work. For a 2010 A1286, the 2010 A1297 may be close enough for example, dunno. LIST OF COMPATIBILITY: 820-3437 : Fully compatible : 820-3435 Need to flash : 820-00165, 820-00164 820-3435 Fully compatible : 820-3437 Need to flash : 820-00165, 820-00164 820-00164 Fully Compatible : 820-00165 Need to flash : 820-3435, 820-3437 820-00165 Fully Compatible : 820-00164 Need to flash : 820-3435, 820-3437 820-3855 Need to flash : 820-5509 820-5509 Need to flash : 820-3437 mo89mspq4xc2if6j48mu21b9fgo0tfb SMC Sensor Codes 0 103 575 226 2020-02-02T11:35:50Z Piernov 10 Category Mac 575 wikitext text/x-wiki <pre>Dumping MacBookPro14,3 from MacBookPro14_3 Name: MacBook Pro (15 inch, Retina & Touch Bar, Mid 2017) Memory: soldered slots with 16384 MB total Defaults: TC0P, temperature: TCXC Key IC0R low 0 high 0 CPU Computing Highside Key IPBR low 0 high 0 PBus Key ID0R low 0 high 0 DC In Key ICTC low 0 high 0 Intel GPU Key PC0R low 0 high 0 CPU Computing Highside Key PCAC low 0 high 0 CPU Core Key PCGC low 0 high 0 Intel GPU Key PPBR low 0 high 0 Battery Current Key PG0R low 0 high 0 Radeon High Side Key Ts0P low 0 high 0 Palm Rest 1 Key Ts1P low 0 high 0 Palm Rest 2 Key TB1T low 0 high 0 Battery Sensor 1 Key TB2T low 0 high 0 Battery Sensor 2 Key TPCD low 0 high 0 Platform Controller Hub Die Key TC1C low 0 high 0 CPU Core 1 Key TC2C low 0 high 0 CPU Core 2 Key TC3C low 0 high 0 CPU Core 3 Key TC4C low 0 high 0 CPU Core 4 Key TCGC low 0 high 0 Intel GPU Key TCSA low 0 high 0 CPU System Agent Core Key TCXC low 0 high 0 CPU PECI Key TG0D low 0 high 0 Radeon GPU Die Key TaLC low 0 high 0 Airflow Left Key TTLD low 0 high 0 Thunderbolt Left Proximity Key Th1H low 0 high 0 Right Fin Stack Key Th2H low 0 high 0 Left Fin Stack Key TM0P low 0 high 0 Memory Proximity Key TC0P low 0 high 0 CPU Proximity Key TG0P low 0 high 0 GPU Proximity Key TW0P low 0 high 0 Airport Key TaRC low 0 high 0 Airflow Right Key TTRD low 0 high 0 Thunderbolt Right Proximity Key TH0A low 0 high 0 SSD 1 Key TH0B low 0 high 0 SSD 2 Key TH0C low 0 high 0 SSD 3 Key TGVP low 0 high 0 Radeon Memory Proximity Key VG2C low 0 high 0 Radeon VDDCI Key VP0R low 0 high 0 PBus Key VD0R low 0 high 0 DC In Key VCSC low 0 high 0 CPU System Agent Key VCAC low 0 high 0 CPU IA Key VCTC low 0 high 0 Intel GPU Key VG0C low 0 high 0 Radeon Core Key ALSL low 0 high 0 Ambient Light Key F0Ac low 2160 high 5297 Leftside Key F1Ac low 2000 high 5489 Rightside Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key PSTR low 0 high 0 System Total Key PDTR low 0 high 0 DC In Dumping MacBookAir6,2 from MacBookAir6_2 Name: MacBook Air (13 inch, Mid 2013) Memory: soldered slots with 8192 MB total Defaults: TCXC, temperature: TCXC Key IC0R low 0 high 10 Chipset INA Highside Key ID0R low 0 high 3.5 DC IN Rail AMON Key IM3C low 0 high 6 DDR S3 Key IPB1 low 0 high 10 Discrete Battery Key IPBR low 0 high 10 PBus Key ISDC low 0 high 5 SSD Key PB1R low 0 high 70 Discrete BMON Key PC0R low 0 high 30 CPU Computing High Side Key PDTR low 0 high 70 DC In Total Key PM3C low 0 high 20 DDR S3 Key PPBR low 0 high 70 PBus Key PSDC low 0 high 15 SSD Key TB0T low 10 high 50 Battery Key TB1T low 10 high 50 BMU 1 Key TB2T low 10 high 50 BMU 2 Key TC0P low 15 high 105 CPU Proximity Key TCHP low 10 high 75 Charger Proximity Key TCXC low 15 high 120 CPU Core PECI Key THSP low 10 high 65 T29 Proximity Key TM0P low 15 high 75 Memory Proximity Key TPCD low 15 high 100 Platform Controller Hub Key TS2P low 10 high 70 Camera Proximity Key TW0P low 10 high 70 Wireless Proximity Key Ta0P low 10 high 65 Inlet Key Th1H low 10 high 60 Fin Stack Key Tm0P low 10 high 65 Logic Board Top Side Key Ts0P low 10 high 52 Trackpad Key VC1C low 0 high 1.15 1.05 S0 Key VCS0 low 0 high 1.9 CPU Core Key VD0R low 13.5 high 17.2 DC In Key VP0R low 7.2 high 8.9 PBus Rail Key F0Ac low 1200 high 6500 Exhaust Key PSTR low 0 high 0 System Total Key PDTR low 0 high 0 DC In Dumping MacBookAir6,1 from MacBookAir6_1 Name: MacBook Air (11 inch, Mid 2013) Memory: soldered slots with 8192 MB total Defaults: TCXC, temperature: TCXC Key IC0R low 0 high 10 Chipset INA Highside Key ID0R low 0 high 3.5 DC IN Rail AMON Key IM3C low 0 high 6 DDR S3 Key IPB1 low 0 high 10 Discrete Battery Key IPBR low 0 high 10 PBus Key ISDC low 0 high 5 SSD Key PB1R low 0 high 70 Discrete BMON Key PC0R low 0 high 30 CPU Computing High Side Key PDTR low 0 high 70 DC In Total Key PM3C low 0 high 20 DDR S3 Key PPBR low 0 high 70 PBus Key PSDC low 0 high 15 SSD Key TB0T low 10 high 50 Battery Key TB1T low 10 high 50 BMU 1 Key TB2T low 10 high 50 BMU 2 Key TC0P low 15 high 105 CPU Proximity Key TCHP low 10 high 75 Charger Proximity Key TCXC low 15 high 120 CPU Core PECI Key THSP low 10 high 65 T29 Proximity Key TM0P low 15 high 75 Memory Proximity Key TPCD low 15 high 100 Platform Controller Hub Key TS2P low 10 high 70 Camera Proximity Key TW0P low 10 high 70 Wireless Proximity Key Ta0P low 10 high 65 Inlet Key Th1H low 10 high 60 Fin Stack Key Tm0P low 10 high 65 Logic Board Top Side Key Ts0P low 10 high 52 Trackpad Key VC1C low 0 high 1.15 1.05 S0 Key VCS0 low 0 high 1.9 CPU Core Key VD0R low 13.5 high 17.2 DC In Key VP0R low 7.2 high 8.9 PBus Rail Key F0Ac low 1200 high 6500 Exhaust Key PSTR low 0 high 0 System Total Key PDTR low 0 high 0 DC In Dumping Xserve3,1 from Xserve3_1 Name: Xserve Memory: soldered slots with 0 MB total Defaults: TCAH TCBH, temperature: Key TA0P low 0 high 0 Chunnel Ambient Left Key TA0S low 0 high 0 PCIE Slot 1 Ambient Key TA1P low 0 high 0 Chunnel Ambient Right Key TA1S low 0 high 0 PCIE Slot 1 PCB Key TA2S low 0 high 0 PCIE Slot 2 Ambient Key TA3S low 0 high 0 PCIE Slot 2 PCB Key TCAH low 0 high 0 CPU A HeatSink Key TCBH low 0 high 0 CPU B HeatSink Key TH1P low 0 high 0 Drive Bay 1 Key TH2P low 0 high 0 Drive Bay 2 Key TH3P low 0 high 0 Drive Bay 3 Key TN0C low 0 high 0 I/O Hub Die Key TN0H low 0 high 0 I/O Hub HeatSink Key TM0P low 0 high 0 CPU A DIMM Exit Ambient Key TS0C low 0 high 0 CPU B DIMM Exit Ambient Key Tp0P low 0 high 0 PSU1 Inlet Ambient Key Tp1P low 0 high 0 PSU1 Primary Component Key Tp2P low 0 high 0 PSU1 Secondary Component Key Tp3P low 0 high 0 PSU2 Inlet Ambient Key Tp4P low 0 high 0 PSU2 Primary Component Key Tp5P low 0 high 0 PSU2 Secondary Component Key VCAC low 0 high 0 CPU A Core Key VCBC low 0 high 0 CPU B Core Key VS2C low 0 high 0 Main P12V Key VS8C low 0 high 0 Main P3V3 Key F0Ac low 6000 high 18000 CPU 1 Inlet Key F2Ac low 6000 high 18000 CPU 2 Inlet Key F4Ac low 6000 high 18000 CPU 3 Inlet Key F6Ac low 6000 high 18000 CPU 4 Inlet Key F8Ac low 6000 high 18000 FB-DIMM 1 Inlet Key FAAc low 6000 high 18000 FB-DIMM 2 Inlet Key FCAc low 6000 high 18000 FB-DIMM 3 Inlet Key F1Ac low 5768 high 17308 CPU 1 Outlet Key F3Ac low 5768 high 17308 CPU 2 Outlet Key F5Ac low 5768 high 17308 CPU 3 Outlet Key F7Ac low 5768 high 17308 CPU 4 Outlet Key F9Ac low 5768 high 17308 FB-DIMM 1 Outlet Key FBAc low 5768 high 17308 FB-DIMM 2 Outlet Key FDAc low 5768 high 17308 FB-DIMM 3 Outlet Key FEAc low 7284 high 13900 Power Supply 1 Inlet Key FGAc low 7284 high 13900 Power Supply 2 Inlet Key FFAc low 6800 high 12800 Power Supply 1 Outlet Key FHAc low 6800 high 12800 Power Supply 2 Outlet Dumping Xserve2,1 from Xserve2_1 Name: Xserve Memory: soldered slots with 0 MB total Defaults: TCAH TCBH, temperature: Key TA0P low 0 high 0 Chunnel Ambient Left Key TA0S low 0 high 0 PCI Super Slot Ambient Key TA1P low 0 high 0 Chunnel Ambient Right Key TA1S low 0 high 0 PCI Super Slot PCB Key TA2S low 0 high 0 PCIe Half Length Ambient Key TA3S low 0 high 0 PCIe Half Length PCB Key TCAH low 0 high 0 CPU A HeatSink Key TCBH low 0 high 0 CPU B HeatSink Key TH1P low 0 high 0 Drive Bay 1 Key TH2P low 0 high 0 Drive Bay 2 Key TH3P low 0 high 0 Drive Bay 3 Key TN0C low 0 high 0 MCH Core Key TN0H low 0 high 0 MCH HeatSink Key TS0C low 0 high 0 CPU B PCB Key Tp0P low 0 high 0 PSU1 Inlet Ambient Key Tp1P low 0 high 0 PSU1 Primary Component Key Tp2P low 0 high 0 PSU1 Secondary Component Key Tp3P low 0 high 0 PSU2 Inlet Ambient Key Tp4P low 0 high 0 PSU1 Primary Component Key Tp5P low 0 high 0 PSU2 Secondary Component Key VCAC low 0 high 0 CPU A Core Key VCBC low 0 high 0 CPU B Core Key VS2C low 0 high 0 Main P12V Key VS4C low 0 high 0 AUX P1V5 Key VS8C low 0 high 0 Main P3V3 Key VSEC low 0 high 0 FireWire P1V95 Key VSFC low 0 high 0 AUX P3V3 Key F0Ac low 5000 high 16100 CPU 1 Inlet Key F2Ac low 5000 high 16100 CPU 2 Inlet Key F4Ac low 5000 high 16100 CPU 3 Inlet Key F6Ac low 5000 high 16100 CPU 4 Inlet Key F8Ac low 5000 high 16100 FB-DIMM 1 Inlet Key FAAc low 5000 high 16100 FB-DIMM 2 Inlet Key FCAc low 5000 high 16100 FB-DIMM 3 Inlet Key F1Ac low 4020 high 12952 CPU 1 Outlet Key F3Ac low 4020 high 12952 CPU 2 Outlet Key F5Ac low 4020 high 12952 CPU 3 Outlet Key F7Ac low 4020 high 12952 CPU 4 Outlet Key F9Ac low 4020 high 12952 FB-DIMM 1 Outlet Key FBAc low 4020 high 12952 FB-DIMM 2 Outlet Key FDAc low 4020 high 12952 FB-DIMM 3 Outlet Key FEAc low 7284 high 13900 Power Supply 1 Inlet Key FGAc low 7284 high 13900 Power Supply 2 Inlet Key FFAc low 6800 high 12800 Power Supply 1 Outlet Key FHAc low 6800 high 12800 Power Supply 2 Outlet Dumping Xserve1,1 from Xserve1_1 Name: Xserve (Late 2006) Memory: soldered slots with 0 MB total Defaults: TCAH TCBH, temperature: Key TA0P low 0 high 0 Chunnel Ambient Left Key TA0S low 0 high 0 PCI Super Slot Ambient Key TA1P low 0 high 0 Chunnel Ambient Right Key TA1S low 0 high 0 PCI Super Slot PCB Key TA2S low 0 high 0 PCIe Half Length Ambient Key TA3S low 0 high 0 PCIe Half Length PCB Key TCAH low 0 high 0 CPU A HeatSink Key TC0P low 0 high 0 CPU A Ambient 1 Key TC1P low 0 high 0 CPU A Ambient 2 Key TCBH low 0 high 0 CPU A HeatSink Key TC2P low 0 high 0 CPU B Ambient 1 Key TC3P low 0 high 0 CPU B Ambient 2 Key TG0C low 0 high 0 Mezzanine GPU Core Key TG0P low 0 high 0 Mezzanine GPU Exhaust Key TH1P low 0 high 0 Drive Bay 1 Key TH2P low 0 high 0 Drive Bay 2 Key TH3P low 0 high 0 Drive Bay 3 Key TN0C low 0 high 0 MCH Core Key TN0H low 0 high 0 MCH HeatSink Key TS0C low 0 high 0 CPU B PCB Key Tp0P low 0 high 0 PSU1 Inlet Ambient Key Tp1P low 0 high 0 PSU1 Primary Component Key Tp2P low 0 high 0 PSU1 Secondary Component Key Tp3P low 0 high 0 PSU2 Inlet Ambient Key Tp4P low 0 high 0 PSU1 Primary Component Key Tp5P low 0 high 0 PSU2 Secondary Component Key VCAC low 0 high 0 CPU A Core Key VCBC low 0 high 0 CPU B Core Key VS2C low 0 high 0 Main P12V Key VS4C low 0 high 0 AUX P1V5 Key VS8C low 0 high 0 Main P3V3 Key VSEC low 0 high 0 FireWire P1V95 Key VSFC low 0 high 0 AUX P3V3 Key F0Ac low 5000 high 16700 CPU 1 Inlet Key F2Ac low 5000 high 16700 CPU 2 Inlet Key F4Ac low 5000 high 16700 CPU 3 Inlet Key F6Ac low 5000 high 16700 CPU 4 Inlet Key F8Ac low 5000 high 16700 FB-DIMM 1 Inlet Key FAAc low 5000 high 16700 FB-DIMM 2 Inlet Key FCAc low 5000 high 16700 FB-DIMM 3 Inlet Key F1Ac low 2968 high 10000 CPU 1 Outlet Key F3Ac low 2968 high 10000 CPU 2 Outlet Key F5Ac low 2968 high 10000 CPU 3 Outlet Key F7Ac low 2968 high 10000 CPU 4 Outlet Key F9Ac low 2968 high 10000 FB-DIMM 1 Outlet Key FBAc low 2968 high 10000 FB-DIMM 2 Outlet Key FDAc low 2968 high 10000 FB-DIMM 3 Outlet Key FEAc low 7284 high 13900 Power Supply 1 Inlet Key FGAc low 7284 high 13900 Power Supply 2 Inlet Key FFAc low 6800 high 12800 Power Supply 1 Outlet Key FHAc low 6800 high 12800 Power Supply 2 Outlet Dumping Macmini6,2 from Macmini6_2 Name: Mac Mini (Late 2012) Memory: 2 slots with 16384 MB total Defaults: TC0D, temperature: TC0D Key VC0C low 0.54 high 1.63 CPU Core Key VN0R low 0.3 high 1.43 GFX VCore Key VD0R low 11.4 high 12.6 DC In Key VC2C low 0.67 high 0.98 CPU System Agent Key ID0R low 0 high 9 DC In Average Key IC0R low 0 high 8 CPU High Side Average Key IC0C low 0 high 94 CPU VCore Average Key IN1R low 0 high 5.5 PCH 1.05V Average Key IN0R low 0 high 33 GFX VCore Average Key IM0C low 0 high 12 Memory Average Key IC1C low 0 high 17.5 CPU I/O Key ID1R low 0 high 5 CPU 1.5V Average Key IC2C low 0 high 6 CPU System Agent Key TA1P low 10 high 75 Ambient 2 Key TC0D low 10 high 110 CPU Die Key TC0P low 10 high 100 CPU Proximity Key TW0P low 10 high 85 Airport Peninsula Key TM0P low 10 high 80 Memory Proximity Key TP0P low 10 high 100 Platform Controller Hub Key TA0P low 10 high 80 Ambient 1 Key TI0P low 10 high 85 Thunderbolt Proximity 1 Key TI1P low 10 high 85 Thunderbolt Proximity 2 Key Tp0C low 10 high 100 ACDC Key TC0C low 15 high 105 CPU Core 1 - DTS Key TC1C low 15 high 105 CPU Core 2 - DTS Key TC2C low 15 high 105 CPU Core 3 - DTS Key TC3C low 15 high 105 CPU Core 4 - DTS Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key F0Ac low 1800 high 5500 Exhaust Key PSTR low 0 high 0 Total Dumping Macmini6,1 from Macmini6_1 Name: Mac Mini (Late 2012) Memory: 2 slots with 16384 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0 high 53 CPU VCore Average Key IC0R low 0 high 8 CPU High Side Average Key IC1C low 0 high 17.5 CPU I/O Key IC2C low 0 high 6 CPU System Agent Key ID0R low 0 high 9 DC In Average Key ID1R low 0 high 5 CPU 1.5V Average Key IM0C low 0 high 12 Memory Average Key IN0R low 0 high 33 GFX VCore Average Key IN1R low 0 high 5.5 PCH 1.05V Average Key TA0P low 10 high 80 Ambient 1 Key TA1P low 10 high 75 Ambient 2 Key TC0D low 10 high 110 CPU Die Key TC0P low 10 high 100 CPU Proximity Key TI0P low 10 high 85 Thunderbolt Proximity 1 Key TI1P low 10 high 85 Thunderbolt Proximity 2 Key TM0P low 10 high 80 Memory Proximity Key TP0P low 10 high 100 Platform Controller Hub Key TW0P low 10 high 85 Airport Peninsula Key Tp0C low 10 high 100 ACDC Key VC0C low 0.54 high 1.63 CPU Core Key VC2C low 0.67 high 0.98 CPU System Agent Key VD0R low 11.4 high 12.6 DC In Key VN0R low 0.3 high 1.43 GFX VCore Key TC0C low 15 high 105 CPU Core 1 - DTS Key TC1C low 15 high 105 CPU Core 2 - DTS Key TC2C low 15 high 105 CPU Core 3 - DTS Key TC3C low 15 high 105 CPU Core 4 - DTS Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key F0Ac low 1800 high 5500 Exhaust Key PSTR low 0 high 0 Total Dumping Macmini5,3 from Macmini5_3 Name: Mac Mini (Mid 2011) Memory: 2 slots with 16384 MB total Defaults: TC0D, temperature: TC0D Key ID0R low 0 high 9 DC In Average Key IC0R low 0 high 8 CPU High Side Average Key IC0C low 0 high 94 CPU VCore Average Key IN0R low 0 high 33 GFX VCore Average Key IN1R low 0 high 5.5 PCH 1.05V Average Key IM0C low 0 high 12 Memory Average Key IC1C low 0 high 17.5 CPU I/O Key ID1R low 0 high 5 CPU 1.5V Average Key IC2C low 0 high 6 CPU System Agent Key TA0P low 10 high 80 Ambient 1 Key TA1P low 10 high 75 Ambient 2 Key TC0D low 10 high 105 CPU Die Key TC0P low 10 high 100 CPU Proximity Key TW0P low 10 high 85 Airport Peninsula Key TM0P low 10 high 80 Memory Proximity Key TP0P low 10 high 100 Platform Controller Hub Key TI0P low 10 high 85 Thunderbolt Proximity Key Tp0C low 10 high 100 ACDC Key VC0C low 0.54 high 1.63 CPU Core Key VN0R low 0.03 high 1.43 GFX VCore Key VD0R low 11.4 high 12.6 DC In Key VC2C low 0.67 high 0.98 CPU Core Key F0Ac low 2300 high 5500 Exhaust Dumping Macmini5,2 from Macmini5_2 Name: Mac Mini (Mid 2011) Memory: 2 slots with 16384 MB total Defaults: TC0D, temperature: TC0D, hidden IGPU Key IC0C low 0 high 53 CPU VCore Average Key IC1C low 0 high 17.5 CPU I/O Key IC2C low 0 high 6 CPU System Agent Key IC0R low 0 high 8 CPU High Side Average Key ID0R low 0 high 9 DC In Average Key ID1R low 0 high 5 CPU 1.5V Average Key IN1R low 0 high 5.5 PCH 1.05V Average Key IN0R low 0 high 33 GFX VCore Average Key IM0C low 0 high 12 Memory Average Key IG0C low 0 high 30 GPU VCore Average Key IG0R low 0 high 5 GPU High Side Average Key IN0R low 0 high 20 GFX VCore Average Key TA0P low 10 high 80 Ambient 1 Key TA1P low 10 high 75 Ambient 2 Key TC0D low 10 high 105 CPU Die Key TC0P low 10 high 100 CPU Proximity Key TW0P low 10 high 85 Airport Peninsula Key TM0P low 10 high 80 Memory Proximity Key TP0P low 10 high 100 Platform Controller Hub Key TI0P low 10 high 85 Thunderbolt Proximity Key Tp0C low 10 high 100 ACDC Key TG1D low 10 high 100 GPU Die - Digital Key TG0P low 10 high 100 GPU Proximity Key TG0D low 10 high 100 GPU Die - Analog Key TG0M low 10 high 75 GPU Memory Key VC0C low 0.54 high 1.63 CPU Core Key VN0R low 0 high 1.43 GFX VCore Key VD0R low 11.4 high 12.6 DC In Key VC2C low 0.67 high 0.98 CPU Core Key F0Ac low 1800 high 5500 Exhaust Dumping Macmini5,1 from Macmini5_1 Name: Mac Mini (Mid 2011) Memory: 2 slots with 16384 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0 high 53 CPU VCore Average Key IC1C low 0 high 17.5 CPU I/O Key IC2C low 0 high 6 CPU System Agent Key IC0R low 0 high 8 CPU High Side Average Key ID0R low 0 high 9 DC In Average Key ID1R low 0 high 5 CPU 1.5V Average Key IN1R low 0 high 5.5 PCH 1.05V Average Key IN0R low 0 high 33 GFX VCore Average Key IM0C low 0 high 12 Memory Average Key TA0P low 10 high 80 Ambient 1 Key TA1P low 10 high 75 Ambient 2 Key TC0D low 10 high 105 CPU Die Key TC0P low 10 high 100 CPU Proximity Key TW0P low 10 high 85 Airport Peninsula Key TM0P low 10 high 80 Memory Proximity Key TP0P low 10 high 100 Platform Controller Hub Key TI0P low 10 high 85 Thunderbolt Proximity Key Tp0C low 10 high 100 ACDC Key VC0C low 0.54 high 1.63 CPU Core Key VN0R low 0.3 high 1.43 GFX VCore Key VD0R low 11.4 high 12.6 DC In Key VC2C low 0.67 high 0.98 CPU Core Key F0Ac low 1800 high 5500 Exhaust Dumping Macmini7,1 from Macmini7_1 Name: Mac Mini (Late 2014) Memory: soldered slots with 16384 MB total Defaults: TCXC, temperature: TCXC Key VC0C low 0 high 0 CPU Core Low Side Key VM0C low 0 high 0 CPU/Mem Key IC1C low 0 high 0 CPU/Platform Controller Hub Key I50R low 0 high 0 CPU/Platform Controller Hub Key ID0R low 0 high 0 DC In Key IM0R low 0 high 0 Memory Key Tp0C low 0 high 0 PSU Analog Key IC0C low 0 high 0 CPU Core Low Side Key IM0C low 0 high 0 CPU/Mem Key VC1C low 0 high 0 CPU/Platform Controller Hub Key V50R low 0 high 0 5V Low Side Key VD0R low 0 high 0 DC In Key IC0R low 0 high 0 CPU High Side Key II0R low 0 high 0 Platform Controller Hub Key IAPC low 0 high 0 Wi-Fi Key IH0R low 0 high 0 HDD Key IH1R low 0 high 0 SSD Key Tm0p low 0 high 0 Logic Board Key Te0t low 0 high 0 Thunderbolt Diode Key TC0p low 0 high 0 CPU Proximity Key TA0p low 0 high 0 Ambient 2 Key TW0p low 0 high 0 Wi-Fi Proximity Key TA1p low 0 high 0 Ambient 1 Key TM0p low 0 high 0 Memory Proximity Key TA2p low 0 high 0 Ambient 3 Key TCXr low 0 high 0 CPU PECI DTS Key TC0c low 0 high 0 CPU Core 1 PECI Key TC1c low 0 high 0 CPU Core 2 PECI Key TCGc low 0 high 0 Intel GPU Key TCSc low 0 high 0 CPU System Agent Core PECI Key TPCd low 0 high 0 PCH Die Digital Key TCXC low 0 high 0 CPU Core Key PCPC low 0 high 0 CPU Package Core Key PCPG low 0 high 0 CPU Package GPU Key PCPT low 0 high 0 CPU Package Total Key PD0R low (null) high (null) DC In Key F0Ac low 1800 high 4800 Exhaust Key PSTR low 0 high 0 Total Dumping Macmini4,1 from Macmini4_1 Name: Mac Mini (Mid 2010) Memory: 2 slots with 8192 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0 high 44 CPU VCore Average Key IC0R low 0 high 4.5 CPU 1.05V Rail Average Key ID0R low 0 high 7.1 DC In Average Key IN0C low 0 high 23.8 MCP VCore Average Key IN1C low 0 high 4.8 MCP 1.5V Mem Average Key IM0R low 0 high 5.84 SoDimm VDD Average Key TA0P low 10 high 80 Ambient Key TC0D low 10 high 105 CPU Die Key TC0P low 10 high 100 CPU Proximity Key TW0P low 10 high 85 Airport Key TM0P low 10 high 80 Memory Key TN0D low 15 high 110 MCP Die Key TN1D low 15 high 110 MCP Internal Die Key TC0H low 5 high 80 CPU Heatsink Key TN0P low 10 high 100 MCP Proximity Key TH0P low 10 high 65 HDD 1 Key TO0P low 10 high 65 Optical/HDD 2 Key Tm0P low 10 high 80 Logic Board Center Key VC0C low 0.5 high 1.5 CPU Core Key VD0R low 11.4 high 12.6 DC In Key VN0C low 0.7875 high 0.975 MCP VCore Key F0Ac low 1800 high 5500 Exhaust Dumping Macmini3,1 from Macmini3_1 Name: Mac Mini Memory: 2 slots with 4096 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0 high 0 CPU VCore Average Key IC0R low 0 high 0 CPU 1.05V Rail Average Key ID0R low 0 high 0 DC In Average Key IN0C low 0 high 0 MCP VCore Average Key IN1C low 0 high 0 MCP 1.5V Mem Average Key IM0R low 0 high 0 SoDimm VDD Average Key IP0R low 0 high 0 PBus Key TC0D low 0 high 0 CPU Die Key TC0H low 0 high 0 CPU Heatsink Key TC0P low 0 high 0 CPU Proximity Key TH0P low 0 high 0 HDD Case Key TN0D low 0 high 0 MCP Die Key TN0H low 0 high 0 MCP Heatsink Key TN0P low 0 high 0 MCP Proximity Key TW0P low 0 high 0 AUX Key VC0C low 0 high 0 CPU Core Key VD0R low 0 high 0 DC In Key VN0C low 0 high 0 MCP VCore Key F0Ac low 1500 high 5500 Fan Dumping Macmini2,1 from Macmini2_1 Name: Mac Mini (Mid 2007) Memory: 2 slots with 2048 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0 high 0 CPU Core Key TA0P low 0 high 0 Ambient Air Key TC0D low 0 high 0 CPU Die Key TC0H low 0 high 0 CPU Heatsink Key TC0P low 0 high 0 CPU VR Area Key TN0P low 0 high 0 GPU Die Key TN1P low 0 high 0 GPU Die Key PC0C low 0 high 0 CPU Core Key PN0R low 0 high 0 Northbridge Rail Key F0Ac low 1500 high 5500 Exhaust Dumping Macmini1,1 from Macmini1_1 Name: Mac Mini (Early 2006) Memory: 2 slots with 2048 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0 high 0 CPU I-Sense Key IM0R low 0 high 0 Memory I-Sense Key IN0R low 0 high 0 Northbridge I-Sense Key TA0P low 0 high 0 Ambient Air Key TC0D low 0 high 0 CPU Die Key TC0H low 0 high 0 CPU Heatsink Key TC0P low 0 high 0 CPU VR Area Key TC1P low 0 high 0 CPU Proximity Key TN0P low 0 high 0 GPU Die Key TN1P low 0 high 0 GPU Die Key VC0C low 0 high 0 CPU V-Sense Key PC0C low 0 high 0 CPU Core Key PM0R low 0 high 0 Memory Rail Key PN0R low 0 high 0 Northbridge Rail Key F0Ac low 1500 high 5500 Fan Dumping MacBookPro9,2 from MacBookPro9_2 Name: MacBook Pro (13 inch, Mid 2012) Memory: 2 slots with 8192 MB total Defaults: TCXC, temperature: TCXC Key IC0R low 0 high 17.4 CPU (Core/GPU/DDR3/IO/System Agent) Key ID0R low 0 high 4.6 DC In Key IM0C low 0 high 9 DD3 1.5V Key IO0R low 0 high 8.80000 Other (5V, 3.3V) Key IPBR low 0 high 8.80000 Charger BMON Key TA0P low 10 high 65 Airflow Key TB1T low 10 high 60 Battery Sensor 1 Key TB2T low 10 high 60 Battery Sensor 2 Key TC0P low 10 high 95 CPU Proximity Key TCXC low 10 high 105 CPU Core - PECI Key TM0P low 10 high 65 Memory Proximity Key Th1H low 10 high 80 Fin Stack Key Ts0P low 10 high 50 Palm Rest Key VC0C low 0.5 high 1.7 CPU VCore Key VD0R low 0 high 21 DC In Key VN0C low 0 high 1.7 Intel GPU VCore Key VP0R low 7 high 16 P-Bus Key ALSL low 0 high 0 Ambient Light Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key TC1C low 15 high 105 CPU Core 1 - DTS Key TC2C low 15 high 105 CPU Core 2 - DTS Key F0Ac low 2000 high 6200 Exhaust Key PSTR low 0 high 0 System Total Key PDTR low 0 high 0 DC In Dumping MacBookPro9,1 from MacBookPro9_1 Name: MacBook Pro (17 inch, Mid 2012) Memory: 2 slots with 8192 MB total Defaults: TCXC, temperature: TCXC Key IC0R low 0.5 high 22.8 CPU (Core, GFX, DDR3, 1.05V, System Agent) Key ID0R low 0 high 4.6 DC In Key IG0R low 0 high 4.16 GPU (Core, FB, 1.0V) Key IHDC low 0 high 2.5 HDD Key IM0C low 0 high 9 DDR3 1.5V Key IO0R low 0 high 10.3 Other (5V, 3.3V) Key IPBR low 0 high 6.6 Charger BMON Key TA0P low 10 high 65 Airflow Key TB1T low 10 high 60 Battery Sensor 1 Key TB2T low 10 high 60 Battery Sensor 2 Key TC0P low 10 high 85 CPU Proximity Key TCXC low 10 high 105 CPU Core - PECI Key TG0D low 10 high 100 GPU Die - Analog Key TG0P low 10 high 85 GPU Proximity Key TM0P low 10 high 65 Memory Proximity Key TP0P low 10 high 80 Platform Controller Hub Key Th1H low 10 high 80 Right Fin Stack Proximity Key Th2H low 10 high 80 Left Heat Pipe & Fin Stack Proximity Key Ts0P low 10 high 50 Palm Rest Key VC0C low 0.4 high 1.7 CPU VCore Key VC2C low 8 high 2 CPU System Agent Key VD0R low 0 high 21 DC In Key VG0C low 0.5 high 1.8 GPU VCore Key VG3C low 0 high 2 GPU FB Key VN0C low 0 high 1.7 Intel GPU VCore Key VP0R low 7 high 16 P-Bus Key ALSL low 0 high 0 Ambient Light Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key TC1C low 15 high 105 CPU Core 1 - DTS Key TC2C low 15 high 105 CPU Core 2 - DTS Key TC3C low 15 high 105 CPU Core 3 - DTS Key TC4C low 15 high 105 CPU Core 4 - DTS Key F1Ac low 2000 high 6200 Rightside Key F0Ac low 2000 high 6200 Leftside Key PSTR low 0 high 0 System Total Key PDTR low 0 high 0 DC In Dumping MacBookPro8,3 from MacBookPro8_3 Name: MacBook Pro (17 inch) Memory: 2 slots with 8192 MB total Defaults: TC0C, temperature: TC0C Key IB0R low 0.1 high 18.333 Battery - BMON Key IC0R low 0.1 high 18.333 CPU (Core, GFX, DDR3, 1.05V, System Agent) Key ID0R low 0.1 high 4.85 DC In Key IG0R low 0 high 3.34 GPU (Core, FB, 1.0V) Key IO0R low 0.1 high 12.546 Other (5V, 3.3V) Key TB1T low 10 high 64 Battery Sensor 1 Key TB2T low 10 high 64 Battery Sensor 2 Key TC0C low 10 high 105 CPU Die - Digital Key TC0D low 10 high 105 CPU Die - Analog Key TC0P low 10 high 95 CPU Proximity Key TG0D low 10 high 100 GPU Die - Analog Key TG0P low 10 high 90 GPU Proximity Key THSP low 10 high 85 Thunderbolt Proximity Key TP0P low 10 high 85 Platform Controller Hub Key TPCD low 10 high 110 PCH Die - Digital Key Th1H low 10 high 75 Right Fin Stack Proximity Key Th2H low 10 high 75 Left Heat Pipe & Fin Stack Proximity Key Tm0P low 10 high 65 DC In Proximity Air Flow Key Ts0P low 10 high 56 Palm Rest Key VC0C low 0.1 high 1.565 CPU VCore Key VD0R low 0 high 18.5 DC In Key VG0C low 0.5 high 1.1 GPU VCore Key VN0C low 0.3 high 1.52 Intel GPU VCore Key VP0R low 8 high 13 P-Bus Key ALSL low 0 high 0 Ambient Light Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key PD0R low (null) high (null) DC In Key TC1C low 15 high 105 CPU Core 1 - DTS Key TC2C low 15 high 105 CPU Core 2 - DTS Key TC3C low 15 high 105 CPU Core 3 - DTS Key TC4C low 15 high 105 CPU Core 4 - DTS Key F1Ac low 2000 high 5500 Rightside Key F0Ac low 2000 high 5500 Leftside Dumping MacBookPro8,2 from MacBookPro8_2 Name: MacBook Pro (15 inch) Memory: 2 slots with 8192 MB total Defaults: TC0D, temperature: TC0D Key ID0R low 0.1 high 4.85 DC In Key IB0R low 0.1 high 18.333 Battery - BMON Key IC0R low 0.1 high 18.333 CPU (Core, GFX, DDR3, 1.05V, System Agent) Key IG0R low 0 high 3.34 Core, FB, 1.0V Key IO0R low 0.1 high 12.546 Other (5V, 3.3V) Key IC0C low 0.15 high 94 CPU Core - Load Side Key IN0C low 0.24 high 33 Intel GPU Key IC1C low 0.1 high 21.329 CPU I/O PP1V05 Key IM0C low 0.1 high 18.1 DDR3 Key IG0C low 0 high 28 GPU Core Key IC2C low 0.1 high 6 CPU System Agent S0 Key Ts0P low 10 high 56 Palm Rest Key TC0D low 10 high 105 CPU Die - Analog Key TC0P low 10 high 95 CPU Proximity Key TP0P low 10 high 85 Platform Controller Hub Key Tm0P low 10 high 60 Battery Charger Proximity Key Th1H low 10 high 75 Right Fin Stack Proximity Key TG0D low 10 high 100 GPU Die - Analog Key Th2H low 10 high 75 Left Heat Pipe & Fin Stack Proximity Key TG1D low 10 high 100 GPU Die - Digital Key TB1T low 10 high 64 Battery Sensor 1 Key TB2T low 10 high 64 Battery Sensor 2 Key TC0C low 10 high 105 CPU Die - Digital Core 0 Key TW0P low 10 high 75 Wireless Controller IC Key THSP low 10 high 85 Thunderbolt Proximity Key VC0C low 0.1 high 1.565 CPU VCore Key VP0R low 8 high 13 P-Bus Key VG0C low 0.5 high 1.16 GPU VCore Key VN0C low 0.3 high 1.52 Intel GPU VCore Key VD0C low 0 high 18.5 DC In Key ALSL low 0 high 0 Ambient Light Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key PD0R low (null) high (null) DC In Key TC1C low 15 high 105 CPU Core 1 - DTS Key TC2C low 15 high 105 CPU Core 2 - DTS Key TC3C low 15 high 105 CPU Core 3 - DTS Key TC4C low 15 high 105 CPU Core 4 - DTS Key F1Ac low 2000 high 5500 Rightside Key F0Ac low 2000 high 5500 Leftside Dumping MacBookPro8,1 from MacBookPro8_1 Name: MacBook Pro (13 inch) Memory: 2 slots with 8192 MB total Defaults: TC0D, temperature: TC0D Key IB0R low 2 high 7.14 Battery - BMON Key IC0C low 8 high 53 CPU VCore Key IC1C low 2 high 17.5 CPU I/O PP1V05 Key IC0R low 1.5 high 8 Computing (CPU VCore, DDR, I/O, System Agent) Key ID0R low 1.5 high 3.75 DC In Key IN0C low 2 high 36 Intel GPU Key IO0R low 0.2 high 8 Other (5V, 3.3V) Key TB1T low 15 high 60 Battery Sensor 1 Key TB2T low 15 high 60 Battery Sensor 2 Key TC0D low 15 high 105 CPU Die Key TC0P low 15 high 95 CPU Proximity Key Th1H low 15 high 75 Right Fin Stack Proximity Key TM0P low 15 high 75 5V / 3.3V Proximity Key Ts0P low 15 high 50 Palm Rest Key TP0P low 15 high 75 PCH-Thunderbolt Proximity Key TC0C low 15 high 105 CPU Die - Digital Core 0 Key TC1C low 0 high 0 CPU Die - Digital Core 1 Key TC2C low 0 high 0 CPU Die - Digital Core Key TW0P low 15 high 90 Wireless Controller IC Key VC0C low 0.3 high 1.565 CPU Core Key VD0R low 15.5 high 17.5 DC In Key VN0C low 0 high 0 Intel GPU VCore Key VP0R low 8.4 high 12.75 P-Bus Key ALSL low 0 high 0 Ambient Light Key PD0R low (null) high (null) DC In Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key F0Ac low 2000 high 6200 Exhaust Dumping MacBookPro7,1 from MacBookPro7_1 Name: MacBook Pro (13 inch, Mid 2010) Memory: 2 slots with 8192 MB total Defaults: TC0D, temperature: TC0D Key IB0R low 0 high 0 Battery Key IC0C low 0.153 high 48.4 CPU Core Key IC0R low 0.02 high 3.63 CPU VCore VTT Key ID0R low 0.02 high 5.5 DC In Rail Key IN0C low 0 high 0 MCP VCore Key IN1C low 0 high 0 MCP Memory Key TB1T low 10.2 high 70.4000 Battery Thermal Diode 1 Key TB2T low 10.2 high 70.4000 Battery Thermal Diode 2 Key TC0D low 10.2 high 115.5 CPU Die Key TC0P low 10.2 high 93.5 CPU Proximity Key TH0P low 0 high 0 HDD Flex Area Key Th1H low 0 high 0 Fin Stack Key TN0P low 10.2 high 80.3 MCP Proximity Top Side Key TN0D low 10.2 high 110 MCP Die Key TN1D low 10.2 high 110 MCP Die Key Ts0P low 10.2 high 61.6 Palm Rest Key VC0C low 0.51 high 1.65 CPU Core Key VN0C low 0 high 0 MCP Core Key VP0R low 9.18 high 14.3 P-Bus Key ALSL low 0 high 0 Ambient Light Key F0Ac low 2000 high 6200 Exhaust Dumping MacBookPro6,2 from MacBookPro6_2 Name: MacBook Pro (15 inch, Mid 2010) Memory: 2 slots with 8192 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0.58 high 30.4 CPU Core Key ID0R low 0.1 high 4.75 DC In Key IC1C low 0.1 high 3.7915 CPU Core - High Side Key IC2C low 0.5 high 26.6 CPU Front Side Bus 1.05V Key IG0C low 0.35 high 17.1 GPU Core Key IG1C low 0.1 high 5.7 GPU 1.8V Key IN0R low 0.12 high 16.15 MCP Core Key IN1R low 0 high 0 NorthBridge Rail Key IP0R low 0.1 high 6.27 Battery - BMON Key TB1T low 0 high 0 Battery Sensor 1 Key TB2T low 0 high 0 Battery Sensor 2 Key TB3T low 0 high 0 Battery Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU Proximity Key TG0D low 0 high 0 GPU Die - Digital Key TG0P low 0 high 0 GPU Proximity Key TG0T low 0 high 0 GPU Die - Analog Key TG0H low 0 high 0 Left Heat Pipe/Fin Stack Proximity Key TG1H low 0 high 0 Left Heat Pipe/Fin Stack Proximity Key TN0P low 0 high 0 MCP Proximity Key TN0D low 0 high 0 CPU VCore Key Th2H low 0 high 0 Right Fin Stack Proximity Key Tm0P low 0 high 0 Battery Charger Proximity Key Ts0P low 0 high 0 Palm Rest Key VC0C low 0 high 0 CPU Core Key VG0C low 0 high 0 GPU VCore Key VN0R low 0 high 0 MCP VCore Key VP0R low 0 high 0 P-Bus Key ALSL low 0 high 0 Ambient Light Key F1Ac low 2000 high 6000 Rightside Key F0Ac low 2000 high 6000 Leftside Dumping MacBookPro6,1 from MacBookPro6_1 Name: MacBook Pro (17 inch, Mid 2010) Memory: 2 slots with 8192 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0.64 high 30.4 CPU Core Key ID0R low 0.1 high 18.0139 DC In Key IC1C low 0.1 high 3.5126 CPU Core - High Side Key IC2C low 0.4859 high 23.0812 CPU Front Side Bus 1.05V Key IG1C low 0.1 high 4.9141 GPU 1.8V Key IN0R low 0.24 high 11.4 MCP Core Key IN1R low 0 high 0 NorthBridge Rail Key IP0R low 0.1 high 18.0139 Battery - BMON Key TB1T low 0 high 0 Battery Sensor 1 Key TB2T low 0 high 0 Battery Sensor 2 Key TB3T low 0 high 0 Battery Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU Proximity Key TG0D low 0 high 0 GPU Die - Digital Key TG0P low 0 high 0 GPU Proximity Key TG0T low 0 high 0 GPU Die - Analog Key TG0H low 0 high 0 Left Heat Pipe/Fin Stack Proximity Key TG1H low 0 high 0 Left Heat Pipe/Fin Stack Proximity Key TN0P low 0 high 0 MCP Proximity Key TN0D low 0 high 0 MCP Die Key Th2H low 0 high 0 Right Fin Stack Proximity Key Tm0P low 0 high 0 Battery Charger Proximity Key Ts0P low 0 high 0 Palm Rest Key VC0C low 0 high 0 CPU Core Key VG0C low 0 high 0 GPU VCore Key VN0R low 0 high 0 MCP VCore Key VP0R low 0 high 0 P-Bus Key ALSL low 0 high 0 Ambient Light Key F1Ac low 2000 high 5500 Rightside Key F0Ac low 2000 high 5500 Leftside Dumping MacBookPro5,5 from MacBookPro5_5 Name: MacBook Pro (13 inch, Mid 2009) Memory: 2 slots with 8192 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0 high 0 CPU Core Key ID0R low 0 high 0 DC In Key IP0R low 0 high 0 PBus Key IN1C low 0 high 0 Northbridge Rail Key TB1T low 0 high 0 Battery Thermal Diode 1 Key TB2T low 0 high 0 Battery Thermal Diode 2 Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU Proximity Key TN0P low 0 high 0 Northbridge Proximity Key TN0D low 0 high 0 Northbridge Proximity Key Th1H low 0 high 0 Fin Stack Key VC0C low 0 high 0 CPU Core Key F0Ac low 2000 high 6200 Exhaust Dumping MacBookPro5,4 from MacBookPro5_4 Name: MacBook Pro (15 inch, Mid 2009) Memory: 2 slots with 8192 MB total Defaults: TC0C, temperature: TC0C Key IB0R low 0 high 0 Battery - BMON Key IC0R low 0 high 0 CPU (Core, CPU, DDR3, 1.05V, System Agent) Key ID0R low 0 high 0 DC In Key IG0R low 0 high 0 GPU (Core, FB, 1.0V) Key IO0R low 0 high 0 Other (5V, 3.3V) Key TB1T low 0 high 0 Battery Sensor 1 Key TB2T low 0 high 0 Battery Sensor 2 Key TC0C low 0 high 0 CPU Die - Digital Key TC0D low 0 high 0 CPU Die - Analog Key TC0P low 0 high 0 CPU Proximity Key TG0D low 0 high 0 GPU Die - Analog Key TG0P low 0 high 0 GPU Proximity Key THSP low 0 high 0 Thunderbolt Proximity Key TP0P low 0 high 0 Platform Controller Hub Key TPCD low 0 high 0 PCH Die - Digital Key Th1H low 0 high 0 Right Fin Stack Proximity Key Th2H low 0 high 0 Left Heat Pipe & Fin Stack Proximity Key Tm0P low 0 high 0 DC In Proximity Air Flow Key Ts0P low 0 high 0 Palm Rest Key VC0C low 0 high 0 CPU VCore Key VD0R low 0 high 0 DC In Key VG0C low 0 high 0 GPU VCore Key VN0C low 0 high 0 Intel GPU VCore Key VP0R low 0 high 0 P-Bus Key ALSL low 0 high 0 Ambient Light Key PD0R low (null) high (null) DC In Key F1Ac low 2000 high 5700 Rightside Key F0Ac low 2000 high 5700 Leftside Dumping MacBookPro5,3 from MacBookPro5_3 Name: MacBook Pro (15 inch, Mid 2009) Memory: 2 slots with 8192 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0 high 0 CPU Core Key ID0R low 0 high 0 DC In Key IC1C low 0 high 0 CPU Core High Side Key IC2C low 0 high 0 CPU Front Side Bus 1.05V Key IG0C low 0 high 0 GPU Core Key IG1C low 0 high 0 GPU 1.8V Key IN0R low 0 high 0 MCP Core Key IN1R low 0 high 0 NorthBridge Rail Key IP0R low 0 high 0 Battery - BMON Key TB1T low 0 high 0 Battery Sensor 1 Key TB2T low 0 high 0 Battery Sensor 2 Key TB3T low 0 high 0 Battery Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU Proximity Key TG0D low 0 high 0 GPU Die - Digital Key TG0P low 0 high 0 GPU Proximity Key TG0T low 0 high 0 GPU Die - Analog Key TG0H low 0 high 0 Left Heat Pipe/Fin Stack Proximity Key TG1H low 0 high 0 Left Heat Pipe/Fin Stack Proximity Key TN0P low 0 high 0 MCP Proximity Key TN0D low 0 high 0 MCP Die Key Th2H low 0 high 0 Right Fin Stack Proximity Key Tm0P low 0 high 0 Battery Charger Proximity Key Ts0P low 0 high 0 Palm Rest Key VC0C low 0 high 0 CPU Core Key VG0C low 0 high 0 GPU VCore Key VN0R low 0 high 0 MCP VCore Key VP0R low 0 high 0 P-Bus Key ALSL low 0 high 0 Ambient Light Key F1Ac low 2000 high 6200 Rightside Key F0Ac low 2000 high 6200 Leftside Dumping MacBookPro5,2 from MacBookPro5_2 Name: MacBook Pro (17 inch) Memory: 2 slots with 8192 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0 high 0 CPU Core Key ID0R low 0 high 0 DC In Key IC1C low 0 high 0 CPU Core High Side Key IC2C low 0 high 0 CPU Front Side Bus 1.05V Key IG0C low 0 high 0 GPU Core Key IG1C low 0 high 0 GPU 1.8V Key IN0R low 0 high 0 MCP Core Key IN1R low 0 high 0 NorthBridge Rail Key IP0R low 0 high 0 Battery - BMON Key TB1T low 0 high 0 Battery Sensor 1 Key TB2T low 0 high 0 Battery Sensor 2 Key TB3T low 0 high 0 Battery Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU Proximity Key TG0D low 0 high 0 GPU Die - Digital Key TG0P low 0 high 0 GPU Proximity Key TG0T low 0 high 0 GPU Die - Analog Key TG0H low 0 high 0 Left Heat Pipe/Fin Stack Proximity Key TG1H low 0 high 0 Left Heat Pipe/Fin Stack Proximity Key TN0P low 0 high 0 MCP Proximity Key TN0D low 0 high 0 MCP Die Key Th2H low 0 high 0 Right Fin Stack Proximity Key Tm0P low 0 high 0 Battery Charger Proximity Key Ts0P low 0 high 0 Palm Rest Key VC0C low 0 high 0 CPU Core Key VG0C low 0 high 0 GPU VCore Key VN0R low 0 high 0 MCP VCore Key VP0R low 0 high 0 P-Bus Key ALSL low 0 high 0 Ambient Light Key F1Ac low 2000 high 6000 Rightside Key F0Ac low 2000 high 6000 Leftside Dumping MacBookPro5,1 from MacBookPro5_1 Name: MacBook Pro (15 inch, Late 2008) Memory: 2 slots with 4096 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0 high 0 CPU Core Key ID0R low 0 high 0 DC In Key IC1C low 0 high 0 CPU Core High Side Key IC2C low 0 high 0 CPU Front Side Bus 1.05V Key IG0C low 0 high 0 GPU Core Key IG1C low 0 high 0 GPU 1.8V Key IN0R low 0 high 0 MCP Core Key IN1R low 0 high 0 NorthBridge Rail Key IP0R low 0 high 0 Battery - BMON Key TB1T low 0 high 0 Battery Sensor 1 Key TB2T low 0 high 0 Battery Sensor 2 Key TB3T low 0 high 0 Battery Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU Proximity Key TG0D low 0 high 0 GPU Die - Digital Key TG0P low 0 high 0 GPU Proximity Key TG0T low 0 high 0 GPU Die - Analog Key TG0H low 0 high 0 Left Heat Pipe/Fin Stack Proximity Key TG1H low 0 high 0 Left Heat Pipe/Fin Stack Proximity Key TN0P low 0 high 0 MCP Proximity Key TN0D low 0 high 0 MCP Die Key Th2H low 0 high 0 Right Fin Stack Proximity Key Tm0P low 0 high 0 Battery Charger Proximity Key Ts0P low 0 high 0 Palm Rest Key VC0C low 0 high 0 CPU Core Key VG0C low 0 high 0 GPU VCore Key VN0R low 0 high 0 MCP VCore Key VP0R low 0 high 0 P-Bus Key ALSL low 0 high 0 Ambient Light Key F1Ac low 2000 high 6000 Rightside Key F0Ac low 2000 high 6000 Leftside Dumping MacBookPro4,1 from MacBookPro4_1 Name: MacBook Pro (15 inch, Early 2008) Memory: 2 slots with 4096 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0 high 0 CPU Core Key ID0R low 0 high 0 DC In Rail Key IG0C low 0 high 0 GPU Core Key IG1C low 0 high 0 GPU I-Sense Key IN0R low 0 high 0 Northbridge Rail 0 Key IN1R low 0 high 0 Northbridge Rail 1 Key IN2R low 0 high 0 Northbridge Rail 2 Key IP0R low 0 high 0 PBus Rail Key TALP low 0 high 0 Ambient Light Proximity Key TB0T low 0 high 0 Battery Thermal Diode Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU Proximity Key TG0D low 0 high 0 GPU Heatsink Key TG0H low 0 high 0 GPU Heatsink Key TW0P low 0 high 0 Airport Card Key Th0H low 0 high 0 Heat Pipe 0 Key Th1H low 0 high 0 Heat Pipe 1 Key Th2H low 0 high 0 Heat Pipe 2 Key Tm0P low 0 high 0 Palm Rest Key Ts0P low 0 high 0 Skin Proximity Key VC0C low 0 high 0 CPU Core Key VG0C low 0 high 0 GPU Core Key VG1C low 0 high 0 GPU Core Key VP0R low 0 high 0 P-Bus Key ALSL low 0 high 0 Ambient Light Key F1Ac low 2000 high 6000 Rightside Key F0Ac low 2000 high 6000 Leftside Dumping MacBookPro3,1 from MacBookPro3_1 Name: MacBook Pro (15 inch, Late 2007) Memory: 2 slots with 4096 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0 high 0 CPU Key ID0R low 0 high 0 DC In Rail Key IF0R low 0 high 0 Firewire Key IG0C low 0 high 0 GPU Key IM0R low 0 high 0 Memory Key IN0R low 0 high 0 Northbridge Rail 0 Key IN1R low 0 high 0 Northbridge Rail 1 Key TA1P low 0 high 0 Ambient Air Key TB0T low 0 high 0 Battery Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU Proximity Key TG0H low 0 high 0 GPU Heatsink Key TG0P low 0 high 0 GPU Proximity Key TG0T low 0 high 0 GPU Discrete Thermal Diode Key Th0H low 0 high 0 NB/CPU/GPU Heatpipe 0 Key Th1H low 0 high 0 NB/CPU/GPU Heatpipe 1 Key Ts0P low 0 high 0 Palm Rest Left Key Ts1P low 0 high 0 Palm Rest Right Key VC0C low 0 high 0 CPU Core Key VG0C low 0 high 0 GPU Key VP0R low 0 high 0 P-Bus Rail Key ALSL low 0 high 0 Ambient Light Key F1Ac low 2000 high 6000 Rightside Key F0Ac low 2000 high 6000 Leftside Dumping MacBookPro2,2 from MacBookPro2_2 Name: MacBook Pro (15 inch, Late 2006) Memory: 2 slots with 3072 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0 high 0 CPU Key ID0R low 0 high 0 DC In Rail Key IF0R low 0 high 0 Firewire Key IG0C low 0 high 0 GPU Key IM0R low 0 high 0 Memory Key IN0R low 0 high 0 Northbridge Rail 0 Key IN1R low 0 high 0 Northbridge Rail 1 Key TA1P low 0 high 0 Ambient Air Key TB0T low 0 high 0 Battery Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU Proximity Key TG0H low 0 high 0 GPU Heatsink Key TG0P low 0 high 0 GPU Proximity Key TG0T low 0 high 0 GPU Discrete Thermal Diode Key Th0H low 0 high 0 NB/CPU/GPU Heatpipe 0 Key Th1H low 0 high 0 NB/CPU/GPU Heatpipe 1 Key Ts0P low 0 high 0 Palm Rest Left Key Ts1P low 0 high 0 Palm Rest Right Key VC0C low 0 high 0 CPU Core Key VG0C low 0 high 0 GPU Key VP0R low 0 high 0 P-Bus Rail Key ALSL low 0 high 0 Ambient Light Key F1Ac low 2000 high 6000 Rightside Key F0Ac low 2000 high 6000 Leftside Dumping MacBookPro2,1 from MacBookPro2_1 Name: MacBook Pro (17 inch, Late 2006) Memory: 2 slots with 3072 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0 high 0 CPU Key ID0R low 0 high 0 DC In Rail Key IF0R low 0 high 0 Firewire Key IG0C low 0 high 0 GPU Key IM0R low 0 high 0 Memory Key IN0R low 0 high 0 Northbridge Rail 0 Key IN1R low 0 high 0 Northbridge Rail 1 Key TA1P low 0 high 0 Ambient Air Key TB0T low 0 high 0 Battery Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU Proximity Key TG0H low 0 high 0 GPU Heatsink Key TG0P low 0 high 0 GPU Proximity Key TG0T low 0 high 0 GPU Discrete Thermal Diode Key Th0H low 0 high 0 NB/CPU/GPU Heatpipe 0 Key Th1H low 0 high 0 NB/CPU/GPU Heatpipe 1 Key Ts0P low 0 high 0 Palm Rest Left Key Ts1P low 0 high 0 Palm Rest Right Key VC0C low 0 high 0 CPU Core Key VG0C low 0 high 0 GPU Key VP0R low 0 high 0 P-Bus Rail Key ALSL low 0 high 0 Ambient Light Key F1Ac low 2000 high 6000 Rightside Key F0Ac low 2000 high 6000 Leftside Dumping MacBookPro10,2 from MacBookPro10_2 Name: MacBook Pro (13 inch, Late 2012) Memory: soldered slots with 8192 MB total Defaults: TC0P, temperature: TCXC Key ALSL low 0 high 0 Ambient Light Key IC0R low 1.64 high 2.142 CPU Key ID0R low 1.5 high 4.5 DC In Key IM0C low 0.88 high 1.5 DDR3 Key IO0R low 0.2 high 1 Other (5V, 3.3V) Key IPBR low 0 high 1 Battery - BMON Key ISDC low 0 high 0.8 SSD Key TA0P low 10 high 65 Airflow (Fans) Key TA1P low 10 high 65 Airflow (DC-In) Key TB1T low 10 high 64 Battery Sensor 1 Key TB2T low 10 high 64 Battery Sensor 2 Key TC0P low 10 high 90 CPU Proximity Key TCXC low 10 high 105 CPU Die - Digital Key TM0P low 10 high 110 DDR3 Proximity Key TP0P low 10 high 75 Platform Controller Hub Proximity Key TPCD low 10 high 110 Platform Controller Hub Die Key TW0P low 10 high 110 X29 Proximity Key Th1H low 10 high 75 Left Fin Stack Proximity Key Th2H low 10 high 75 Right Fin Stack Proximity Key Ts0P low 10 high 45 Trackpad Key VC0C low 0.4 high 1.7 CPU VCore Key VC2C low 0.6 high 1 CPU System Agent Key VD0R low 15.5 high 17.3 DC In Key VN0C low 0 high 1 GPU Key VP0R low 8.75 high 14.528 P-Bus Key F1Ac low 2000 high 8208 Rightside Key F0Ac low 2160 high 7600 Leftside Key PSTR low 0 high 0 System Total Key PDTR low 0 high 0 DC In Dumping MacBookPro10,1 from MacBookPro10_1 Name: MacBook Pro (15 inch, Retina, Mid 2012) Memory: 2 slots with 16384 MB total Defaults: TCXC, temperature: TCXC Key IC0R low 0.329 high 2.891 CPU (Core, GFX, DDR3, 1.05V, System Agent) Key IC2C low 0.224 high 2.284 CPU System Agent S0 CPU Key ID0R low 1.08 high 4.671 DC In Key IG0R low 0.155 high 1.397 GPU (Core, FB, 1.0V) Key IHDC low 0.008 high 0.777 SSD Key IM0C low 0.143 high 1.415 DDR3 Key IO0R low 0.24 high 0.958 Other (5V, 3.3V) Key IPBR low 0.083 high 0.741 Battery - BMON Key TB1T low 10 high 64 Battery Sensor 1 Key TB2T low 10 high 64 Battery Sensor 2 Key TC0P low 10 high 90 CPU Proximity Key TCXC low 10 high 105 CPU Die - Digital Key TG0D low 10 high 100 GPU Die - Analog Key TG0P low 10 high 80 GeForce GPU Proximity Key TM0P low 10 high 110 DDR3 Proximity Key TP0P low 10 high 75 Platform Controller Hub Key TPCD low 10 high 110 PCH Die - Digital Key TW0P low 10 high 110 X29 Proximity Key Ta0P low 10 high 65 DC In Proximity Air Flow Key Th1H low 10 high 75 Right Fin Stack Proximity Key Th2H low 10 high 75 Left Heat Pipe & Fin Stack Proximity Key Ts0P low 10 high 56 Palm Rest Key VBLC low 40.5 high 55 Backlight Key VC0C low 0.29 high 1.35 CPU VCore Key VD0R low 15 high 21 DC In Key VG0C low 0.45 high 1.5 GeForce GPU VCore Key VP0R low 8.75 high 14.528 P-Bus Key ALSL low 0 high 0 Ambient Light Key F1Ac low 2000 high 5500 Rightside Key F0Ac low 2160 high 5940 Leftside Key TC1C low 15 high 105 CPU Core 1 - DTS Key TC2C low 15 high 105 CPU Core 2 - DTS Key TC3C low 15 high 105 CPU Core 3 - DTS Key TC4C low 15 high 105 CPU Core 4 - DTS Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key PSTR low 0 high 0 System Total Key PDTR low 0 high 0 DC In Dumping MacBookPro1,2 from MacBookPro1_2 Name: MacBook Pro (17 inch) Memory: 2 slots with 2048 MB total Defaults: TC0D, temperature: TC0D Key PC0C low 0 high 0 CPU Core Key PD0R low 0 high 0 DC In Rail Key PF0R low 0 high 0 Firewire Rail Key PG0C low 0 high 0 GPU Core Key PM0R low 0 high 0 Memory Rail Key PN0R low 0 high 0 Northbridge Rail Key PP0R low 0 high 0 PBus Rail Key IC0C low 0 high 0 CPU I-Sense Key ID0R low 0 high 0 DC I-Sense Key IF0R low 0 high 0 Firewire I-Sense Key IG0C low 0 high 0 GPU I-Sense Key IM0R low 0 high 0 Memory I-Sense Key IN0R low 0 high 0 Northbridge I-Sense Key IP0R low 0 high 0 PBus I-Sense Key TA0P low 0 high 0 Ambient Air Key TB0T low 0 high 0 Battery Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU VR Area Key TG0H low 0 high 0 GPU Heatsink Key TG0P low 0 high 0 GPU Proximity Key TG0T low 0 high 0 GPU Discrete Thermal Diode Key Th0H low 0 high 0 NB/CPU/GPU Heatpipe 0 Key Th1H low 0 high 0 NB/CPU/GPU Heatpipe 1 Key Ts0P low 0 high 0 Palm Rest Left Key Ts1P low 0 high 0 Palm Rest Right Key VC0C low 0 high 0 CPU V-Sense Key VG0C low 0 high 0 GPU V-Sense Key VP0R low 0 high 0 P-Bus V-Sense Key ALSL low 0 high 0 Ambient Light Key F1Ac low 1000 high 6000 Rightside Key F0Ac low 1000 high 6000 Leftside Dumping MacBookPro11,1 from MacBookPro11_1 Name: MacBook Pro (13 inch, Retina, Late 2013) Memory: soldered slots with 8192 MB total Defaults: TC0P, temperature: CUS1 Key ALSL low 0 high 0 Ambient Light Key IC0R low 0.01 high 2 CPU (CPU, I/O) Key IC2C low 0.25 high 10 CPU Core Key ID0R low 0 high 4 DC In Key IPBR low 0 high 1.5 Charger (BMON) Key ISDC low 0.0005 high 1 SSD 3.3V Key TA0P low 10 high 60 Air Flow Proximity Key TB1T low 10 high 60 Battery Sensor 1 Key TB2T low 10 high 60 Battery Sensor 2 Key TC0C low 10 high 100 CPU Core 1 Key TC0P low 10 high 85 CPU Proximity Key TC1C low 10 high 100 CPU Core 2 Key TCGC low 10 high 105 Intel GPU Key TCSA low 10 high 100 CPU System Agent Core Key TCXC low 10 high 105 CPU PECI Die Key TH0a low 10 high 100 SSD 1 Key TH0b low 10 high 100 SSD 2 Key TM0P low 10 high 70 DDR3 Proximity Key TPCD low 10 high 100 Platform Controller Hub PECI Key Th1H low 10 high 63 Right Fin Stack Key Ts0P low 10 high 42 Palm Rest Key VC0C low 1.6 high 1.9 CPU Vcore Key VD0R low 15.5 high 17.5 DC In Key VP0R low 9 high 13.5 PBus Key F0Ac low 1300 high 6208 Fan Key CUS1 low (null) high (null) CPU Cores Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key PSTR low 0 high 0 System Total Key PDTR low 0 high 0 DC In Dumping MacBookPro1,1 from MacBookPro1_1 Name: MacBook Pro (15 inch) Memory: 2 slots with 2048 MB total Defaults: TC0D, temperature: TC0D Key PC0C low 0 high 0 CPU Core Key PD0R low 0 high 0 DC In Rail Key PF0R low 0 high 0 Firewire Rail Key PG0C low 0 high 0 GPU Core Key PM0R low 0 high 0 Memory Rail Key PN0R low 0 high 0 Northbridge Rail Key PP0R low 0 high 0 PBus Rail Key IC0C low 0 high 0 CPU I-Sense Key ID0R low 0 high 0 DC I-Sense Key IF0R low 0 high 0 Firewire I-Sense Key IG0C low 0 high 0 GPU I-Sense Key IM0R low 0 high 0 Memory I-Sense Key IN0R low 0 high 0 Northbridge I-Sense Key IP0R low 0 high 0 PBus I-Sense Key TA0P low 0 high 0 Ambient Air Key TB0T low 0 high 0 Battery Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU VR Area Key TG0H low 0 high 0 GPU Heatsink Key TG0P low 0 high 0 GPU Proximity Key TG0T low 0 high 0 GPU Discrete Thermal Diode Key Th0H low 0 high 0 NB/CPU/GPU Heatpipe 0 Key Th1H low 0 high 0 NB/CPU/GPU Heatpipe 1 Key Ts0P low 0 high 0 Palm Rest Left Key Ts1P low 0 high 0 Palm Rest Right Key VC0C low 0 high 0 CPU V-Sense Key VG0C low 0 high 0 GPU V-Sense Key VP0R low 0 high 0 P-Bus V-Sense Key ALSL low 0 high 0 Ambient Light Key F1Ac low 1000 high 6000 Rightside Key F0Ac low 1000 high 6000 Leftside Dumping MacBookAir5,2 from MacBookAir5_2 Name: MacBook Air (13 inch, Mid 2012) Memory: soldered slots with 8192 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0 high 25 CPU VCore Key IC0R low 0 high 12 Chipset INA Highside Key ID0R low 0 high 3.5 DC IN Rail AMON Key IM0R low 0 high 10 Memory Key IN0C low 0 high 10 IG GFX VCore Key PC0C low 0 high 30.75 CPU Core Key PC0R low 0 high 106.8 CPU Computing High Side Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key PDTR low 0 high 55.3 DC-in Total Key PM0R low 0 high 15 DDR Memory Key PN0C low 0 high 12.3 Intel GPU Core Key TB0T low 10 high 50 Battery Key TB1T low 10 high 50 BMU 1 Key TB2T low 10 high 50 BMU 2 Key TC0C low 15 high 105 CPU Die - Digital Core 0 Key TC0D low 10 high 110 CPU Die Key TC0P low 20 high 87 CPU Proximity Key TC1C low 15 high 105 CPU Die - Digital Core 1 Key THSP low 10 high 65 Platform Controller Hub Key TM0P low 20 high 75 Inlet Key TPCD low 15 high 100 Platform Controller Hub Key Ta0P low 20 high 80 Inlet Key Th1H low 10 high 65 Fin Stack Key Tm0P low 10 high 65 Inlet Key Tm1P low 10 high 70 Inlet Key Ts0P low 10 high 50 Logic Board Key VC0C low 0 high 1.23 CPU VCore Key VC2C low 0.6075 high 0.99 CPU System Agent Key VD0R low 13.5 high 17.2 DCIN Key VN0C low 0 high 1.23 Intel GPU VCore Key VP0R low 6.4 high 8.9 PBus Rail Key F0Ac low 2000 high 6500 Exhaust Key PSTR low 0 high 0 System Total Key PDTR low 0 high 0 DC In Dumping MacBookAir5,1 from MacBookAir5_1 Name: MacBook Air (11 inch, Mid 2012) Memory: soldered slots with 8192 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0 high 25 CPU VCore Key IC0R low 0 high 12 Chipset INA Highside Key ID0R low 0 high 3.5 DC IN Rail AMON Key IM0R low 0 high 10 Memory Key IN0C low 0 high 10 IG GFX VCore Key PC0C low 0 high 30.75 CPU Core Key PC0R low 0 high 106.8 CPU Computing High Side Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key PDTR low 0 high 55.3 DC-in Total Key PM0R low 0 high 15 DDR Memory Key PN0C low 0 high 12.3 Intel GPU Core Key TB0T low 10 high 50 Battery Key TB1T low 10 high 50 BMU 1 Key TB2T low 10 high 50 BMU 2 Key TC0C low 15 high 105 CPU Die - Digital Core 0 Key TC0D low 10 high 110 CPU Die Key TC0P low 20 high 87 CPU Proximity Key TC1C low 15 high 105 CPU Die - Digital Core 1 Key THSP low 10 high 65 Platform Controller Hub Key TM0P low 20 high 75 Inlet Key TPCD low 15 high 100 Platform Controller Hub Key Ta0P low 20 high 80 Inlet Key Th1H low 10 high 65 Fin Stack Key Tm0P low 10 high 65 Inlet Key Tm1P low 10 high 70 Inlet Key Ts0P low 10 high 50 Logic Board Key VC0C low 0 high 1.23 CPU VCore Key VC2C low 0.6075 high 0.99 CPU System Agent Key VD0R low 13.5 high 17.2 DCIN Key VN0C low 0 high 1.23 Intel GPU VCore Key VP0R low 6.4 high 8.9 PBus Rail Key F0Ac low 2000 high 6500 Exhaust Key PSTR low 0 high 0 System Total Key PDTR low 0 high 0 DC In Dumping MacBookAir4,2 from MacBookAir4_2 Name: MacBook Air (13 inch, Mid 2011) Memory: soldered slots with 4096 MB total Defaults: TC0D, temperature: TC0D Key IB0r low 0 high 0 Charger Rail Key IC0C low 0 high 25 CPU VCore Key IC1C low 0 high 6 CPU I/O PP1V05 Key IC0R low 0 high 12 Chipset INA Highside Key IC1R low 0 high 12 Chipset SMBUS Highside Key ID0R low 0 high 3.5 DC In Rail Key IN0C low 0 high 10 IG GFX VCore Key IM0R low 0 high 10 Memory Power Key Ta0P low 20 high 80 Inlet Key TB0T low 10 high 50 Battery Key TB1T low 10 high 50 BMU 1 Key TB2T low 10 high 50 BMU 2 Key TC0C low 15 high 105 CPU Die - Digital Core 0 Key TC1C low 15 high 105 CPU Die - Digital Core 1 Key TC0D low 10 high 110 CPU Die Key TC0P low 20 high 87 CPU Proximity Key Th1H low 10 high 65 Fin Stack Key THSP low 10 high 65 Platform Controller Hub Key TM0P low 20 high 75 Inlet Key Tm0P low 10 high 65 Inlet Key Tm1P low 10 high 65 Inlet Key Ts0P low 10 high 50 Logic Board Key TPCD low 15 high 100 Platform Controller Hub Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key VC0C low 0.3 high 1.23 CPU Core Key VC1R low 0 high 0 CPU Highside Key VN0C low 0 high 1.23 Intel GPU VCore Key VP0R low 7.2 high 8.9 PBus Rail Key F0Ac low 2000 high 6500 Exhaust Dumping MacBookAir4,1 from MacBookAir4_1 Name: MacBook Air (11 inch, Mid 2011) Memory: soldered slots with 4096 MB total Defaults: TC0D, temperature: TC0D Key IB0r low 0 high 0 Charger Rail Key IC0C low 0 high 25 CPU VCore Key IC1C low 0 high 6 CPU I/O PP1V05 Key IC0R low 0 high 12 Chipset INA Highside Key IC1R low 0 high 12 Chipset SMBUS Highside Key ID0R low 0 high 3.5 DC In Rail Key IN0C low 0 high 10 IG GFX VCore Key IM0R low 0 high 10 Memory Power Key Ta0P low 20 high 80 Inlet Key TB0T low 10 high 50 Battery Key TB1T low 10 high 50 BMU 1 Key TB2T low 10 high 50 BMU 2 Key TC0C low 15 high 105 CPU Die - Digital Core 0 Key TC1C low 15 high 105 CPU Die - Digital Core 1 Key TC0D low 10 high 110 CPU Die Key TC0P low 20 high 87 CPU Proximity Key Th1H low 10 high 65 Fin Stack Key THSP low 10 high 65 Platform Controller Hub Key TM0P low 20 high 75 Inlet Key Tm0P low 10 high 65 Inlet Key Tm1P low 10 high 65 Inlet Key Ts0P low 10 high 50 Logic Board Key TPCD low 15 high 100 Platform Controller Hub Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key VC0C low 0.3 high 1.23 CPU Core Key VC1R low 7.2 high 8.9 CPU Highside Key VN0C low 0 high 1.23 Intel GPU VCore Key VP0R low 7.2 high 8.9 PBus Rail Key F0Ac low 2000 high 6500 Exhaust Dumping MacBookAir3,2 from MacBookAir3_2 Name: MacBook Air (13 inch, Late 2010) Memory: soldered slots with 4096 MB total Defaults: TC0D, temperature: TC0D Key IB0R low 0 high 0.3 PBus Rail Key ID0R low 0.5 high 3.29 DC In Rail Key IN0C low 1 high 15 MCP Core 0 Key IN1C low 0.3 high 1.2 MCP Core 1 Key IC0r low 0 high 0 CPU Core VTT Key TB1T low 15 high 50 BMU 1 Key TB2T low 15 high 50 BMU 2 Key TC0D low 33 high 110 CPU Die Key TC0P low 20 high 85 CPU Proximity Key Th1H low 15 high 49 Fin Stack Key TN0D low 32 high 100 MCP Die Top Side Key TN1D low 40 high 110 MCP Die Top Side Key TN0P low 25 high 82 MCP Proximity Key TM0P low 15 high 57 MCP Proximity Key Tp0P low 15 high 55 Logic Board Key Ts0P low 15 high 41 Logic Board Key VC0C low 0.725 high 1.1625 CPU VCore Key VN0C low 0.89 high 1 MPU VCore Key VP0R low 7.2 high 8.6 PBus Rail Key F0Ac low 2000 high 6500 Exhaust Dumping MacBookAir3,1 from MacBookAir3_1 Name: MacBook Air (11 inch, Late 2010) Memory: soldered slots with 4096 MB total Defaults: TC0D, temperature: TC0D Key IB0R low 0 high 0.3 PBus Rail Key ID0R low 0.576 high 3.2 DC In Rail Key IN0C low 1.3 high 15 MCP Core 0 Key IN1C low 0.472 high 3.5 MCP Core 1 Key IC0r low 0 high 0 CPU Core VTT Key TB1T low 10 high 50 BMU 1 Key TB2T low 10 high 50 BMU 2 Key TC0D low 20 high 110 CPU Die Key TC0P low 20 high 80 CPU Proximity Key Th1H low 10 high 55 Fin Stack Key TN0D low 20 high 100 MCP Die Top Side Key TN1D low 20 high 100 MCP Die Top Side Key TN0P low 25 high 80 MCP Proximity Key TM0P low 20 high 68 MCP Proximity Key Tp0P low 10 high 65 Logic Board Key Ts0P low 10 high 50 Logic Board Key VC0C low 0.725 high 1.1625 CPU VCore Key VP0R low 7.2 high 8.9 PBus Rail Key F0Ac low 2000 high 6500 Exhaust Dumping MacBookAir2,1 from MacBookAir2_1 Name: MacBook Air (13 inch) Memory: soldered slots with 2048 MB total Defaults: TC0D, temperature: TC0D Key IB0R low 0 high 0 Battery Rail Key ID0R low 0 high 0 DC In Rail Key IN0C low 0 high 0 MCP Core Key Ic0R low 0 high 0 Sensor Rail Key TB0T low 0 high 0 Battery Thermal Diode 0 Key TB1T low 0 high 0 Battery Thermal Diode 1 Key TB2T low 0 high 0 Battery Thermal Diode 2 Key TC0D low 0 high 0 CPU Die Key Th0P low 0 high 0 CPU Proximity Key Th0H low 0 high 0 Heat Pipe Heatsink Key TN0D low 0 high 0 MCD Die Key Tp0P low 0 high 0 Power Supply Proximity Key Tp1P low 0 high 0 Logic Board Front Edge Key Ts0P low 0 high 0 Skin Key TV0P low 0 high 0 Air Vent Exit Key TW0P low 0 high 0 Airport Key VD0R low 0 high 0 DC In Rail Key VN0C low 0 high 0 MPU Core Key VP0R low 0 high 0 PBus Rail Key F0Ac low 1800 high 6200 Exhaust Dumping MacBookAir1,1 from MacBookAir1_1 Name: MacBook Air (13 inch, Early 2008) Memory: soldered slots with 2048 MB total Defaults: TC0D, temperature: TC0D Key IB0R low 0 high 0 Battery Rail Key ID0R low 0 high 0 DC In Rail Key IG0C low 0 high 0 CPU Core Key Ic0R low 0 high 0 Sensor Rail Key TB0T low 0 high 0 Battery Thermal Diode 0 Key TB1T low 0 high 0 Battery Thermal Diode 1 Key TB2T low 0 high 0 Battery Thermal Diode 2 Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU Proximity Key Th0H low 0 high 0 Heat Pipe Heatsink Key Tp0P low 0 high 0 Power Supply Key Ts0P low 0 high 0 Skin Key TW0P low 0 high 0 Airport Key VC0C low 0 high 0 CPU Core Key VD0R low 0 high 0 DC In Rail Key VG0C low 0 high 0 GPU Core Key VP0R low 0 high 0 PBus Rail Key ALSL low 0 high 100 Ambient Light Sensor Key F0Ac low 2500 high 6200 Exhaust Dumping MacBook7,1 from MacBook7_1 Name: MacBook (13 inch, Mid 2010) Memory: 2 slots with 4096 MB total Defaults: TC0D, temperature: TC0D Key IB0R low 0.153 high 8.778 Battery Key IC0C low 0.5916 high 30.305 CPU Key IC0R low 0.0673 high 3.6636 CPU VCore VTT Key ID0R low 0.102 high 5.175 DC In Key IN0C low 0.3528 high 18.074 MCP VCore Key IN1C low 0.073 high 3.739 MCP Memory Key TB1T low 15.3 high 70.4000 Battery Thermal Diode 1 Key TB2T low 15.3 high 70.4000 Battery Thermal Diode 2 Key TC0D low 15.3 high 115.5 CPU Die Key TC0P low 15.3 high 93.5 CPU Proximity Key TH0P low 0 high 0 HDD Flex Area Key Th1H low 15.5 high 82.5 Fin Stack Key TN0P low 15.3 high 80.3 MCP Proximity Top Side Key TN0D low 15.3 high 110 MCP Die Key TN1D low 15.3 high 110 MCP Die Key Ts0P low 15.3 high 61.6 Palm Rest Key VC0C low 0.0306 high 1.65 CPU Core Key VN0C low 0.0306 high 1.65 MCP Core Key VP0R low 9.18 high 14.3 PBus Rail Key F0Ac low 2000 high 6200 Exhaust Dumping MacBook6,1 from MacBook6_1 Name: MacBook (13 inch, Late 2009) Memory: 2 slots with 4096 MB total Defaults: TC0D, temperature: TC0D Key IB0R low 0 high 0 Battery Key IC0C low 0 high 0 CPU Key IC0R low 0 high 0 CPU VCore VTT Key ID0R low 0 high 0 DC In Key IN0C low 0 high 0 MCP VCore Key IN1C low 0 high 0 MCP Memory Key TB1T low 0 high 0 Battery Thermal Diode 1 Key TB2T low 0 high 0 Battery Thermal Diode 2 Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU Proximity Key TH0P low 0 high 0 HDD Flex Area Key Th1H low 0 high 0 Fin Stack Key TN0P low 0 high 0 MCP Proximity Top Side Key TN0D low 0 high 0 MCP Die Key TN1D low 0 high 0 MCP Die Key Ts0P low 0 high 0 Palm Rest Key VC0C low 0 high 0 CPU Core Key VN0C low 0 high 0 MCP Core Key VP0R low 0 high 0 PBus Rail Key F0Ac low 2000 high 6200 Exhaust Dumping MacBook5,2 from MacBook5_2 Name: MacBook (13 inch) Memory: 2 slots with 4096 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0 high 0 CPU Key IC0R low 0 high 0 CPU Core High Side Key ID0R low 0 high 0 DC In Key IP0R low 0 high 0 PBus Rail Key IN1C low 0 high 0 Northbridge Rail Key TB1T low 0 high 0 Battery Thermal Diode 1 Key TB2T low 0 high 0 Battery Thermal Diode 2 Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU Proximity Key TN0P low 0 high 0 NB Proximity Top Side Key TN0D low 0 high 0 MCP Die Key Th0H low 0 high 0 HeatPipe Heatsink Key Th1H low 0 high 0 Fin Stack Key VC0C low 0 high 0 CPU Core Key VP0R low 0 high 0 PBus Rail Key ALSL low 0 high 0 Ambient Light Key F0Ac low 1800 high 6200 Exhaust Dumping MacBook5,1 from MacBook5_1 Name: MacBook (13 inch, Late 2008) Memory: 2 slots with 4096 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0 high 0 CPU Key IC0R low 0 high 0 CPU Core High Side Key ID0R low 0 high 0 DC In Key IP0R low 0 high 0 PBus Rail Key IN1C low 0 high 0 Northbridge Rail Key TB1T low 0 high 0 Battery Thermal Diode 1 Key TB2T low 0 high 0 Battery Thermal Diode 2 Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU Proximity Key TN0P low 0 high 0 NB Proximity Top Side Key TN0D low 0 high 0 MCP Die Key Th0H low 0 high 0 HeatPipe Heatsink Key Th1H low 0 high 0 Fin Stack Key VC0C low 0 high 0 CPU Core Key VP0R low 0 high 0 PBus Rail Key ALSL low 0 high 0 Ambient Light Key F0Ac low 1800 high 6200 Exhaust Dumping MacBook4,1 from MacBook4_1 Name: MacBook (13 inch, Early 2008) Memory: 2 slots with 4096 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0 high 0 CPU Key ID0R low 0 high 0 DC In Key IG0C low 0 high 0 GPU Core Key IN0R low 0 high 0 Northbridge Rail 0 Key IN1R low 0 high 0 Northbridge Rail 1 Key IP0R low 0 high 0 PBus Rail Key TB0T low 0 high 0 Battery Thermal Diode Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU Proximity Key TM0P low 0 high 0 Underneath SODIMM Key TN0P low 0 high 0 NB Proximity Top Side Key TW0P low 0 high 0 Airport Proximity Key Th0H low 0 high 0 HeatPipe Heatsink 0 Key Th1H low 0 high 0 HeatPipe Heatsink 1 Key VC0C low 0 high 0 CPU Core Key VG0C low 0 high 0 GPU Core Key VP0R low 0 high 0 PBus Rail Key F0Ac low 1800 high 6200 Exhaust Dumping MacBook3,1 from MacBook3_1 Name: MacBook (13 inch, Late 2007) Memory: 2 slots with 4096 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0 high 0 CPU Key ID0R low 0 high 0 DC In Key IG0C low 0 high 0 GPU Core Key IN0R low 0 high 0 Northbridge Rail 1 Key IN1R low 0 high 0 Northbridge Rail 2 Key IP0R low 0 high 0 PBus Rail Key TB0T low 0 high 0 Battery Thermal Diode Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU Proximity Key TM0P low 0 high 0 Underneath SODIMM Key TN0P low 0 high 0 NB Proximity Top Side Key TW0P low 0 high 0 Airport Proximity Key Th0H low 0 high 0 HeatPipe Heatsink 0 Key Th1H low 0 high 0 HeatPipe Heatsink 1 Key VC0C low 0 high 0 CPU Core Key VG0C low 0 high 0 GPU Core Key VP0R low 0 high 0 PBus Rail Key F0Ac low 1800 high 6200 Exhaust Dumping MacBook2,1 from MacBook2_1 Name: MacBook (13 inch) Memory: 2 slots with 2048 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0 high 0 CPU Key ID0R low 0 high 0 DC In Key IN0R low 0 high 0 Northbridge Rail 0 Key IN1R low 0 high 0 Northbridge Rail 1 Key IP0R low 0 high 0 PBus Rail Key TB0T low 0 high 0 Battery Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU VR Area Key TM0P low 0 high 0 FBDIMM Riser Incoming Air Key TN0P low 0 high 0 NB Proximity Key TN1P low 0 high 0 NB Proximity Key Th0H low 0 high 0 NB/CPU/GPU HeatPipe 0 Key Th1H low 0 high 0 NB/CPU/GPU HeatPipe 1 Key VC0C low 0 high 0 CPU Core Key VP0R low 0 high 0 PBus Rail Key F0Ac low 1800 high 6200 Exhaust Dumping MacBook1,1 from MacBook1_1 Name: MacBook (13 inch) Memory: 2 slots with 2048 MB total Defaults: TC0D, temperature: TC0D Key IC0C low 0 high 0 CPU I-Sense Key ID0R low 0 high 0 DC I-Sense Key IN0R low 0 high 0 Northbridge I-Sense Key IN1R low 0 high 0 Northbridge I-Sense Key IP0R low 0 high 0 PBus I-Sense Key PC0C low 0 high 0 CPU Core Key PD0R low 0 high 0 DC In Rail Key PN0R low 0 high 0 Northbridge Rail Key PP0R low 0 high 0 PBus Rail Key TB0T low 0 high 0 Battery Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU VR Area Key TM0P low 0 high 0 FBDIMM Riser Incoming Air Key TN0P low 0 high 0 NB Proximity Key TN1P low 0 high 0 NB Proximity Key Th0H low 0 high 0 NB/CPU/GPU HeatPipe 0 Key Th1H low 0 high 0 NB/CPU/GPU HeatPipe 1 Key Ts0P low 0 high 0 Palm Rest Key VC0C low 0 high 0 CPU V-Sense Key VP0R low 0 high 0 PBus V-Sense Key F0Ac low 1500 high 6200 Exhaust Dumping MacBook8,1 from MacBook8_1 Name: MacBook (12 inch, Retina, Mid 2015) Memory: soldered slots with 8192 MB total Defaults: TCXC, temperature: CUS1 Key IBAC low 0 high 0 Battery Key IC0R low 0 high 0 CPU Computing High Side Key ID0R low 0 high 0 DC In Key IPBF low 0 high 0 Battery Discharge Key IPBR low 0 high 0 Battery PBus Key PC0R low 0 high 0 CPU Computing High Side Key PCPC low 0 high 0 CPU Package Core Key PCPG low 0 high 0 CPU Package GPU Key PCPT low 0 high 0 CPU Package Total Key PDTR low 0 high 0 DC In Key PPBR low 0 high 0 Battery PBus Key PSTR low 0 high 0 Total Power Key TB0T low 0 high 0 Battery Key TB1T low 0 high 0 Battery Sensor 1 Key TB2T low 0 high 0 Battery Sensor 2 Key TC0P low 0 high 0 CPU Proximity Key TC1C low 0 high 0 CPU Core 1 Key TC2C low 0 high 0 CPU Core 2 Key TCGC low 0 high 0 Intel GPU Key TCHP low 0 high 0 Charger Proximity Key TCSA low 0 high 0 CPU System Agent Core Key TCXC low 0 high 0 CPU Core PECI Key TM0P low 0 high 0 Memory Proximity Key TPCD low 0 high 0 Platform Controller Hub Key TW0P low 0 high 0 Wireless Proximity Key Th0N low 0 high 0 SSD Key Ts0P low 0 high 0 Trackpad Key VACC low 0 high 0 ACC voltage Key VCFR low 0 high 0 FIVR CPU Supply Key VD0R low 0 high 0 DC In Key VP0R low 0 high 0 PBus Rail Key CUS1 low (null) high (null) CPU Cores Dumping MacBookPro15,1 from MacBookPro15_1 Name: MacBook Pro (15 inch, Retina & Touch Bar, Mid 2018) Memory: soldered slots with 32768 MB total Defaults: TCXC, temperature: TCXC Key IC0R low 0 high 0 CPU Computing Highside Key IPBR low 0 high 0 PBus Key ID0R low 0 high 0 DC In Key ICTC low 0 high 0 Intel GPU Key PC0R low 0 high 0 CPU Computing Highside Key PPBR low 0 high 0 Battery Current Key PG0R low 0 high 0 Radeon High Side Key Ts0P low 0 high 0 Palm Rest 1 Key Ts1P low 0 high 0 Palm Rest 2 Key TB1T low 0 high 0 Battery Sensor 1 Key TB2T low 0 high 0 Battery Sensor 2 Key TPCD low 0 high 0 Platform Controller Hub Die Key TC1C low 0 high 0 CPU Core 1 Key TC2C low 0 high 0 CPU Core 2 Key TC3C low 0 high 0 CPU Core 3 Key TC4C low 0 high 0 CPU Core 4 Key TC5C low 0 high 0 CPU Core 5 Key TC6C low 0 high 0 CPU Core 6 Key TCGC low 0 high 0 Intel GPU Key TCSA low 0 high 0 CPU System Agent Core Key TCXC low 0 high 0 CPU PECI Key TaLC low 0 high 0 Airflow Left Key TTLD low 0 high 0 Thunderbolt Left Proximity Key Th1H low 0 high 0 Right Fin Stack Key Th2H low 0 high 0 Left Fin Stack Key TM0P low 0 high 0 Memory Proximity Key TC0P low 0 high 0 CPU Proximity Key TG0P low 0 high 0 Radeon GPU Proximity Key TW0P low 0 high 0 Airport Key TaRC low 0 high 0 Airflow Right Key TTRD low 0 high 0 Thunderbolt Right Proximity Key TGVP low 0 high 0 Radeon Memory Proximity Key VG2C low 0 high 0 Radeon VDDCI Key VP0R low 0 high 0 PBus Key VD0R low 0 high 0 DC In Key VCSC low 0 high 0 CPU System Agent Key VCAC low 0 high 0 CPU IA Key VCTC low 0 high 0 Intel GPU Key VG0C low 0 high 0 Radeon Core Key F0Ac low 2160 high 5297 Leftside Key F1Ac low 2000 high 5489 Rightside Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key PSTR low 0 high 0 System Total Key PDTR low 0 high 0 DC In Dumping MacBookPro13,2 from MacBookPro13_2 Name: MacBook Pro (13 inch, Retina & Touch Bar, Late 2016) Memory: soldered slots with 16384 MB total Defaults: TCXC, temperature: TCXC Key I18C low 0 high 0 1.8V Key IAPC low 0 high 0 Wireless Key IB0L low 0 high 0 Battery Key IBLR low 0 high 0 Display Backlight Key IBTC low 0 high 0 Bluetooth Key ISCC low 0 high 0 Platform Controller Hub PC Key IC0R low 0 high 0 CPU GPU/VCCIO/MEM Key ICAC low 0 high 0 CPU IA Core Key ICAM low 0 high 0 CPU IA Core (IMON) Key ICEC low 0 high 0 CPU VccEDRAM Key ICGC low 0 high 0 Intel GPU Key ICGM low 0 high 0 Intel GPU (IMON) Key ICMC low 0 high 0 Camera Key ICSC low 0 high 0 CPU VCCSA Key ID0R low 0 high 0 DC In (AMON) Key IHCC low 0 high 0 SSD 3.3V Key IHNC low 0 high 0 SSD NAND Key IKBC low 0 high 0 Keyboard Backlight Key ILDC low 0 high 0 Display Key IM0C low 0 high 0 1.2V (CPU & Memory) Key IM1C low 0 high 0 1.8V Memory Key IMCC low 0 high 0 1.2V CPU Key IO3R low 0 high 0 3.3V Other Key IO5R low 0 high 0 5V Other Key IPBR low 0 high 0 Battery (BMON) Key IS1C low 0 high 0 1.0V Southbridge IO Key IT3C low 0 high 0 Keyboard/Trackpad Key ITAR low 0 high 0 Trackpad Actuator Key IULC low 0 high 0 Left Thunderbolt Key IURC low 0 high 0 Right Thunderbolt Key PC0R low 0 high 0 CPU Highside (PBUS) Key PCAC low 0 high 0 CPU Core Key PCAM low 0 high 0 CPU Core (IMON) Key PCEC low 0 high 0 CPU VccEDRAM Key PCGC low 0 high 0 Intel GPU Key PCGM low 0 high 0 Intel GPU (IMON) Key PCSC low 0 high 0 CPU VCCSA Key PD0R low 0 high 0 USBC/MPM Input Key PHCC low 0 high 0 SSD 3.3V S5 Key PHNC low 0 high 0 NAND 2.7V S4 Key PM0C low 0 high 0 Memory 1.2V S3 Key PM1C low 0 high 0 Memory 1.8V Key PMCC low 0 high 0 CPU/Memory 1.2V Key PO3R low 0 high 0 3.3V S4 Key PO5R low 0 high 0 5V S4 Key PPBR low 0 high 0 Battery (BMON) Key PS1C low 0 high 0 Southbridge IO 1.0V Key PTAR low 0 high 0 Trackpad Actuator Key TB1T low 0 high 0 Battery Sensor 1 Key TB2T low 0 high 0 Battery Sensor 2 Key TTLD low 0 high 0 Left Thunderbolt Die Key TTRD low 0 high 0 Right Thunderbolt Die Key TC0P low 0 high 0 CPU Proximity Key TC1C low 0 high 0 CPU Digital Core 1 Key TC2C low 0 high 0 CPU Digital Core 2 Key TCGC low 0 high 0 Intel GPU Key TCSA low 0 high 0 CPU System Agent Core Key TCXC low 0 high 0 CPU Core (PECI) Key TH0A low 0 high 0 SSD Proximity Key TH0B low 0 high 0 NAND Proximity 1 Key TH0C low 0 high 0 NAND Proximity 2 Key TM0P low 0 high 0 Memory Proximity Key TPCD low 0 high 0 Platform Controller Hub Die Key TW0P low 0 high 0 Airport Proximity Key TaLC low 0 high 0 Airflow Left Side Key TaRC low 0 high 0 Airflow Right Side Key Th1H low 0 high 0 Fin Stack Proximity Right Key Th2H low 0 high 0 Fin Stack Proximity Left Key Ts0P low 0 high 0 Palm Rest Key Ts1P low 0 high 0 Trackpad Actuator Key VCAC low 0 high 0 CPU IA Core Key VCGC low 0 high 0 Intel GPU Key VCSC low 0 high 0 CPU VCCSA Key VD0R low 0 high 0 DC In Key VP0R low 0 high 0 PBus Key VSCC low 0 high 0 Southbridge VCC Key F0Ac low 1250 high 6336 Left Fan Key F1Ac low 1350 high 6864 Right Fan Key PCPC low 0 high 0 CPU Package Core Key PCPG low 0 high 0 CPU Package GPU Key PCPT low 0 high 0 CPU Package Total Key PSTR low 0 high 0 System Total Key PDTR low 0 high 0 DC In Dumping FauxMac from FauxMac Name: FauxMac Memory: soldered slots with 0 MB total Defaults:, temperature: Dumping MacBookAir7,2 from MacBookAir7_2 Name: MacBook Air (13 inch, Mid 2015) Memory: soldered slots with 8192 MB total Defaults: TCXC, temperature: TCXC Key IBAC low 0 high 0 Battery Key IC0R low 0 high 0 CPU Computing High Side Key ICS0 low 0 high 0 CPU Core Key ICS1 low 0 high 0 CPU Load Current Monitor Key ID0R low 0 high 0 DC In Rail Key IM3C low 0 high 0 DDR S3 Key IPB1 low 0 high 0 BMON Discrete Key IPBR low 0 high 0 Battery PBus Key ISDC low 0 high 0 SSD Key PC0R low 0 high 0 CPU Computing High Side Key PCPC low 0 high 0 CPU Package Core Key PCPG low 0 high 0 CPU Package GPU Key PCPT low 0 high 0 CPU Package Total Key PDTR low 0 high 0 DC In Total Key PPBR low 0 high 0 Battery PBus Key TB0T low 0 high 0 Battery Key TB1T low 0 high 0 Battery Sensor 1 Key TB2T low 0 high 0 Battery Sensor 2 Key TC0P low 0 high 0 CPU Proximity Key TC1C low 0 high 0 CPU Core 1 Key TC2C low 0 high 0 CPU Core 2 Key TCGC low 0 high 0 Intel GPU Key TCHP low 0 high 0 Charger Proximity Key TCSA low 0 high 0 CPU System Agent Core Key THSP low 0 high 0 T29 Proximity Key TM0P low 0 high 0 Memory Proximity Key TPCD low 0 high 0 Platform Controller Hub Key TS2P low 0 high 0 S2 Camera Proximity Key TW0P low 0 high 0 Wireless Proximity Key Ta0P low 0 high 0 Air Flow Key Th1H low 0 high 0 Fin Stack Key Tm0P low 0 high 0 Logic Board Top Side Key Ts0P low 0 high 0 Trackpad Key VC1C low 0 high 0 1.05V S0 Key VCS0 low 0 high 0 CPU Core Key VD0R low 0 high 0 DC In Key VP0R low 0 high 0 PBus Rail Key F0Ac low 1200 high 6500 Exhaust Key PSTR low 0 high 0 System Total Key PDTR low 0 high 0 DC In Dumping MacBookPro11,4 from MacBookPro11_4 Name: MacBook Pro (15 inch, Retina, Mid 2015) Memory: 2 slots with 16384 MB total Defaults: TCXC, temperature: TCXC Key IC0C low 0 high 0 CPU High (CPU, I/O) Key ID0R low 0 high 0 DC In Key IHDC low 0 high 0 SSD Key IPBR low 0 high 0 Charger (BMON) Key IC0R low 0 high 0 CPU Key IO3R low 0 high 0 Other 3.3V Key IO5R low 0 high 0 Other 5V Key IG0R low 0 high 0 GPU Key IM0C low 0 high 0 Memory Key IC1C low 0 high 0 Platform Controller Hub Core Key IC2C low 0 high 0 CPU Load Current Monitor Key IC3C low 0 high 0 CPU DDR Key ILDC low 0 high 0 LCD Panel Key IBLC low 0 high 0 LCD Backlight Key IAPC low 0 high 0 Airport Key IHSC low 0 high 0 Thunderbolt Key ICMC low 0 high 0 S2 Key TC0P low 0 high 0 CPU Proximity Key TP0P low 0 high 0 Platform Controller Hub Key TM0P low 0 high 0 Memory Proximity Key Ta0P low 0 high 0 Air Flow Proximity Key Th2H low 0 high 0 Left Fin Stack Key Th1H low 0 high 0 Right Fin Stack Key TW0P low 0 high 0 Airport Proximity Key Ts0P low 0 high 0 Palm Rest Key Ts1P low 0 high 0 Palm Rest Actuator Key TB1T low 0 high 0 Battery Sensor 1 Key TB2T low 0 high 0 Battery Sensor 2 Key TH0A low 0 high 0 SSD A Key TH0B low 0 high 0 SSD B Key TC1C low 0 high 0 CPU Core 1 Key TC2C low 0 high 0 CPU Core 2 Key TC3C low 0 high 0 CPU Core 3 Key TC4C low 0 high 0 CPU Core 4 Key TCXC low 0 high 0 CPU PECI Die Key TCGC low 0 high 0 Intel GPU Key TPCD low 0 high 0 Platform Controller Hub PECI Key TCSA low 0 high 0 CPU System Agent Core Key VC0C low 0 high 0 CPU VCore Key VD0R low 0 high 0 DC In Key VP0R low 0 high 0 Pbus Key ALSL low 0 high 0 Ambient Light Key F0Ac low 2160 high 6156 Leftside Key F1Ac low 2000 high 5700 Rightside Key PCPC low 0 high 0 CPU Package Core Key PCPG low 0 high 0 CPU Package GPU Key PCPT low 0 high 0 CPU Package Total Key PSTR low 0 high 0 System Total Key PDTR low 0 high 0 DC In Dumping MacBookAir7,1 from MacBookAir7_1 Name: MacBook Air (11 inch, Mid 2015) Memory: soldered slots with 8192 MB total Defaults: TCXC, temperature: TCXC Key IBAC low 0 high 0 Battery Key IC0R low 0 high 0 CPU Computing High Side Key ICS0 low 0 high 0 CPU Core Key ICS1 low 0 high 0 CPU Load Current Monitor Key ID0R low 0 high 0 DC In Rail Key IM3C low 0 high 0 DDR S3 Key IPB1 low 0 high 0 BMON Discrete Key IPBR low 0 high 0 Battery PBus Key ISDC low 0 high 0 SSD Key PC0R low 0 high 0 CPU Computing High Side Key PCPC low 0 high 0 CPU Package Core Key PCPG low 0 high 0 CPU Package GPU Key PCPT low 0 high 0 CPU Package Total Key PDTR low 0 high 0 DC In Total Key PPBR low 0 high 0 Battery PBus Key TB0T low 0 high 0 Battery Key TB1T low 0 high 0 Battery Sensor 1 Key TB2T low 0 high 0 Battery Sensor 2 Key TC0P low 0 high 0 CPU Proximity Key TC1C low 0 high 0 CPU Core 1 Key TC2C low 0 high 0 CPU Core 2 Key TCGC low 0 high 0 Intel GPU Key TCHP low 0 high 0 Charger Proximity Key TCSA low 0 high 0 CPU System Agent Core Key THSP low 0 high 0 T29 Proximity Key TM0P low 0 high 0 Memory Proximity Key TPCD low 0 high 0 Platform Controller Hub Key TS2P low 0 high 0 S2 Camera Proximity Key TW0P low 0 high 0 Wireless Proximity Key Ta0P low 0 high 0 Air Flow Key Th1H low 0 high 0 Fin Stack Key Tm0P low 0 high 0 Logic Board Top Side Key Ts0P low 0 high 0 Trackpad Key VC1C low 0 high 0 1.05V S0 Key VCS0 low 0 high 0 CPU Core Key VD0R low 0 high 0 DC In Key VP0R low 0 high 0 PBus Rail Key F0Ac low 1200 high 6500 Exhaust Key PSTR low 0 high 0 System Total Key PDTR low 0 high 0 DC In Dumping MacBook9,1 from MacBook9_1 Name: MacBook (12 inch, Retina, Early 2016) Memory: soldered slots with 8192 MB total Defaults: TCXC, temperature: CUS1 Key IC0R low 0 high 0 CPU Computing High Side Key ID0R low 0 high 0 DC In Key IPBR low 0 high 0 Battery PBus Key PC0R low 0 high 0 CPU Computing High Side Key PCPC low 0 high 0 CPU Package Core Key PCPG low 0 high 0 CPU Package GPU Key PCPT low 0 high 0 CPU Package Total Key PD0R low 0 high 0 DC In Key PPBR low 0 high 0 Battery PBus Key PSTR low 0 high 0 Total Power Key TB0T low 0 high 0 Battery Key TB1T low 0 high 0 Battery Sensor 1 Key TB2T low 0 high 0 Battery Sensor 2 Key TC0P low 0 high 0 CPU Proximity Key TC1C low 0 high 0 CPU Core 1 Key TC2C low 0 high 0 CPU Core 2 Key TCGC low 0 high 0 Intel GPU Key TCHP low 0 high 0 Charger Proximity Key TCSA low 0 high 0 CPU System Agent Core Key TCXC low 0 high 0 CPU Core PECI Key TM0P low 0 high 0 Memory Proximity Key TPCD low 0 high 0 Platform Controller Hub Key TW0P low 0 high 0 Wireless Proximity Key Th0N low 0 high 0 SSD Key Ts0P low 0 high 0 Trackpad Key Ts1P low 0 high 0 Trackpad Actuator Key VC0C low 0 high 0 CPU Core Key VCGC low 0 high 0 CPU Vcc Gfx Key VD0R low 0 high 0 DC In Key VP0R low 0 high 0 PBus Rail Key CUS1 low (null) high (null) CPU Cores Dumping MacBookPro12,1 from MacBookPro12_1 Name: MacBook Pro (13 inch, Retina, Early 2015) Memory: soldered slots with 16384 MB total Defaults: TC0P, temperature: CUS1 Key ALSL low 0 high 0 Ambient Light Key IC0R low 0 high 0 CPU (CPU, I/O) Key IPBR low 0 high 0 Charger (BMON) Key ID0R low 0 high 0 DC In Key ISDC low 0 high 0 SSD 3.3V Key Ts0P low 0 high 0 Palm Rest Key Ts1P low 0 high 0 Palm Rest 2 Key TB1T low 0 high 0 Battery Sensor 1 Key TB2T low 0 high 0 Battery Sensor 2 Key TPCD low 0 high 0 Platform Controller Hub PECI Key TC0C low 0 high 0 CPU Core 1 Key TC1C low 0 high 0 CPU Core 2 Key Th1H low 0 high 0 Right Fin Stack Key TA0P low 0 high 0 Air Flow Proximity Key TM0P low 0 high 0 DDR3 Proximity Key TC0P low 0 high 0 CPU Proximity Key TH0a low 0 high 0 SSD Key VP0R low 0 high 0 PBus Key VD0R low 0 high 0 DC In Key VC0C low 0 high 0 CPU Vcore Key F0Ac low 1299 high 6199 Fan Key CUS1 low (null) high (null) CPU Cores Key TCSA low 0 high 0 CPU System Agent Core Key TCGC low 0 high 0 Intel GPU Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key PSTR low 0 high 0 System Total Key PDTR low 0 high 0 DC In Dumping MacBookPro14,1 from MacBookPro14_1 Name: MacBook Pro (13 inch, Retina, Mid 2017) Memory: soldered slots with 16384 MB total Defaults: TC0P, temperature: TCXC Key IPBR low 0 high 0 Battery Key PC0R low 0 high 0 CPU Computing Highside Key PCPC low 0 high 0 CPU Core Key PCPG low 0 high 0 Intel GPU Key PCPT low 0 high 0 CPU Package Key PD0R low 0 high 0 DC In Key PHCC low 0 high 0 SSD 3.3V Key PHNC low 0 high 0 SSD Memory Key PPBR low 0 high 0 Battery Key PSTR low 0 high 0 Total Power Key Ta0P low 0 high 0 Ambient Air Key TB1T low 0 high 0 Battery Sensor 1 Key TB2T low 0 high 0 Battery Sensor 2 Key TC0F low 0 high 0 CPU Die PECI Key TC0P low 0 high 0 CPU Proximity Key TC1C low 0 high 0 CPU Core 1 Key TC2C low 0 high 0 CPU Core 2 Key TCGC low 0 high 0 Intel GPU Key TCSA low 0 high 0 CPU System Agent Core Key TCXC low 0 high 0 CPU Core PECI Key Th1H low 0 high 0 Fin stack Proximity Key TI0P low 0 high 0 IO Proximity Key TM0P low 0 high 0 DRAM Proximity Key TPCD low 0 high 0 Platform Controller Hub Die Key Ts0P low 0 high 0 Trackpad Key Ts0S low 0 high 0 Skin Key TaLC low 0 high 0 Air Flow Key Ts1P low 0 high 0 Trackpad Actuator Key VP0R low 0 high 0 PBUS Key ALSL low 0 high 0 Ambient Light Key F0Ac low 1200 high 7200 Fan Dumping MacPro5,1 from MacPro5_1 Name: Mac Pro Memory: 8 slots with 16384 MB total Defaults: TCAD TCBD, temperature: TCAD TCBD Key ICAB low 0.1 high 40 CPU A - VTT Key ICVB low 0.1 high 40 CPU B - VTT Key ICAC low 0.1 high 140 CPU A - Core Low Side (Vcore) Key ICBC low 0.1 high 140 CPU B - Core Low Side (Vcore) Key IH1Z low 0 high 2 HDD1, 12V Key IH2Z low 0 high 2 HDD2, 12V Key IH3Z low 0 high 2 HDD3, 12V Key IH4Z low 0 high 2 HDD4, 12V Key IH5Z low 0 high 12 HDD+ODD, 5V Key IMAS low 0.1 high 50 DIMM, PP1V5 S3 MEM A Key IN0C low 1 high 40 I/O Hub Core, 1V1 S0 I/O Hub Northbridge Key IO0Z low 0 high 3 ODD 12V Key IS1C low 0.25 high 5 1V05 S0 SB Key IS2C low 0.25 high 2.3 1V5 S0 SB Key Ie1S low 0 high 18 PCIe Slot 1 12V Key Ie2S low 0 high 18 PCIe Slot 2 12V Key Ie3S low 0 high 18 PCIe Slot 3 12V Key Ie4S low 0 high 18 PCIe Slot 4 12V Key IeAS low 0 high 18 PCIe Boost A 12V Key IeBS low 0 high 18 PCIe Boost B 12V Key Ip0C low 1 high 80 PSU 12V (PSMI) Key TA0P low 5 high 45 System Ambient Key TCAC low 1 high 85 CPU A - Relative to ProcHot Key TCAD low 5 high 95 CPU A - Tdiode Key TCAH low 5 high 85 CPU A - HeatSink Key TCBC low 1 high 85 CPU B - Relative to ProcHot Key TCBD low 5 high 95 CPU B - Tdiode Key TCBH low 5 high 85 CPU B - HeatSink Key TH1P low 5 high 50 Drive Bay 1 (On Carrier) Key TH2P low 5 high 50 Drive Bay 2 (On Carrier) Key TH3P low 5 high 50 Drive Bay 3 (On Carrier) Key TH4P low 5 high 50 Drive Bay 4 (On Carrier) Key TM1P low 5 high 80 DIMM Proximity 1 (On Riser) Key TM2P low 5 high 80 DIMM Proximity 2 (On Riser) Key TM3P low 5 high 80 DIMM Proximity 3 (On Riser) Key TM4P low 5 high 80 DIMM Proximity 4 (On Riser) Key TM5P low 5 high 80 DIMM Proximity 5 (On Riser) Key TM6P low 5 high 80 DIMM Proximity 6 (On Riser) Key TM7P low 5 high 80 DIMM Proximity 7 (On Riser) Key TM8P low 5 high 80 DIMM Proximity 8 (On Riser) Key TMA1 low 5 high 80 DIMM, CPUA, SLOT1, CHA - SPD Key TMA2 low 5 high 80 DIMM, CPUA, SLOT2 Key TMA3 low 5 high 80 DIMM, CPUA, SLOT3 Key TMA4 low 5 high 80 DIMM, CPUA, SLOT4 Key TMB1 low 5 high 80 DIMM, CPUB, SLOT5 Key TMB2 low 5 high 80 DIMM, CPUB, SLOT6 Key TMB3 low 5 high 80 DIMM, CPUB, SLOT7 Key TMB4 low 5 high 80 DIMM, CPUB, SLOT8 Key TN0D low 5 high 95 Northbridge Tdiode Key TN0H low 5 high 75 Northbridge HeatSink Key Te1S low 5 high 95 PCIE slot 1 Key Te2S low 5 high 95 PCIE slot 2 Key Te3S low 5 high 95 PCIE slot 3 Key Te4S low 5 high 95 PCIE slot 4 Key Te5S low 5 high 95 PCIE slot 5 Key Tp0C low 5 high 100 PSU - AC/DC Supply 1 Key Tp1C low 5 high 100 PSU - AC/DC Supply 2 Key VCAB low 1 high 1.3 CPU A - VTT S0 Key VCAC low 0.6 high 1.3 CPU A - Core Key VCBC low 0.6 high 1.3 CPU B - Core Key VH1Z low 11.4 high 12.6 HDD1 12V Key VH2Z low 11.4 high 12.6 HDD2 12V Key VH3Z low 11.4 high 12.6 HDD3 12V Key VH4Z low 11.4 high 12.6 HDD4 12V Key VH5Z low 4.5 high 5.5 HDD+ODD 5V Key VN0C low 1.07 high 1.13 1V1 S0 I/O Hub Northbridge Key VO0Z low 11.4 high 12.6 ODD 12V Key VS1C low 1 high 1.1 1V05 S0 SB Key VS2C low 1.43 high 1.58 1V5 S0 SB Key VS8C low 3.14 high 3.47 3V3 S5 Key Ve1S low 11.4 high 12.6 PCIe Slot 1, 12V Key Ve2S low 11.4 high 12.6 PCIe Slot 2, 12V Key Ve3S low 11.4 high 12.6 PCIe Slot 3, 12V Key Ve4S low 11.4 high 12.6 PCIe Slot 4, 12V Key VeAS low 11.4 high 12.6 PCIe BoostA, 12V Key VeBS low 11.4 high 12.6 PCIe BoostB, 12V Key Vp0C low 11.4 high 12.6 PSU 12V Key F0Ac low 800 high 4500 Expansion Slots Key F1Ac low 400 high 2800 Power Supply Key F2Ac low 500 high 2800 Exhaust Key F3Ac low 600 high 2800 Intake Key F4Ac low 600 high 4000 Booster 1 Key F5Ac low 600 high 5199 Booster 2 Dumping MacPro4,1 from MacPro4_1 Name: Mac Pro (Early 2009) Memory: 8 slots with 16384 MB total Defaults: TCAD TCBD, temperature: TCAD TCBD Key ICAC low 0 high 0 CPU A - Core Low Side Key ICBC low 0 high 0 CPU B - Core Low Side Key Ie1S low 0 high 0 PCIe Slot 1 12V Key Ie2S low 0 high 0 PCIe Slot 2 12V Key Ie3S low 0 high 0 PCIe Slot 3 12V Key Ie4S low 0 high 0 PCIe Slot 4 12V Key IeAS low 0 high 0 PCIe BoostA 12V Key IeBS low 0 high 0 PCIe BoostB 12V Key IH1Z low 0 high 0 HDD1 12V Key IH2Z low 0 high 0 HDD2 12V Key IH3Z low 0 high 0 HDD3 12V Key IH4Z low 0 high 0 HDD4 12V Key IO0Z low 0 high 0 ODD 12V Key IH5Z low 0 high 0 HDD+ODD 5V Key IMAS low 0 high 0 DIMM, PP1V5_S3_MEMA Key IMBS low 0 high 0 DIMM, PP1V5_S3_MEMB Key IN0C low 0 high 0 I/O Hub Core, 1V1 S0 I/O Hub Northbridge Key Ip0C low 0 high 0 PSU, 12V Key ICAB low 0 high 0 CPU A - VTT Key ICBB low 0 high 0 CPU B - VTT Key IS1C low 0 high 0 1V05 S0 SB Key IS2C low 0 high 0 1V5 S0 SB Key Ip1M low 0 high 0 12V S0 CPUA 240V Key Ip2M low 0 high 0 12V S0 CPUB 240V Key Ip3M low 0 high 0 12V S0 MEMA 240V Key Ip4M low 0 high 0 12V S0 MEMB 240V Key Ip5M low 0 high 0 12V S0 MLB1 240V A Key Ip6M low 0 high 0 12V S0 MLB2 240V A Key Ip7M low 0 high 0 12V S0 PCIE1 240V A Key Ip8M low 0 high 0 12V S0 PCIE2 240V A Key TA0P low 0 high 0 System Ambient Key TCAC low 1 high 85 CPU A - Relative to ProcHot Key TCAD low 0 high 0 CPU A - Tdiode Key TCBC low 0 high 0 CPU B - Relative to ProcHot Key TCBD low 0 high 0 CPU B - Tdiode Key TCAH low 0 high 0 CPU A - HeatSink Key TCBH low 0 high 0 CPU B - HeatSink Key Te1S low 0 high 0 PCIE Slot 1 Key Te2S low 0 high 0 PCIE Slot 2 Key Te3S low 0 high 0 PCIE Slot 3 Key Te4S low 0 high 0 PCIE Slot 4 Key Te5S low 0 high 0 PCIE RAID card Key TH1P low 5 high 50 Drive Bay 1 (On Carrier) Key TH2P low 5 high 50 Drive Bay 2 (On Carrier) Key TH3P low 5 high 50 Drive Bay 3 (On Carrier) Key TH4P low 5 high 50 Drive Bay 4 (On Carrier) Key TM1P low 5 high 80 DIMM Proximity 1 (On Riser) Key TM2P low 5 high 80 DIMM Proximity 2 (On Riser) Key TM3P low 5 high 80 DIMM Proximity 3 (On Riser) Key TM4P low 5 high 80 DIMM Proximity 4 (On Riser) Key TM5P low 5 high 80 DIMM Proximity 5 (On Riser) Key TM6P low 5 high 80 DIMM Proximity 6 (On Riser) Key TM7P low 5 high 80 DIMM Proximity 7 (On Riser) Key TM8P low 5 high 80 DIMM Proximity 8 (On Riser) Key TMA1 low 0 high 0 DIMM, CPUA, SLOT1, CHA SPD Key TMA2 low 0 high 0 DIMM, CPUA, SLOT2, CHB SPD Key TMA3 low 0 high 0 DIMM, CPUA, SLOT3, CHC SPD Key TMA4 low 0 high 0 DIMM, CPUA, SLOT4, CHC SPD Key TMB1 low 0 high 0 DIMM, CPUB, SLOT5, CHA SPD Key TMB2 low 0 high 0 DIMM, CPUB, SLOT6, CHB SPD Key TMB3 low 0 high 0 DIMM, CPUB, SLOT7, CHC SPD Key TMB4 low 0 high 0 DIMM, CPUB, SLOT8, CHC SPD Key TN0D low 0 high 0 I/O Hub Tdiode Key TN0H low 0 high 0 I/O Hub HeatSink Key Tp0C low 0 high 0 PSU - AC/DC Supply 1 Key Tp1C low 0 high 0 PSU - AC/DC Supply 2 Key VCAC low 0 high 0 CPU A - Core Key VCBC low 0 high 0 CPU B - Core Key Ve1S low 0 high 0 PCIe Slot 1, 12V Key Ve2S low 0 high 0 PCIe Slot 2, 12V Key Ve3S low 0 high 0 PCIe Slot 3, 12V Key Ve4S low 0 high 0 PCIe Slot 4, 12V Key VeAS low 0 high 0 PCIe BoostA, 12V Key VeBS low 0 high 0 PCIe BoostB, 12V Key VH1Z low 0 high 0 HDD1, 12V Key VH2Z low 0 high 0 HDD2, 12V Key VH3Z low 0 high 0 HDD3, 12V Key VH4Z low 0 high 0 HDD4, 12V Key VO0Z low 0 high 0 ODD, 12V Key VH5Z low 0 high 0 HDD+ODD, 5V Key VM1S low 0 high 0 1V5 S3 MEMA Key VM2S low 0 high 0 1V5 S3 MEMB Key VN0C low 0 high 0 1V1 S0 I/O Hub Northbridge Key Vp0C low 0 high 0 PSU, 12V Key VCAB low 0 high 0 CPU A - VTT S0 Key VCBB low 0 high 0 CPU B - VTT S0 Key VS1C low 0 high 0 1V05 S0 SB Key VS2C low 0 high 0 1V5 S0_SB Key VS8C low 0 high 0 3V3 S5 Key F0Ac low 800 high 4500 Expansion Slots Key F1Ac low 400 high 2800 Power Supply Key F2Ac low 500 high 2800 Exhaust Key F3Ac low 500 high 2800 Intake Key F4Ac low 800 high 4000 Booster 1 Key F5Ac low 800 high 5199 Booster 2 Dumping MacPro3,1 from MacPro3_1 Name: Mac Pro (Early 2008) Memory: 8 slots with 16384 MB total Defaults: TCAH TCBH, temperature: Key ICAC low 0 high 0 CPU-A Core Key ICBC low 0 high 0 CPU-B Core Key IMAS low 0 high 0 FBDIMM Riser A 12V Key IMBS low 0 high 0 FBDIMM Riser B 12V Key IN0C low 0 high 0 MCH Core 0 - Supply Input Key IN1C low 0 high 0 MCH Core 1 Key Ie1S low 0 high 0 PCIe Slot 1 +12V Key Ie2S low 0 high 0 PCIe Slot 2 +12V Key Ie3S low 0 high 0 PCIe Slot 3 +12V Key Ie4S low 0 high 0 PCIe Slot 4 +12V Key IeAS low 0 high 0 PCIe Slot Boost 1 +12V Key IeBS low 0 high 0 PCIe Slot Boost 2 +12V Key Ip0C low 0 high 0 PSMI Supply AC/DC Output, +12V Rail Key TA0P low 0 high 0 Ambient Key TC0C low 0 high 0 CPU-A Die 1 Offset Key TC1C low 0 high 0 CPU-A Die 2 Offset Key TC0P low 0 high 0 CPU VR Area Key TC2C low 0 high 0 CPU-B Die 1 Offset Key TC3C low 0 high 0 CPU-B Die 2 Offset Key TCAH low 0 high 0 CPU-A Heatsink Key TCBH low 0 high 0 CPU-B Heatsink Key TH0P low 0 high 0 Hard Drive 1 Body Key TH1P low 0 high 0 Hard Drive 2 Body Key TH2P low 0 high 0 Hard Drive 3 Body Key TH3P low 0 high 0 Hard Drive 4 Body Key TM0P low 0 high 0 FBDIMM Riser A Incoming Air Key TM0S low 0 high 0 AMB IC on FBDIMM in Riser A Slot 1 Key TM1P low 0 high 0 FBDIMM Riser A Outgoing Air Key TM1S low 0 high 0 AMB IC on FBDIMM in Riser A Slot 2 Key TM2P low 0 high 0 FBDIMM Riser A Voltage Regulator Area Key TM8P low 0 high 0 FBDIMM Riser B Incoming Air Key TM9P low 0 high 0 FBDIMM Riser B Outgoing Air Key TMAP low 0 high 0 FBDIMM Riser B Voltage Regulator Area Key TN0C low 0 high 0 MCH Die Diode Key TN0D low 0 high 0 MCH Die Offset Key TN0H low 0 high 0 MCH Heatsink Key TS0C low 0 high 0 LM94, Between CPU-A and CPU-A's VR Key Tp0C low 0 high 0 PSMI Supply AC/DC Supply 1 Key Tp1C low 0 high 0 PSMI Supply AC/DC Supply 2 Key VCAC low 0 high 0 CPU-A Core Key VCBC low 0 high 0 CPU-B Core Key VMAS low 0 high 0 FBDIMM Riser A +12V Rail Key VMBS low 0 high 0 FBDIMM Riser B +12V Rail Key VN0C low 0 high 0 MCH Core 0 Key VN1C low 0 high 0 MCH Core 1 Key VeES low 0 high 0 PCIe Slots +12V Rail Key Vp0C low 0 high 0 PSMI Supply AC/DC Output +12V rail Key F1Ac low 500 high 2900 Expansion Slots Key F0Ac low 500 high 2900 CPU Key F2Ac low 500 high 2900 Exhaust Key F3Ac low 600 high 2800 Power Supply Dumping MacPro2,1 from MacPro2_1 Name: Mac Pro (Early 2007) Memory: 8 slots with 16384 MB total Defaults: TCAH TCBH, temperature: Key ICAC low 0 high 0 CPU-A Core Key ICBC low 0 high 0 CPU-B Core Key IMAS low 0 high 0 FBDIMM Riser A 12V Supply Key IMBS low 0 high 0 FBDIMM Riser B 12V Supply Key IN0C low 0 high 0 MCH Core - Supply Key Ie1S low 0 high 0 PCIe Slot 1 +12V Key Ie2S low 0 high 0 PCIe Slot 2 +12V Key Ie3S low 0 high 0 PCIe Slot 3 +12V Key Ie4S low 0 high 0 PCIe Slot 4 +12V Key IeAS low 0 high 0 PCIe Slot Boost 1 +12V Key IeBS low 0 high 0 PCIe Slot Boost 2 +12V Key Ip0C low 0 high 0 PSMI Supply AC/DC Total Output, +12V rail Key TA0P low 0 high 0 Ambient Air Key TC0C low 0 high 0 CPU-A Die 1 Offset Key TC0P low 0 high 0 CPU VR Area Key TC2C low 0 high 0 CPU-B Die 1 Offset Key TCAH low 0 high 0 CPU-A Heatsink Key TCBH low 0 high 0 CPU-B Heatsink Key TH0P low 0 high 0 Hard Drive 1 Body Key TH1P low 0 high 0 Hard Drive 2 Body Key TH2P low 0 high 0 Hard Drive 3 Body Key TH3P low 0 high 0 Hard Drive 4 Body Key TM0P low 0 high 0 FBDIMM Riser A Incoming Air Key TM1P low 0 high 0 FBDIMM Riser A Outgoing Air Key TM0S low 0 high 0 AMB IC on FBDIMM in Riser A Slot 1 Key TM1S low 0 high 0 AMB IC on FBDIMM in Riser A Slot 2 Key TM8S low 0 high 0 AMB IC on FBDIMM in Riser B Slot 1 Key TM9S low 0 high 0 AMB IC on FBDIMM in Riser B Slot 2 Key TM2P low 0 high 0 FBDIMM Riser A VR area Key TM8P low 0 high 0 FBDIMM Riser B Incoming Air Key TM9P low 0 high 0 FBDIMM Riser B Outgoing Air Key TMAP low 0 high 0 FBDIMM Riser B VR Area Key TN0H low 0 high 0 MCH Heatsink Key TS0C low 0 high 0 LM94, Between CPU-A and CPU-A's VR Key Tp0C low 0 high 0 PSMI Supply AC/DC Supply 1 Key Tp1C low 0 high 0 PSMI Supply AC/DC Supply 2 Key VCAC low 0 high 0 CPU-A Core Key VCBC low 0 high 0 CPU-B Core Key VMAS low 0 high 0 FBDIMM Riser A +12V Rail Key VMBS low 0 high 0 FBDIMM Riser B +12V Rail Key VN0C low 0 high 0 MCH Core Key VeES low 0 high 0 PCIe Slots +12V Rail Key Vp0C low 0 high 0 PSMI Supply AC/DC output +12V Rail Key F1Ac low 500 high 2900 Expansion Slots Key F0Ac low 500 high 2900 CPU Key F2Ac low 500 high 2900 Exhaust Key F3Ac low 600 high 2800 Power Supply Dumping MacPro1,1 from MacPro1_1 Name: Mac Pro (Early 2007) Memory: 8 slots with 16384 MB total Defaults: TCAH TCBH, temperature: Key ICAC low 0 high 0 CPU-A Core Key ICBC low 0 high 0 CPU-B Core Key IMAS low 0 high 0 FBDIMM Riser A 12V Supply Key IMBS low 0 high 0 FBDIMM Riser B 12V Supply Key IN0C low 0 high 0 MCH Core - Supply Input Key Ie1S low 0 high 0 PCIe Slot 1 +12V Key Ie2S low 0 high 0 PCIe Slot 2 +12V Key Ie3S low 0 high 0 PCIe Slot 3 +12V Key Ie4S low 0 high 0 PCIe Slot 4 +12V Key IeAS low 0 high 0 PCIe Slot Boost 1 +12V Key IeBS low 0 high 0 PCIe Slot Boost 2 +12V Key Ip0C low 0 high 0 PSMI Supply AC/DC Output, +12V Rail Key TA0P low 0 high 0 Ambient Air Key TC0C low 0 high 0 CPU-A Die 1 Offset Key TC0P low 0 high 0 CPU VR Area Key TC2C low 0 high 0 CPU-B Die 1 Offset Key TCAH low 0 high 0 CPU-A Heatsink Key TCBH low 0 high 0 CPU-B Heatsink Key TH0P low 0 high 0 Hard Drive 1 Body Key TH1P low 0 high 0 Hard Drive 2 Body Key TH2P low 0 high 0 Hard Drive 3 Body Key TH3P low 0 high 0 Hard Drive 4 Body Key TM0P low 0 high 0 FBDIMM Riser A Incoming Air Key TM0S low 0 high 0 AMB IC on FBDIMM in Riser A Slot 1 Key TM1P low 0 high 0 FBDIMM Riser A Outgoing Air Key TM1S low 0 high 0 AMB IC on FBDIMM in Riser A Slot 2 Key TM2P low 0 high 0 FBDIMM Riser A VR Area Key TM8P low 0 high 0 FBDIMM Riser B Incoming Air Key TM9P low 0 high 0 FBDIMM Riser B Outgoing Air Key TMAP low 0 high 0 FBDIMM Riser B VR Area Key TN0H low 0 high 0 MCH Heatsink Key TS0C low 0 high 0 LM94, between CPU-A and CPU-A's VR Key Tp0C low 0 high 0 PSMI Supply AC/DC Supply 1 Key Tp1C low 0 high 0 PSMI Supply AC/DC Supply 2 Key VCAC low 0 high 0 CPU-A Core Key VCBC low 0 high 0 CPU-B Core Key VMAS low 0 high 0 FBDIMM Riser A +12V Rail Key VMBS low 0 high 0 FBDIMM Riser B +12V Rail Key VN0C low 0 high 0 MCH Core Key VeES low 0 high 0 PCIe Slots +12V Rail Key Vp0C low 0 high 0 PSMI Supply AC/DC Output, +12V rail Key F1Ac low 500 high 2900 Expansion Slots Key F0Ac low 500 high 2900 CPU Key F2Ac low 500 high 2900 Exhaust Key F3Ac low 600 high 2800 Power Supply Dumping MacPro6,1 from MacPro6_1 Name: Mac Pro (Late 2013) Memory: 4 slots with 65536 MB total Defaults: TCXc, temperature: TCXc Key IC0C low 0.1 high 90 CPU Core Lowside Key IC0S low 0.01 high 25 CPU VSA Lowside Key ICTR low 0.01 high 15 CPU Riser 12V Highside Key IG0C low 0 high 90 GPU 1 - Core Lowside Key IG0R low 0 high 15 GPU Riser 1 - 12V Highside Key IG0S low 0 high 25 GPU 1 - VDDCI Lowside Key IG1C low 0 high 90 GPU 2 - Core Lowside Key IG1R low 0 high 15 GPU Riser 2 - 12V Highside Key IG1S low 0 high 25 GPU 2 - VDDCI Lowside Key IH0R low 0 high 2 SSD Lowside Key II0R low 0.01 high 15 IO Board 12V Highside Key IMTR low 0.01 high 5 Memory 12V Highside Key TA0p low 5 high 50 Ambient 1 Key TA1p low 5 high 50 Ambient 2 Key TA2p low 5 high 50 Ambient 3 Key TC0p low 5 high 100 CPU Proximity Key TC1p low 5 high 100 CPU VCC VR Proximity Key TG0d low 5 high 95 GPU 1 - Die Key TG0p low 5 high 100 GPU 1 - Local Key TG0r low 5 high 100 GPU 1 - VR Proximity Key TG1d low 5 high 95 GPU 2 - Die Key TG1p low 5 high 100 GPU 2 - Local Key TG1r low 5 high 100 GPU 2 - VR Proximity Key TI0p low 5 high 100 I/O Board Proximity Key TI1p low 5 high 100 5V/3.3V VR Proximity Key TM0p low 5 high 100 DIMM 1 - Proximity Key TM0r low 5 high 100 DIMM 1 - VR Proximity Key TM1p low 5 high 100 DIMM 2 - Proximity Key TM1r low 5 high 100 DIMM 2 - VR Proximity Key TPCD low 5 high 90 Platform Controller Hub Key Te0t low 5 high 100 PCIe Switch Diode Key Tm0p low 5 high 100 Logic Board Proximity Local Board Key Tp0t low 5 high 80 PSU Secondary Heatsink Key VC0C low 0.65 high 1.35 CPU Core Lowside Key VC0S low 0.6 high 1.2 CPU VSA Lowside Key VCTR low 11.4 high 13.2 CPU Riser 12V Highside Key VD2R low 11.4 high 13.2 ACDC 12V Lowside Key VG0C low 0 high 1.15 GPU 1 - Core Lowside Key VG0R low 11.4 high 13.2 GPU Riser 1 - 12V Highside Key VG0S low 0 high 1.05 GPU 1 - VDDCI Lowside Key VG1C low 0 high 1.15 GPU 2 - Core Lowside Key VG1R low 11.4 high 13.2 GPU Riser 2 - 12V Highside Key VG1S low 0 high 1.05 GPU 2 - VDDCI Lowside Key VH0R low 3.15 high 3.45 SSD 3.3V Lowside Key VI1R low 10.4 high 11.6 IO Board 11V Highside Key F0Ac low 770 high 1900 Fan Key PSTR low 0 high 0 Total Key PCPC low 0 high 0 CPU Package Core Key PCPT low 0 high 0 CPU Package Total Key PGTR low 0 high 0 GPU Total Key TC1C low 0 high 0 CPU Core 1 Key TC2C low 0 high 0 CPU Core 2 Key TC3C low 0 high 0 CPU Core 3 Key TC4C low 0 high 0 CPU Core 4 Key TCXc low 0 high 0 CPU Dumping MacBookPro14,2 from MacBookPro14_2 Name: MacBook Pro (13 inch, Retina & Touch Bar, Mid 2017) Memory: soldered slots with 16384 MB total Defaults: TC0P, temperature: TCXC Key I18C low 0 high 0 1.8V Key IAPC low 0 high 0 Wireless Key IB0L low 0 high 0 Battery Discrete Key IBLR low 0 high 0 LCD Backlight Key IBTC low 0 high 0 Bluetooth Key ISCC low 0 high 0 Platform Controller Hub Key ICAC low 0 high 0 CPU IA Core Key ICMC low 0 high 0 Camera Key ID0R low 0 high 0 DC In (AMON) Key IHCC low 0 high 0 SSD 3.3V Key IHNC low 0 high 0 SSD Memory Key IKBC low 0 high 0 Keyboard Backlight Key ILDC low 0 high 0 LCD Key IM0C low 0 high 0 1.2V CPU/Memory Key IM1C low 0 high 0 LPDDR 1.8V Key IO3R low 0 high 0 Other 3.3V (High) Key IO5R low 0 high 0 Other 5V (High) Key IPBR low 0 high 0 Battery Key IS1C low 0 high 0 Southbridge IO 1.0V Key IT3C low 0 high 0 Trackpad and Keyboard 3.3V Key ITAR low 0 high 0 Trackpad Actuator Key IULC low 0 high 0 Thunderbolt Left Key IURC low 0 high 0 Thunderbolt Right Key PC0R low 0 high 0 PBUS CPU Highside Key PCAC low 0 high 0 CPU Core Key PCGC low 0 high 0 Intel GPU Key PCSC low 0 high 0 CPU VCCSA Power Key PPBR low 0 high 0 Battery Current Key PS1C low 0 high 0 Southbridge IO 1.0V Key PTAR low 0 high 0 Trackpad Actuator Key TB1T low 0 high 0 Battery TS1 Key TB2T low 0 high 0 Battery TS2 Key TTLD low 0 high 0 Thunderbolt Die Left Key TTRD low 0 high 0 Thunderbolt Die Right Key TC0P low 0 high 0 CPU Proximity Key TC1C low 0 high 0 CPU Digital Core 1 Key TC2C low 0 high 0 CPU Digital Core 2 Key TCGC low 0 high 0 Intel GPU Key TCSA low 0 high 0 CPU System Agent Core Key TCXC low 0 high 0 CPU Core PECI Key TH0B low 0 high 0 SSD 1 Proximity Key TH0C low 0 high 0 SSD 2 Proximity Key TM0P low 0 high 0 Memory Proximity Key TPCD low 0 high 0 Platform Controller Hub Die Key TW0P low 0 high 0 Airport Proximity Key TaLC low 0 high 0 Airflow Left Key TaRC low 0 high 0 Airflow Right Key Th1H low 0 high 0 Fin Stack Proximity Right Key Th2H low 0 high 0 Fin Stack Proximity Left Key Ts0P low 0 high 0 Palm Rest Key Ts1P low 0 high 0 Actuator Key VCAC low 0 high 0 CPU IA Core Key VCGC low 0 high 0 Intel GPU Key VCSC low 0 high 0 CPU System Agent Core Key VD0R low 0 high 0 DC In Key VP0R low 0 high 0 P-Bus Key VSCC low 0 high 0 Southbridge VCC Key F0Ac low 1250 high 6336 Leftside Key F1Ac low 1350 high 6864 Rightside Key PCPC low 0 high 0 CPU Package Core Key PCPG low 0 high 0 CPU Package GPU Key PCPT low 0 high 0 CPU Package Total Key PSTR low 0 high 0 System Total Key PDTR low 0 high 0 DC In Dumping MacBookPro11,3 from MacBookPro11_3 Name: MacBook Pro (15 inch, Retina, Late 2013) Memory: 2 slots with 16384 MB total Defaults: TCXC, temperature: TCXC Key IC0C low 0.1 high 20 CPU Core Key IC0R low 0.1 high 3.5 CPU Highside Key ID0R low 0.3 high 5 DC In Key IG0R low 0 high 2 GeForce GPU (Core, FB, 1.0V) Key IG1C low 0 high 5 GeForce GPU FB Key IHDC low 0 high 1 SSD Key IHSC low 0 high 0.3 Thunderbolt Key IM0C low 0.01 high 1 Memory Key IO3R low 0.01 high 0.5 Other 3.3V Key IO5R low 0.1 high 1.1 Other 5V Key IPBR low 0.1 high 3 Charger - BMON Key Ta0P low 10 high 60 Air Flow Proximity Key TB1T low 10 high 60 Battery Sensor 1 Key TB2T low 10 high 60 Battery Sensor 2 Key TC0P low 10 high 70 CPU Proximity Key TC1C low 10 high 95 CPU Core 1 Key TC2C low 10 high 95 CPU Core 2 Key TC3C low 10 high 95 CPU Core 3 Key TC4C low 10 high 95 CPU Core 4 Key TCGC low 10 high 100 Intel GPU Key TCSA low 10 high 100 CPU System Agent Core Key TCXC low 10 high 95 CPU PECI Die Key TM0P low 10 high 70 DDR3 Proximity Key TG0D low 10 high 100 GeForce GPU Die - Analog Key TG1D low 10 high 100 GeForce GPU Die - Digital Key TG0P low 10 high 80 GeForce GPU Proximity Key TH0A low 10 high 70 SSD A Key TH0B low 10 high 70 SSD B Key Th2H low 10 high 60 Left Fin Stack Key Ts0P low 10 high 45 Palm Rest Key TP0P low 10 high 75 Platform Controller Hub Key TPCD low 10 high 80 Platform Controller Hub PECI Key Th1H low 10 high 60 Right Fin Stack Key TW0P low 10 high 70 X29 Proximity Key VC0C low 1.6 high 1.95 CPU Vcore Key VD0R low 18 high 21 DC In Key VG0C low 0.7 high 1.15 GeForce GPU Vcore Key VG1C low 0.7 high 1.8 GeForce GPU FB Key VP0R low 10 high 13.5 PBus Key ALSL low 0 high 0 Ambient Light Key F0Ac low 2160 high 6156 Leftside Key F1Ac low 2000 high 5700 Rightside Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key PSTR low 0 high 0 System Total Key PDTR low 0 high 0 DC In Dumping MacBookPro11,5 from MacBookPro11_5 Name: MacBook Pro (15 inch, Retina, Mid 2015) Memory: 2 slots with 16384 MB total Defaults: TCXC, temperature: TCXC Key IC0C low 0 high 0 CPU High (CPU, I/O) Key ID0R low 0 high 0 DC In Key IHDC low 0 high 0 SSD Key IPBR low 0 high 0 Charger (BMON) Key IC0R low 0 high 0 CPU Key IO3R low 0 high 0 Other 3.3V Key IO5R low 0 high 0 Other 5V Key IG0R low 0 high 0 Intel GPU Key IG0C low 0 high 0 Radeon GPU Core Key IG2C low 0 high 0 Radeon GPU VDDCI Key IM0C low 0 high 0 Memory Key IC1C low 0 high 0 Platform Controller Hub Core Key IBLC low 0 high 0 LCD Backlight Key IHSC low 0 high 0 Thunderbolt Key ITPC low 0 high 0 Trackpad Actuator Key TC0P low 0 high 0 CPU Proximity Key TP0P low 0 high 0 Platform Controller Hub Key TM0P low 0 high 0 Memory Proximity Key Ta0P low 0 high 0 Air Flow Proximity Key Th2H low 0 high 0 Left Fin Stack Key Th1H low 0 high 0 Right Fin Stack Key TG0P low 0 high 0 Radeon GPU Proximity Key TG0D low 0 high 0 Radeon GPU Key TW0P low 0 high 0 Airport Proximity Key Ts0P low 0 high 0 Palm Rest Key Ts1P low 0 high 0 Palm Rest Actuator Key TB1T low 0 high 0 Battery Sensor 1 Key TB2T low 0 high 0 Battery Sensor 2 Key TH0A low 0 high 0 SSD A Key TH0B low 0 high 0 SSD B Key TC1C low 0 high 0 CPU Core 1 Key TC2C low 0 high 0 CPU Core 2 Key TC3C low 0 high 0 CPU Core 3 Key TC4C low 0 high 0 CPU Core 4 Key TCXC low 0 high 0 CPU PECI Die Key TCGC low 0 high 0 Intel GPU Key TPCD low 0 high 0 Platform Controller Hub PECI Key TCSA low 0 high 0 CPU System Agent Core Key VC0C low 0 high 0 CPU VCore Key VD0R low 0 high 0 DC In Key VP0R low 0 high 0 Pbus Key VG0C low 0 high 0 Radeon GPU Core Key VG1C low 0 high 0 Radeon GPU FB Key ALSL low 0 high 0 Ambient Light Key F0Ac low 2160 high 6156 Leftside Key F1Ac low 2000 high 5700 Rightside Key PCPC low 0 high 0 CPU Package Core Key PCPG low 0 high 0 CPU Package GPU Key PCPT low 0 high 0 CPU Package Total Key PSTR low 0 high 0 System Total Key PDTR low 0 high 0 DC In Dumping MacBookPro15,2 from MacBookPro15_2 Name: MacBook Pro (13 inch, Retina & Touch Bar, Mid 2018) Memory: soldered slots with 16384 MB total Defaults: TC0P, temperature: TCXC Key IAPC low 0 high 0 Wireless Key ICAC low 0 high 0 CPU IA Core Key ID0R low 0 high 0 DC In (AMON) Key IPBR low 0 high 0 Battery Key PC0R low 0 high 0 PBUS CPU Highside Key PCAC low 0 high 0 CPU Core Key PCGC low 0 high 0 Intel GPU Key PCSC low 0 high 0 CPU VCCSA Power Key PPBR low 0 high 0 Battery Current Key PS1C low 0 high 0 Southbridge IO 1.0V Key TB1T low 0 high 0 Battery TS1 Key TB2T low 0 high 0 Battery TS2 Key TTLD low 0 high 0 Thunderbolt Die Left Key TTRD low 0 high 0 Thunderbolt Die Right Key TC0P low 0 high 0 CPU Proximity Key TC1C low 0 high 0 CPU Digital Core 1 Key TC2C low 0 high 0 CPU Digital Core 2 Key TC3C low 0 high 0 CPU Digital Core 3 Key TC4C low 0 high 0 CPU Digital Core 4 Key TCGC low 0 high 0 Intel GPU Key TCSA low 0 high 0 CPU System Agent Core Key TCXC low 0 high 0 CPU Core PECI Key TH0B low 0 high 0 SSD Proximity Key TM0P low 0 high 0 Memory Proximity Key TPCD low 0 high 0 Platform Controller Hub Die Key TW0P low 0 high 0 Airport Proximity Key TaLC low 0 high 0 Airflow Left Key TaRC low 0 high 0 Airflow Right Key Th1H low 0 high 0 Fin Stack Proximity Right Key Th2H low 0 high 0 Fin Stack Proximity Left Key Ts0P low 0 high 0 Palm Rest Key Ts1P low 0 high 0 Actuator Key VCAC low 0 high 0 CPU IA Core Key VCGC low 0 high 0 Intel GPU Key VCSC low 0 high 0 CPU System Agent Core Key VD0R low 0 high 0 DC In Key VP0R low 0 high 0 P-Bus Key F0Ac low 1250 high 6336 Leftside Key F1Ac low 1350 high 6864 Rightside Key PCPC low 0 high 0 CPU Package Core Key PCPG low 0 high 0 CPU Package GPU Key PCPT low 0 high 0 CPU Package Total Key PSTR low 0 high 0 System Total Key PDTR low 0 high 0 DC In Dumping MacBookPro13,3 from MacBookPro13_3 Name: MacBook Pro (15 inch, Retina & Touch Bar, Late 2016) Memory: soldered slots with 16384 MB total Defaults: TCXC, temperature: TCXC Key IC0R low 0 high 0 CPU Computing Highside Key IPBR low 0 high 0 Battery PBus Key ID0R low 0 high 0 DC In Key ICTC low 0 high 0 Intel GPU Key IHDC low 0 high 0 SSD Key ICTM low 0 high 0 Intel GPU (IMON) Key IULC low 0 high 0 Left Thunderbolt Key IURC low 0 high 0 Right Thunderbolt Key IAPC low 0 high 0 Wireless Key IAPC low 0 high 0 Radeon GPU Core Key IG1C low 0 high 0 Radeon GPU Frame Buffer Key IG2C low 0 high 0 Radeon GPU VDDCI Key IG3C low 0 high 0 Radeon GPU 1.8V Key IG4C low 0 high 0 Radeon GPU Frame Buffer IC Key IG0R low 0 high 0 Radeon GPU High Side Key ICMC low 0 high 0 Camera Key IBTC low 0 high 0 Bluetooth Key PC0R low 0 high 0 CPU Computing Highside Key PCGC low 0 high 0 Intel GPU Key PCGM low 0 high 0 Intel GPU (IMON) Key PPBR low 0 high 0 Battery (BMON) Key PG0R low 0 high 0 Radeon GPU Highside Key Ts0P low 0 high 0 Palm Rest Key Ts1P low 0 high 0 Palm Rest 2 Key TB1T low 0 high 0 Battery Sensor 1 Key TB2T low 0 high 0 Battery Sensor 2 Key TPCD low 0 high 0 Platform Controller Hub Die Key TC1C low 0 high 0 CPU Digital Core 1 Key TC2C low 0 high 0 CPU Digital Core 2 Key TC3C low 0 high 0 CPU Digital Core 3 Key TC4C low 0 high 0 CPU Digital Core 4 Key TCGC low 0 high 0 Intel GPU Key TCSA low 0 high 0 CPU System Agent Core Key TCXC low 0 high 0 CPU Die (PECI) Key TG0D low 0 high 0 Radeon GPU Key TaLC low 0 high 0 Airflow Left Side Key TTLD low 0 high 0 Left Thunderbolt Proximity Key Th1H low 0 high 0 Fin Stack Right Key Th2H low 0 high 0 Fin Stack Left Key TM0P low 0 high 0 Memory Proximity Key TC0P low 0 high 0 CPU Proximity Key TG0P low 0 high 0 Radeon GPU Proximity Key TW0P low 0 high 0 Airport Key TaRC low 0 high 0 Airflow Right Side Key TTRD low 0 high 0 Right Thunderbolt Proximity Key TH0A low 0 high 0 SSD Proximity Key TH0B low 0 high 0 NAND Proximity 1 Key TH0C low 0 high 0 NAND Proximity 2 Key TGVP low 0 high 0 Radeon GPU VRAM Key VG2C low 0 high 0 Radeon GPU VDDCI Key VP0R low 0 high 0 PBus Key VD0R low 0 high 0 DC In Key VCSC low 0 high 0 CPU SA Key VCAC low 0 high 0 CPU IA Core Key VCTC low 0 high 0 Intel GPU Key VCTC low 0 high 0 Radeon GPU Core Key ALSL low 0 high 0 Ambient Light Key F0Ac low 2160 high 5297 Leftside Key F1Ac low 2000 high 5489 Rightside Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key PSTR low 0 high 0 System Total Key PDTR low 0 high 0 DC In Dumping MacBook10,1 from MacBook10_1 Name: MacBook (12 inch, Mid 2017) Memory: soldered slots with 16384 MB total Defaults: TCXC, temperature: CUS1 Key IC0R low 0 high 0 CPU Computing High Side Key ID0R low 0 high 0 DC In Key IPBR low 0 high 0 PBus Key PC0R low 0 high 0 CPU Computing High Side Key PCPC low 0 high 0 CPU Core Key PCPG low 0 high 0 Intel GPU Key PCPT low 0 high 0 CPU Package Key PD0R low 0 high 0 DC In Key PPBR low 0 high 0 PBus Key PSTR low 0 high 0 Total Power Key TB0T low 0 high 0 Battery Key TB1T low 0 high 0 Battery TS1 Key TB2T low 0 high 0 Battery TS2 Key TC0F low 0 high 0 CPU PECI Die Key TC0P low 0 high 0 CPU Proximity Key TC1C low 0 high 0 CPU Core 1 Key TC2C low 0 high 0 CPU Core 2 Key TCGC low 0 high 0 Intel GPU Key TCHP low 0 high 0 Charger Proximity Key TCSA low 0 high 0 CPU System Agent Core Key TCXC low 0 high 0 CPU Core PECI Key TM0P low 0 high 0 Memory Proximity Key TPCD low 0 high 0 Platform Controller Hub Die Key TW0P low 0 high 0 Wireless Proximity Key Th0N low 0 high 0 SSD Key Ts0P low 0 high 0 Trackpad Key Ts1P low 0 high 0 Trackpad Actuator Key VC0C low 0 high 0 CPU Core Key VCGC low 0 high 0 Intel GPU Key VD0R low 0 high 0 DC In Key VP0R low 0 high 0 PBus Key CUS1 low (null) high (null) CPU Cores Dumping MacBookPro13,1 from MacBookPro13_1 Name: MacBook Pro (13 inch, Retina, Late 2016) Memory: soldered slots with 16384 MB total Defaults: TC0P, temperature: CUS1 Key ALSL low 0 high 0 Ambient Light Key IC0R low 0 high 0 PBUS CPU,GPU,DRAM,V1.0,VccPC Key ID0R low 0 high 0 USBC/MPM Input (AMON) Key IHCC low 0 high 0 3.3V S5 SSD Key IHNC low 0 high 0 PBUS NAND Key IPBR low 0 high 0 Battery Key PC0R low 0 high 0 CPU Computing Highside Key PCPC low 0 high 33 CPU Package Core (PECI) Key PCPG low 0 high 22 CPU Package GPU (PECI) Key PCPT low 0 high 55 CPU Package Total (PECI) Key PD0R low 0 high 0 DC In Key PHCC low 0 high 0 SSD 3.3V Key PHNC low 0 high 0 SSD NAND Key PPBR low 0 high 0 Battery (BMON) Key PSTR low 0 high 0 System Total Key Ta0P low 0 high 0 Ambient Air Key TB0T low 0 high 0 Battery Key TB1T low 0 high 0 Battery Sensor 1 Key TB2T low 0 high 0 Battery Sensor 2 Key TC0F low 0 high 0 CPU Die (PECI) Key TC0P low 0 high 0 CPU Proximity Key TC1C low 0 high 0 CPU Core 1 Key TC2C low 0 high 0 CPU Core 2 Key TCGC low 0 high 0 Intel GPU Key TCSA low 0 high 0 CPU System Agent Core (PECI) Key TCXC low 0 high 0 CPU Core (PECI) Key Th1H low 0 high 0 Right Fin Stack Key TI0P low 0 high 0 IO Proximity Key TM0P low 0 high 0 DDR3 Proximity Key TPCD low 0 high 0 Platform Controller Hub Die Key Ts0P low 0 high 0 Trackpad Key Ts0S low 0 high 0 Bottom Skin Key TaLC low 0 high 0 Air Flow Key Ts1P low 0 high 0 Trackpad Actuator Key VCAC low 0 high 0 CPU IA Key VCGC low 0 high 0 CPU GT Key VD0R low 0 high 0 USB/MPM Input Key VP0R low 0 high 0 PBus Key F0Ac low 1200 high 7200 Fan Key CUS1 low (null) high (null) CPU Cores Dumping iMac17,1 from iMac17_1 Name: iMac with Retina 5K Display (27 inch, Late 2015) Memory: 4 slots with 65536 MB total Defaults: TC0p, temperature: CUS1, hidden IGPU Key PGTR low 0 high 0 GPU Package Key PSTR low 0 high 0 Total Power Key PCPR low 0 high 0 CPU Package Key TC0p low 0 high 0 CPU Proximity Board Key TPCD low 0 high 0 Platform Controller Hub Key TA0p low 0 high 0 Logic Board Ambient Key TL0p low 0 high 0 LCD Flying Lead Key TL1p low 0 high 0 Timing Controller Key Tp2h low 0 high 0 AC/DC T2 Sec Heatsink Key TI0p low 0 high 0 Thunderbolt Die Key Tb0p low 0 high 0 BLC Proximity Board Key Tm0p low 0 high 0 Logic Board PSU Local Board Key Tm2p low 0 high 0 CPU Backside Key TG0d low 0 high 0 GPU Die Key TG0p low 0 high 0 GPU Proximity Key TM0p low 0 high 0 SO-DIMM 1 Proximity Board Key TM1p low 0 high 0 SO-DIMM 2 Proximity Board Key TM2p low 0 high 0 SO-DIMM 3 Proximity Board Key TM3p low 0 high 0 SO-DIMM 4 Proximity Board Key Tm1p low 0 high 0 Logic Board GPU Local Board Key TC0c low 15 high 105 CPU Core 1 - DTS Key TC1c low 15 high 105 CPU Core 2 - DTS Key TC2c low 15 high 105 CPU Core 3 - DTS Key TC3c low 15 high 105 CPU Core 4 - DTS Key CUS1 low (null) high (null) CPU Cores Key TCGc low 0 high 0 Intel GPU Key TS0V low 0 high 0 Skin Key VG0F low 0 high 0 GPU FB Key VG1C low 0 high 0 GPU Core High Side Key VG0C low 0 high 0 GPU Core Key VC0M low 0 high 0 CPU MEM 1.5V Key VD2R low 0 high 0 AC/DC 12V G3H Key VM0R low 0 high 0 DIMM 1.5 S3 Key VC0C low 0 high 0 CPU Core Key VR3R low 0 high 0 Voltage Regulator 3.3V Key VH05 low 0 high 0 HDD 5V Key VR1R low 0 high 0 1.05V S0 Key VH1R low 0 high 0 SSD Load Side Key ID2R low 0 high 0 AC/DC 12V G3H Key IM0R low 0 high 0 DIMM 1.5 S3 Key IC0C low 0 high 0 CPU Core Key IH1R low 0 high 0 SSD 3.3V Key IG0C low 0 high 0 GPU Core Low Side Key IG1C low 0 high 0 GPU Core High Side Key IG1F low 0 high 0 GPU Frame Buffer Key IH05 low 0 high 0 HDD 5V Key IH02 low 0 high 0 HDD 12V Key IC20 low 0 high 0 CPU Core, GT, SA, IO Key ALSL low 0 high 0 Ambient Light Key F0Ac low 1200 high 2850 Fan Key PSTR low 0 high 0 Total Dumping iMac14,4 from iMac14_4 Name: iMac (21 inch, Mid 2014) Memory: soldered slots with 8192 MB total Defaults: TC0p, temperature: CUS1, hidden IGPU Key PC0C low 0 high 0 CPU Core Key PCPR low 0 high 0 CPU Package Total Key TG0d low 0 high 0 GPU Die Key TG0p low 0 high 0 GPU Proximity Key TC0p low 0 high 0 CPU Proximity Key TI0p low 0 high 0 Thunderbolt Die Key TPCD low 0 high 0 Platform Controller Hub Key TA0p low 0 high 0 Logic Board Ambient Key TL0p low 0 high 0 LCD Flying Lead Key TL1p low 0 high 0 Timing Controller Key Tb0p low 0 high 0 BLC Proximity Key TM0p low 0 high 0 SO-DIMM 1 Key TM1p low 0 high 0 SO-DIMM 2 Key TM2p low 0 high 0 SO-DIMM 3 Key TM3p low 0 high 0 SO-DIMM 4 Key Tm0p low 0 high 0 Logic Board PSU Key Tm1p low 0 high 0 Logic Board GPU Key Tm2p low 0 high 0 CPU Backside Key Tp2h low 0 high 0 AC/DC T2 Sec Heatsink Key TH1R low 0 high 0 SSD Key VC0C low 0 high 0 CPU Core Key VC0M low 0 high 0 CPU MEM 1.5V Key VG0C low 0 high 0 GPU Core Key VG1C low 0 high 0 GPU Core High Side Key VG0F low 0 high 0 GPU FB Key VM0R low 0 high 0 DIMM 1.5V S3 Key VH05 low 0 high 0 HDD 5V Key VR1R low 0 high 0 1.05V S0 Key VR3R low 0 high 0 Voltage Regulator 3.3V Key VD2R low 0 high 0 AC/DC 12V G3H Key IC0C low 0 high 0 CPU Core Key IC0M low 0 high 0 CPU MEM 1.5V Key IG0C low 0 high 0 GPU Core Low Side Key IG1C low 0 high 0 GPU Core High Side Key IG0F low 0 high 0 GPU FB 1.5V High Side Key IM0R low 0 high 0 DIMM 1.5V S3 Key IH05 low 0 high 0 HDD 5V Key IH02 low 0 high 0 HDD 12V Key IH1R low 0 high 0 SSD 3.3V Key ID2R low 0 high 0 AC/DC 12V G3H Key TC0c low 15 high 105 CPU Core 1 - DTS Key TC1c low 15 high 105 CPU Core 2 - DTS Key TC2c low 15 high 105 CPU Core 3 - DTS Key TC3c low 15 high 105 CPU Core 4 - DTS Key CUS1 low (null) high (null) CPU Cores Key F0Ac low 1400 high 2800 Fan Key PSTR low 0 high 0 Total Dumping iMac14,3 from iMac14_3 Name: iMac (21 inch, Late 2013) Memory: soldered slots with 8192 MB total Defaults: TC0p, temperature: CUS1, hidden IGPU Key IC0C low 0.001 high 95 CPU Core Key IC0M low 0 high 2.2 CPU 1.35 S0 Key ID2R low 0 high 17.1 AC/DC Key IM0R low 0 high 12 DIMM 1.5 S3 Key TA0p low 5 high 100 Ambient Logic Board Key TC0p low 5 high 100 CPU Proximity Key TL0p low 5 high 100 LCD Key TL1p low 5 high 100 Timing Controller Key TM0p low 5 high 100 SO-DIMM Proximity Key TPCD low 15 high 105 Platform Controller Hub Key Tb0p low 5 high 100 BLC Proximity Key Tm0p low 5 high 100 Logic Board DIMM Local Board Key Tm1p low 5 high 100 Logic Board Proximity (CPU) Key Tm2p low 5 high 100 Logic Board Proximity Key Tp2h low 5 high 120 AC/DC T2 (Secondary Heatsink) Key VC0C low 1.425 high 1.953 CPU Core Key VC0M low 1.2825 high 1.4175 CPU 1.35V S0 Key VD2R low 10.8 high 13.2 AC/DC Key VM0R low 1.2825 high 1.4175 DIMM 1.5V S3 Key VR1R low 1 high 1.1 1.05V S0 Key VR3R low 3.135 high 3.465 Logic Board 3.3V S5 Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key TC0c low 15 high 105 CPU Core 1 - DTS Key TC1c low 15 high 105 CPU Core 2 - DTS Key TC2c low 15 high 105 CPU Core 3 - DTS Key TC3c low 15 high 105 CPU Core 4 - DTS Key CUS1 low (null) high (null) CPU Cores Key F0Ac low 1400 high 2800 Fan Key PSTR low 0 high 0 Total Dumping iMac9,1 from iMac9_1 Name: iMac (20 inch, Early 2009) Memory: 2 slots with 8192 MB total Defaults: TC0D, temperature: TC0D, hidden IGPU Key IC0C low 0 high 0 CPU VCore Key TA0P low 0 high 0 Incoming Air Key TN0H low 0 high 0 Northbridge Heatsink Key TN0D low 0 high 0 Northbridge Die Key TN0P low 0 high 0 Northbridge Proximity Key TH0P low 0 high 0 Hard Drive Proximity Key TO0P low 0 high 0 Optical Drive Proximity Key TC0H low 0 high 0 CPU Heatsink Key TC0D low 0 high 0 CPU T-Diode Key TC0P low 0 high 0 CPU Proximity Key Tm0P low 0 high 0 Logic Board Proximity Key TL0P low 0 high 0 LCD Proximity Key Tp0P low 0 high 0 AC/DC Proximity Key VC0C low 0 high 0 CPU Core Key PC0C low 0 high 0 CPU Core Key F2Ac low 1200 high 3600 CPU Key F1Ac low 1600 high 5900 Hard Drive Key F0Ac low 800 high 4800 Optical Drive Dumping iMac8,1 from iMac8_1 Name: iMac (20 inch, Early 2008) Memory: 2 slots with 4096 MB total Defaults: TC0D, temperature: TC0D, hidden IGPU Key IC0C low 0 high 0 CPU Core Key ID0R low 0 high 0 12V S0 Key ID5R low 0 high 0 12V S5 Key IG0R low 0 high 0 MXM Key PC0C low 0 high 0 CPU Core Key TA0P low 0 high 0 Ambient Air Key TC0D low 0 high 0 CPU Die Key TC0H low 0 high 0 CPU Heatsink Key TC0P low 0 high 0 CPU Proximity Key TG0D low 0 high 0 GPU Die Key TG0H low 0 high 0 GPU Heatsink Key TG0P low 0 high 0 GPU Proximity Key TH0P low 0 high 0 Hard Drive Body Key TL0P low 0 high 0 LCD Proximity Key TO0P low 0 high 0 Optical Drive Key Tm0P low 0 high 0 Misc Key Tp0P low 0 high 0 AC/DC Supply Key VC0C low 0 high 0 CPU V-Sense Key VD0R low 0 high 0 12V S0 Key VD5R low 0 high 0 12V S5 Key F2Ac low 1200 high 3600 CPU Key F1Ac low 1200 high 5900 Hard Drive Key F0Ac low 700 high 4800 Optical Drive Dumping iMac14,2 from iMac14_2 Name: iMac (27 inch, Late 2013) Memory: 4 slots with 32768 MB total Defaults: TC0p, temperature: CUS1, hidden IGPU Key IC0C low 0.001 high 95 CPU Core Key IC0M low 0.01 high 4.75 CPU MEM 1.5V Key ID2R low 0.01 high 25 AC/DC 12V Key IG0C low 0.01 high 105 GPU Core Low Side Key IG0F low 0.01 high 3.1 GPU Frame buffer 1.5V High Side Key IG1C low 0.01 high 12.5 GPU Core High Side Key IH02 low 0 high 2 HDD 12V Key IH05 low 0 high 1.2 HDD 5V Key IM0R low 0.01 high 12 DIMM 1.5 S3 Key TA0p low 5 high 100 Logic Board Ambient Key TC0p low 5 high 100 CPU Proximity Key TG0d low 15 high 105 GPU Die Key TG0p low 5 high 100 GPU Proximity Key TL0p low 5 high 80 LCD Flying Lead Key TL1p low 5 high 100 Timing Controller Key TM0p low 5 high 100 SO-DIMM 1 Proximity Board Key TM1p low 5 high 100 SO-DIMM 2 Proximity Board Key TM2p low 5 high 100 SO-DIMM 3 Proximity Board Key TM3p low 5 high 100 SO-DIMM 4 Proximity Board Key TPCD low 15 high 105 Platform Controller Hub Key Tb0p low 5 high 100 BLC Proximity Board Key Tm0p low 5 high 100 Logic Board PSU Local Board Key Tm1p low 5 high 100 Logic Board GPU Local Board Key Tm2p low 5 high 100 CPU backside Key Tp2h low 5 high 120 AC/DC T2 Sec heatsink Key VC0C low 0.25 high 2.05 CPU Core Key VC0M low 1.425 high 1.575 CPU MEM 1.5V Key VD2R low 10.8 high 13.2 AC/DC 12V Key VG0C low 0.65 high 1.2 GPU Core Key VG0F low 11.4 high 12.6 GPU FB Key VG1C low 11.4 high 12.6 GPU Core High Side Key VH05 low 4.75 high 5.25 3.5 HDD 5V Key VM0R low 1.425 high 1.575 DIMM 1.5V S3 Key VR1R low 1 high 1.1 1.05V S0 Key VR3R low 3.15 high 3.45 Voltage Regulator 3.3V Key ALSL low 0 high 0 Ambient Light Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key TC0c low 15 high 105 CPU Core 1 - DTS Key TC1c low 15 high 105 CPU Core 2 - DTS Key TC2c low 15 high 105 CPU Core 3 - DTS Key TC3c low 15 high 105 CPU Core 4 - DTS Key CUS1 low (null) high (null) CPU Cores Key F0Ac low 1199 high 2639 Fan Key PSTR low 0 high 0 Total Dumping iMac7,1 from iMac7_1 Name: iMac (20 inch, Mid 2007) Memory: 2 slots with 4096 MB total Defaults: TC0H, temperature:, hidden IGPU Key TA0P low 0 high 0 Ambient Air Key Tm0P low 0 high 0 Misc Key TG0D low 0 high 0 GPU Die Key Tp0P low 0 high 0 AC/DC Supply Key TG0P low 0 high 0 GPU Proximity Key TG0H low 0 high 0 GPU Heatsink Key TW0P low 0 high 0 Airport Card Key TC0H low 0 high 0 CPU Heatsink Key TL0P low 0 high 0 LCD Proximity Key TO0P low 0 high 0 Optical Drive Key TH0P low 0 high 0 Hard Drive Body Key IC0C low 0 high 0 CPU Key IG0C low 0 high 0 GPU Key VG0C low 0 high 0 GPU Key VC0C low 0 high 0 CPU Key PC0C low 0 high 0 CPU Key F2Ac low 1200 high 3500 CPU Key F1Ac low 1200 high 5500 Hard Drive Key F0Ac low 700 high 4400 Optical Drive Dumping iMac6,1 from iMac6_1 Name: iMac (24 inch, Late 2006) Memory: 2 slots with 4096 MB total Defaults: TC0H, temperature: TC0D, hidden IGPU Key TA0P low 0 high 0 Ambient Air Key Tm0P low 0 high 0 Misc Key TG0D low 0 high 0 GPU Die Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU Proximity Key TO0P low 0 high 0 Optical Drive Key TH0P low 0 high 0 Hard Drive Body Key IC0C low 0 high 0 CPU Key ID0R low 0 high 0 DC In Key IG0C low 0 high 0 GPU Key VD0R low 0 high 0 DC In Key VG0C low 0 high 0 GPU Key VC0C low 0 high 0 CPU Key PC0C low 0 high 0 CPU Key PD0R low 0 high 0 DC In Key PG0C low 0 high 0 CPU Key Tp0P low 0 high 0 AC/DC Supply Key TG0P low 0 high 0 GPU Proximity Key TG0H low 0 high 0 GPU Heatsink Key TC0H low 0 high 0 CPU Heatsink Key CPU_MEM low 0 high 0 CPU_MEM Key HDD low 0 high 0 HDD Key ODD low 0 high 0 ODD Dumping iMac5,2 from iMac5_2 Name: iMac (17 inch, Late 2006) Memory: 2 slots with 2048 MB total Defaults: TC0D, temperature: TC0D, hidden IGPU Key TA0P low 0 high 0 Ambient Air Key Tm0P low 0 high 0 Misc Key TG0D low 0 high 0 GPU Die Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU Proximity Key TO0P low 0 high 0 Optical Drive Key TH0P low 0 high 0 Hard Drive Body Key IC0C low 0 high 0 CPU Key ID0R low 0 high 0 DC In Key IG0C low 0 high 0 GPU Key VD0R low 0 high 0 DC In Key VG0C low 0 high 0 GPU Key VC0C low 0 high 0 CPU Key PC0C low 0 high 0 CPU Key PD0R low 0 high 0 DC In Key PG0C low 0 high 0 CPU Key CPU_MEM low 0 high 0 CPU_MEM Key HDD low 0 high 0 HDD Key ODD low 0 high 0 ODD Dumping iMac5,1 from iMac5_1 Name: iMac (17 inch, Late 2006) Memory: 2 slots with 3072 MB total Defaults: TC0D, temperature: TC0D, hidden IGPU Key TA0P low 0 high 0 Ambient Air Key Tm0P low 0 high 0 Misc Key TG0D low 0 high 0 GPU Die Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU Proximity Key TO0P low 0 high 0 Optical Drive Key TH0P low 0 high 0 Hard Drive Body Key IC0C low 0 high 0 CPU Key ID0R low 0 high 0 DC In Key IG0C low 0 high 0 GPU Key VD0R low 0 high 0 DC In Key VG0C low 0 high 0 GPU Key VC0C low 0 high 0 CPU Key PC0C low 0 high 0 CPU Key PD0R low 0 high 0 DC In Key PG0C low 0 high 0 CPU Key CPU_MEM low 0 high 0 CPU_MEM Key HDD low 0 high 0 HDD Key ODD low 0 high 0 ODD Dumping iMac4,1 from iMac4_1 Name: iMac (17 inch) Memory: 2 slots with 2048 MB total Defaults: TC0D, temperature: TC0D, hidden IGPU Key IC0C low 0 high 0 CPU I-Sense Key ID0R low 0 high 0 DC I-Sense Key IG0C low 0 high 0 GPU I-Sense Key PC0C low 0 high 0 CPU Core Key PD0R low 0 high 0 DC In Rail Key PG0C low 0 high 0 GPU Core Key TA0P low 0 high 0 Ambient Air Key TC0D low 0 high 0 CPU Die Key TC0P low 0 high 0 CPU VR Area Key TG0D low 0 high 0 GPU Die Key TH0P low 0 high 0 Hard Drive Body Key TO0P low 0 high 0 Optical Drive Key Tm0P low 0 high 0 Misc Key VC0C low 0 high 0 CPU V-Sense Key VD0R low 0 high 0 DC V-Sense Key VG0C low 0 high 0 GPU V-Sense Key CPU_MEM low 0 high 0 CPU/MEM Key HDD low 0 high 0 Hard Drive Key ODD low 0 high 0 Optical Drive Dumping iMac13,2 from iMac13_2 Name: iMac (27 inch, Late 2012) Memory: 4 slots with 32768 MB total Defaults: TC0p, temperature: CUS1, hidden IGPU Key ALSL low 0 high 0 Ambient Light Key IC0C low 0.001 high 112 CPU Core Key IC0G low 0 high 35 Intel GPU Key IC0I low 0.001 high 0.9 CPU I/O High Side Key IC0M low 0.01 high 4.75 CPU Memory 1.5V Key IC0S low 0.01 high 0.9 CPU System Agent High Side Key ID2R low 0.01 high 25 AC/DC 12V Key IG0C low 0.01 high 90 GPU Core Low Side Key IG0F low 0.01 high 3.1 GPU Frame Buffer 1.5V High Side Key IH02 low 0 high 0.8 HDD 12V Key IH05 low 0 high 1.2 HDD 5V Key IH1R low 0 high 3 SSD 3.3V Key IM0R low 0.01 high 12 DIMM 1.5V S3 Key IN1R low 0.1 high 4.4 Platform Controller Hub 1.05V Key IR1R low 0.01 high 0.8 PCH/GPU/TBT 1.05V High Side Key TA0p low 5 high 100 Logic Board Ambient Key TC0p low 5 high 100 CPU Proximity Key TG0d low 15 high 105 GPU Die Key TG0p low 5 high 100 GPU Proximity Key TL0p low 5 high 80 LCD Flying Lead Key TL1p low 5 high 100 Timing Controller Key TM0p low 5 high 100 SO-DIMM 1 Proximity Key TM1p low 5 high 100 SO-DIMM 2 Proximity Key TM2p low 5 high 100 SO-DIMM 3 Proximity Key TM3p low 5 high 100 SO-DIMM 4 Proximity Key TPCD low 15 high 105 Platform Controller Hub Key Tb0p low 5 high 100 BLC Proximity Key Tm0p low 5 high 100 Logic Board PSU Local Board Key Tm1p low 5 high 100 Logic Board GPU Local Board Key Tp2h low 5 high 120 AC/DC T2 Sec Heatsink Key VC0C low 0.25 high 1.52 CPU Core Key VC0G low 0.25 high 1.52 Intel GPU Key VC0M low 1.425 high 1.575 CPU Memory 1.5V Key VD2R low 10.8 high 13.2 AC/DC 12V Key VG0C low 0.65 high 1.2 CPU Core Key VH05 low 4.75 high 5.25 HDD 5V Key VM0R low 1.425 high 1.575 DIMM 1.5V S3 Key VN1R low 1 high 1.1 PCH 1.05V Key VR3R low 3.15 high 3.45 Voltage Regulator 3.3V Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key TC0c low 15 high 105 CPU Core 1 - DTS Key TC1c low 15 high 105 CPU Core 2 - DTS Key TC2c low 15 high 105 CPU Core 3 - DTS Key TC3c low 15 high 105 CPU Core 4 - DTS Key CUS1 low (null) high (null) CPU Cores Key F0Ac low 1200 high 2640 Fan Key PSTR low 0 high 0 Total Dumping iMac13,1 from iMac13_1 Name: iMac (21 inch, Late 2012) Memory: 4 slots with 32768 MB total Defaults: TC0p, temperature: CUS1, hidden IGPU Key TA0p low 5 high 100 Ambient Logic Board Key TC0p low 5 high 100 CPU Proximity Key TG0d low 10 high 105 GPU Die Key TG0p low 5 high 100 GPU Proximity Key TL0p low 5 high 100 LCD Key TL1p low 5 high 100 Timing Controller Key TM0p low 5 high 100 SO-DIMM Proximity Key TPCD low 35 high 105 Platform Controller Hub Key Tb0p low 5 high 100 BLC Proximity Key Tm0p low 5 high 100 Logic Board proximity Key Tp2h low 5 high 120 Power Supply Heatsink Key VC0C low 0.2 high 1.35 CPU Core Key VC0G low 0 high 1.35 Intel GPU Key VD2R low 10.8 high 13.2 AC/DC Key VG0C low 10.8 high 13.2 GPU Core Key VM0R low 1.425 high 1.575 DIMM 1.5V S3 Key IC0C low 0.001 high 75 CPU Core Key IC0G low 0 high 35 Intel GPU Key ID2R low 0 high 17.1 AC/DC Key IG0C low 0 high 2.5 GPU Core Key IM0R low 0 high 12 DIMM 1.5V S3 Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key TC0c low 15 high 105 CPU Core 1 - DTS Key TC1c low 15 high 105 CPU Core 2 - DTS Key TC2c low 15 high 105 CPU Core 3 - DTS Key TC3c low 15 high 105 CPU Core 4 - DTS Key CUS1 low (null) high (null) CPU Cores Key F0Ac low 1399 high 2799 Fan Key PSTR low 0 high 0 Total Dumping iMac12,2 from iMac12_2 Name: iMac (27 inch, Mid 2011) Memory: 4 slots with 16384 MB total Defaults: TC0H, temperature: CUS1, hidden IGPU Key IC0C low 0.05 high 90 CPU Core Key IC0G low 0 high 10 GPU Core Key IC5R low 0.01 high 5 CPU 1.5V S0 Key ICSR low 0.05 high 10 CPU System Agent Key ICVR low 0.1 high 25 CPU System Agent Key IDS2 low 0 high 0 AC/DC Key IG0R low 0.1 high 6.4 MXM Key IN1R low 0.1 high 5 PCH 1.05V S0 Key IV1R low 0.01 high 10 1.05V S0 Key PDS2 low 0 high 0 AC/DC Key TA0P low 4.5 high 40.3 Incoming Air Key TC0H low 5 high 80 CPU Heatsink Key TC0p low 4 high 80 CPU Proximity Key TG0D low 10 high 100 GPU Die Key TG0H low 10 high 100 GPU Heatsink Key TH0O low 0 high 0 Hard Drive Proximity Key TL0p low 5 high 80 LCD Proximity Key Tm0P low 5 high 100 Logic Board Proximity Key TO0P low 5 high 56 Optical Drive Proximity Key Tp1P low 5 high 96 Power Board Proximity Key Tp2H low 5 high 114 Power Secondary Heatsink Key Tp3H low 5 high 89 Power Primary Heatsink Key TPCD low 5 high 110 Platform Controller Hub Key TS0p low 5 high 60 Skin Upper Right Key TS2p low 5 high 60 Skin Upper Left Key VC0C low 0.65 high 1.4 CPU Core Key VC0G low 0.025 high 1.2 GPU Core Key VC5R low 1.42 high 1.58 CPU 1.5V S0 Key VCVR low 1.02 high 1.16 CPU System Agent Key VD2R low 10.8 high 13.2 PS 12V S0 Key VDSR low 0 high 0 AC/DC Shunt Key VG0R low 11.2 high 12.6 MXM Key VN1R low 1.02 high 1.16 PCH 1.05V S0 Key VV1R low 1.02 high 1.16 1.05V S0 Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key TC0c low 15 high 105 CPU Core 1 - DTS Key TC1c low 15 high 105 CPU Core 2 - DTS Key TC2c low 15 high 105 CPU Core 3 - DTS Key TC3c low 15 high 105 CPU Core 4 - DTS Key CUS1 low (null) high (null) CPU Cores Key F2Ac low 940 high 2600 CPU Key F1Ac low 1100 high 5500 Hard Drive Key F0Ac low 1150 high 2700 Optical Drive Dumping iMac12,1 from iMac12_1 Name: iMac (21.5 inch, Mid 2011) Memory: 4 slots with 16384 MB total Defaults: TC0H, temperature: CUS1, hidden IGPU Key IC0C low 0.05 high 60 CPU Core Key IC0G low 0 high 10 GPU Core Key IC5R low 0.01 high 5 CPU 1.5V S0 Key ICSR low 0.05 high 10 CPU System Agent Key ICVR low 0.1 high 25 CPU System Agent Key IDS2 low 0 high 0 AC/DC Key IG0R low 0.1 high 6.4 MXM Key IN1R low 0.1 high 5 PCH 1.05V S0 Key IV1R low 0.01 high 10 1.05V S0 Key PDS2 low 0 high 0 AC/DC Key TA0P low 4.5 high 45.3 Incoming Air Key TC0H low 5 high 80 CPU Heatsink Key TC0p low 4 high 80 CPU Proximity Key TG0D low 10 high 100 GPU Die Key TG0H low 10 high 100 GPU Heatsink Key TH0O low 0 high 0 Hard Drive Proximity Key TL0p low 5 high 80 LCD Proximity Key Tm0P low 5 high 100 Logic Board Proximity Key TO0P low 5 high 56 Optical Drive Proximity Key Tp1P low 5 high 96 Power Board Proximity Key Tp2H low 5 high 114 Power Secondary Heatsink Key Tp3H low 5 high 89 Power Primary Heatsink Key TPCD low 5 high 110 Platform Controller Hub Key TS0p low 5 high 60 Skin Upper Right Key TS2p low 5 high 60 Skin Upper Left Key VC0C low 0.65 high 1.4 CPU Core Key VC0G low 0.025 high 1.2 GPU Core Key VC5R low 1.42 high 1.58 CPU 1.5V S0 Key VCVR low 1.02 high 1.16 CPU System Agent Key VD2R low 10.8 high 13.2 PS 12V S0 Key VDSR low 0 high 0 AC/DC Shunt Key VG0R low 11.2 high 12.6 MXM Key VN1R low 1.02 high 1.16 PCH 1.05V S0 Key VV1R low 1.02 high 1.16 1.05V S0 Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key TC0c low 15 high 105 CPU Core 1 - DTS Key TC1c low 15 high 105 CPU Core 2 - DTS Key TC2c low 15 high 105 CPU Core 3 - DTS Key TC3c low 15 high 105 CPU Core 4 - DTS Key CUS1 low (null) high (null) CPU Cores Key F2Ac low 1200 high 4000 CPU Key F1Ac low 1100 high 6300 Hard Drive Key F0Ac low 1000 high 4350 Optical Drive Dumping iMac11,3 from iMac11_3 Name: iMac (27 inch, Mid 2010) Memory: 4 slots with 16384 MB total Defaults: TC0H, temperature: TC0C, hidden IGPU Key IC0C low 0 high 0 CPU Core Key ICVR low 0 high 0 CPU VTT Key IDSR low 0 high 0 AC/DC Key IG0R low 0 high 0 MXM Key PDSR low 0 high 0 AC/DC Key TA0P low 0 high 0 Incoming Air Key TC0C low 0 high 0 PECI Key TC0H low 0 high 0 CPU Heatsink Key TG0D low 0 high 0 GPU Die Key TG0H low 0 high 0 GPU Heatsink Key TH0O low 0 high 0 Hard Drive Proximity Key TL0p low 0 high 0 LCD Proximity Key Tm0P low 0 high 0 Logic Board Proximity Key Tm1P low 0 high 0 Logic Board Proximity Key TN0H low 0 high 0 MCP Heatsink Key TO0P low 0 high 0 Optical Drive Proximity Key Tp1P low 0 high 0 Power Board Proximity Key Tp2H low 0 high 0 Power Secondary Heatsink Key Tp3H low 0 high 0 Power Primary Heatsink Key TS2p low 0 high 0 Skin Key VC0C low 0 high 0 CPU Core Key VCVR low 0 high 0 CPU VTT Key VC8R low 0 high 0 CPU 1.8V S0 Key VDPr low 0 high 0 AC/DC Key VDSR low 0 high 0 AC/DC Shunt Key VG0R low 0 high 0 MXM Key F2Ac low 940 high 2100 CPU Key F1Ac low 1100 high 5500 Hard Drive Key F0Ac low 1000 high 3800 Optical Drive Dumping iMac11,2 from iMac11_2 Name: iMac (21.5 inch, Mid 2010) Memory: 4 slots with 16384 MB total Defaults: TC0H, temperature:, hidden IGPU Key IC0C low 0 high 0 CPU Core Key ICVR low 0 high 0 CPU VTT Key IDSR low 0 high 0 AC/DC Key IG0R low 0 high 0 MXM Key PDSR low 0 high 0 AC/DC Key TA0P low 0 high 0 Incoming Air Key TC0C low 0 high 0 PECI Key TC0H low 0 high 0 CPU Heatsink Key TG0D low 0 high 0 GPU Die Key TG0H low 0 high 0 GPU Heatsink Key TH0O low 0 high 0 Hard Drive Proximity Key TL0p low 0 high 0 LCD Proximity Key Tm0P low 0 high 0 Logic Board Proximity Key Tm1P low 0 high 0 Logic Board Proximity Key TN0H low 0 high 0 MCP Heatsink Key TO0P low 0 high 0 Optical Drive Proximity Key Tp1P low 0 high 0 Power Board Proximity Key Tp2H low 0 high 0 Power Secondary Heatsink Key Tp3H low 0 high 0 Power Primary Heatsink Key TS2p low 0 high 0 Skin Key VC0C low 0 high 0 CPU Core Key VCVR low 0 high 0 CPU VTT Key VC8R low 0 high 0 CPU 1.8V S0 Key VDPr low 0 high 0 AC/DC Key VDSR low 0 high 0 AC/DC Shunt Key VG0R low 0 high 0 MXM Key F2Ac low 1200 high 2600 CPU Key F1Ac low 1100 high 6300 Hard Drive Key F0Ac low 1000 high 4350 Optical Drive Dumping iMac11,1 from iMac11_1 Name: iMac (27 inch, Late 2009) Memory: 4 slots with 16384 MB total Defaults: TC0H, temperature:, hidden IGPU Key IC0C low 0 high 0 CPU Core Key IG0R low 0 high 0 MXM Key PDSR low 0 high 0 AC/DC Key TA0P low 0 high 0 Incoming Air Key TC0H low 0 high 0 CPU Heatsink Key TG0D low 0 high 0 GPU Die Key TG0H low 0 high 0 GPU Heatsink Key TH0O low 0 high 0 Hard Drive Proximity Key TL0p low 0 high 0 LCD Proximity Key Tm0P low 0 high 0 Logic Board Proximity Key TN0H low 0 high 0 MCP Heatsink Key TO0P low 0 high 0 Optical Drive Proximity Key Tp1P low 0 high 0 Power Board Proximity Key Tp2H low 0 high 0 Power Secondary Heatsink Key Tp3H low 0 high 0 Power Primary Heatsink Key VC0C low 0 high 0 CPU Core Key VDPR low 0 high 0 AC/DC Voltage Key VG0R low 0 high 0 MXM Key F2Ac low 940 high 2100 CPU Key F1Ac low 1100 high 5500 Hard Drive Key F0Ac low 1000 high 3800 Optical Drive Dumping iMac10,1 from iMac10_1 Name: iMac (21.5 inch, Late 2009) Memory: 4 slots with 8192 MB total Defaults: TC0H, temperature:, hidden IGPU Key IC0C low 0 high 0 CPU Core Key IG0R low 0 high 0 MXM Key PDSR low 0 high 0 AC/DC Key TA0P low 0 high 0 Incoming Air Key TC0H low 0 high 0 CPU Heatsink Key TG0D low 0 high 0 GPU Die Key TG0H low 0 high 0 GPU Heatsink Key TH0O low 0 high 0 Hard Drive Proximity Key TL0p low 0 high 0 LCD Proximity Key Tm0P low 0 high 0 Logic Board Proximity Key TN0H low 0 high 0 MCP Heatsink Key TO0P low 0 high 0 Optical Drive Proximity Key Tp1P low 0 high 0 Power Board Proximity Key Tp2H low 0 high 0 Power Secondary Heatsink Key Tp3H low 0 high 0 Power Primary Heatsink Key VC0C low 0 high 0 CPU Core Key VDPR low 0 high 0 AC/DC Voltage Key VG0R low 0 high 0 MXM Key F2Ac low 1200 high 4000 CPU Key F1Ac low 1100 high 6300 Hard Drive Key F0Ac low 1000 high 4350 Optical Drive Dumping iMac15,1 from iMac15_1 Name: iMac with Retina 5K Display (27 inch, Late 2014) Memory: 4 slots with 32768 MB total Defaults: TC0p, temperature: CUS1, hidden IGPU Key PGTR low 0 high 0 GPU Package Key PC0C low 0 high 0 CPU Core Key PCPR low 0 high 0 CPU Package Total Key TG0D low 0 high 0 GPU Die Key TG0p low 0 high 0 GPU Proximity Key TC0E low 0 high 0 CPU Die PECI Key TC0p low 0 high 0 CPU Proximity Key TPCD low 0 high 0 Platform Controller Hub Key TA0p low 0 high 0 Logic Board Ambient Key TL0p low 0 high 0 LCD Flying Lead Key TL1p low 0 high 0 Timing Controller Key Tb0p low 0 high 0 BLC Proximity Key TM0p low 0 high 0 SO-DIMM 1 Key TM1p low 0 high 0 SO-DIMM 2 Key TM2p low 0 high 0 SO-DIMM 3 Key TM3p low 0 high 0 SO-DIMM 4 Key Tm0p low 0 high 0 Logic Board PSU Key Tm1p low 0 high 0 Logic Board GPU Key Tm2p low 0 high 0 CPU Backside Key Tp2h low 0 high 0 AC/DC T2 Sec Heatsink Key TI0p low 0 high 0 Thunderbolt Die Key VC0C low 0 high 0 CPU Core Key VC0M low 0 high 0 CPU MEM 1.5V Key VG0C low 0 high 0 GPU Core Key VG1C low 0 high 0 GPU Core High Side Key VG0F low 0 high 0 GPU FB Key VM0R low 0 high 0 DIMM 1.5V S3 Key VH05 low 0 high 0 HDD 5V Key VR1R low 0 high 0 1.05V S0 Key VR3R low 0 high 0 Voltage Regulator 3.3V Key VD2R low 0 high 0 AC/DC 12V G3H Key IC0C low 0 high 0 CPU Core Key IC0M low 0 high 0 CPU MEM 1.5V Key IG0C low 0 high 0 GPU Core Low Side Key IG1C low 0 high 0 GPU Core High Side Key IG0F low 0 high 0 GPU FB 1.5V Key IM0R low 0 high 0 DIMM 1.V5 S3 Key IH05 low 0 high 0 HDD 5V Key IH02 low 0 high 0 HDD 12V Key IH1R low 0 high 0 SSD 3.3V Key ID2R low 0 high 0 AC/DC 12V G3H Key TC0c low 15 high 105 CPU Core 1 - DTS Key TC1c low 15 high 105 CPU Core 2 - DTS Key TC2c low 15 high 105 CPU Core 3 - DTS Key TC3c low 15 high 105 CPU Core 4 - DTS Key CUS1 low (null) high (null) CPU Cores Key ALSL low 0 high 0 Ambient Light Key F0Ac low 1200 high 2700 Fan Key PSTR low 0 high 0 Total Dumping iMac16,1 from iMac16_1 Name: iMac (21 inch, Late 2015) Memory: soldered slots with 32768 MB total Defaults: TC0p, temperature: CUS1, hidden IGPU Key PGTR low 0 high 0 GPU package Key PCPR low 0 high 0 CPU Package Key PC0C low 0 high 0 CPU Package Key TC0p low 0 high 0 CPU Proximity Board Key TPCD low 0 high 0 Platform Controller Hub Key TA0p low 0 high 0 Logic Board Ambient Key TL0p low 0 high 0 LCD Flying Lead Key TL1p low 0 high 0 Timing Controller Key TM0p low 0 high 0 SO-DIMM Proximity Board Key Tp2h low 0 high 0 AC/DC T2 Sec Heatsink Key TI0p low 0 high 0 TBT Die Key Tb0p low 0 high 0 BLC Proximity Board Key Tm0p low 0 high 0 Logic Board PSU Local Board Key Tm2p low 0 high 0 CPU Backside Key VD2R low 0 high 0 AC/DC 12V G3H Key ID2R low 0 high 0 AC/DC 12V G3H Key VM0R low 0 high 0 DIMM 1.5 S3 Key IM0R low 0 high 0 DIMM 1.5 S3 Key VC0C low 0 high 0 CPU Core Key IC0C low 0 high 0 CPU Core Key IH1R low 0 high 0 SSD 3.3V Key VR3R low 0 high 0 Voltage Regulator 3.3V Key TC0c low 15 high 105 CPU Core 1 - DTS Key TC1c low 15 high 105 CPU Core 2 - DTS Key TC2c low 15 high 105 CPU Core 3 - DTS Key TC3c low 15 high 105 CPU Core 4 - DTS Key CUS1 low (null) high (null) CPU Cores Key PSTR low 0 high 0 Total Power Key ALSL low 0 high 0 Ambient Light Key F0Ac low 1200 high 2500 Fan Key PSTR low 0 high 0 Total Dumping iMac18,1 from iMac18_1 Name: iMac (21 inch, Mid 2017) Memory: 4 slots with 65536 MB total Defaults: TC0p, temperature: CUS1, hidden IGPU Key PCPT low 0 high 0 CPU Input Key PCPR low 0 high 0 CPU Package Key PC0C low 0 high 0 CPU Load Side Key TI0p low 0 high 0 Thunderbolt Proximity Key TC0p low 0 high 0 CPU Proximity Board Key TPCD low 0 high 0 Platform Controller Hub Key TA0p low 0 high 0 Logic Board Ambient Key TL0p low 0 high 0 LCD Flying Lead Key TL1p low 0 high 0 Timing Controller BOard Key TM0p low 0 high 0 SO-DIMM Proximity Key TH1R low 0 high 0 SSD Key Tp2h low 0 high 0 AC/DC T2 Sec Heatsink Key Tb0p low 0 high 0 BLC Proximity Key Tm0p low 0 high 0 Logic Board PSU Key Tm2p low 0 high 0 CPU Backside Key TC0c low 0 high 0 CPU Core 1 Key TC1c low 0 high 0 CPU Core 2 Key TCGc low 0 high 0 GPU Key TCSc low 0 high 0 CPU System Agent Key TS0V low 0 high 0 Skin Key VD2R low 0 high 0 AC/DC 12V G3H Key ID2R low 0 high 0 AC/DC 12V G3H Key VM0R low 0 high 0 DIMM Key IR13 low 0 high 0 DIMM Key IM0R low 0 high 0 DIMM Key VC0C low 0 high 0 CPU Core Key VC0G low 0 high 0 Intel GPU Key IC0C low 0 high 0 CPU Core Key IC0G low 0 high 0 CPU Graphics Key IC0S low 0 high 0 CPU System Agent Key IC0E low 0 high 0 CPU EDRAM Key IC0P low 0 high 0 CPU Platform Controller Hub Key IR54 low 0 high 0 5V S4 Key IR35 low 0 high 0 3.3V S5 Key IH1R low 0 high 0 SSD 3.3V Key VR35 low 0 high 0 Voltage Regulator 3.3V Key IC0M low 0 high 0 CPU Memory 1.5V Key IC20 low 0 high 0 CPU Core, GPU, SA, IO Key CUS1 low (null) high (null) CPU Cores Key ALSL low 0 high 0 Ambient Light Key PSTR low 0 high 0 Total Key F0Ac low 1200 high 2850 Fan Dumping iMac18,2 from iMac18_2 Name: iMac with 4K Display (21 inch, Mid 2017) Memory: 4 slots with 65536 MB total Defaults: TC0p, temperature: CUS1, hidden IGPU Key TC0p low 0 high 0 CPU Proximity Key TPCD low 0 high 0 Platform Controller Hub Die Key TA0p low 0 high 0 Logic Board Ambient Key TL0p low 0 high 0 LCD Flying Lead Key TL1p low 0 high 0 Timing Controller Key TM0p low 0 high 0 Memory Key TH1R low 0 high 0 SSD Key Tp2h low 0 high 0 AC/DC T2 Sec Heatsink Key Tb0p low 0 high 0 BLC Proximity Key Tm0p low 0 high 0 Logic Board PSU Key Tm2p low 0 high 0 CPU Backside Key TG0d low 0 high 0 GPU Key TG0p low 0 high 0 GPU Proximity Key Tm1p low 0 high 0 Logic Board GPU Key TCSc low 0 high 0 CPU System Agent Core Key TS0V low 0 high 0 Skin Key VD2R low 0 high 0 AC/DC 12V G3H Key ID2R low 0 high 0 AC/DC 12V G3H Key VM0R low 0 high 0 DIMM 1.2 S3 Key IM0R low 0 high 0 DIMM 1.2 S3 Key VC0C low 0 high 0 CPU Core Key IC0C low 0 high 0 CPU Core Key IH1R low 0 high 0 SSD 3.3V Key VR3R low 0 high 0 Voltage Regulator 3.3V Key VC0M low 0 high 0 CPU Memory 1.2V Key IC0M low 0 high 0 CPU Memory 1.2V Key VG0C low 0 high 0 GPU Core Key IG0C low 0 high 0 GPU Core Low Side Key VG1C low 0 high 0 GPU Core High Side Key IG1C low 0 high 0 GPU Core High Side Key VG0F low 0 high 0 GPU Frame Buffer Key IG1F low 0 high 0 GPU Frame Input Average Key VH05 low 0 high 0 3.5 HDD 5V Key IH05 low 0 high 0 3.5 HDD 5V Key VR1R low 0 high 0 1.05V S0 Key VH1R low 0 high 0 SSD Key IH02 low 0 high 0 3.5 HDD 12V Key IC20 low 0 high 0 CPU Core, GPU, SA, IO Key TC0c low 15 high 105 CPU Core 1 - DTS Key TC1c low 15 high 105 CPU Core 2 - DTS Key TC2c low 15 high 105 CPU Core 3 - DTS Key TC3c low 15 high 105 CPU Core 4 - DTS Key CUS1 low (null) high (null) CPU Cores Key ALSL low 0 high 0 Ambient Light Key PSTR low 0 high 0 Total Key F0Ac low 1200 high 2850 Fan Dumping iMac16,2 from iMac16_2 Name: iMac (21 inch, Late 2015) Memory: soldered slots with 32768 MB total Defaults: TC0p, temperature: CUS1, hidden IGPU Key PGTR low 0 high 0 GPU Package Key PCPR low 0 high 0 CPU Package Key PC0C low 0 high 0 CPU Package Key TC0p low 0 high 0 CPU Proximity Board Key TPCD low 0 high 0 Platform Controller Hub Key TA0p low 0 high 0 Logic Board Ambient Key TL0p low 0 high 0 LCD Flying Lead Key TL1p low 0 high 0 Timing Controller Key TM0p low 0 high 0 SO-DIMM Proximity Board Key Tp2h low 0 high 0 AC/DC T2 Sec Heatsink Key TI0p low 0 high 0 Thunderbolt Die Key Tb0p low 0 high 0 BLC Proximity Board Key Tm0p low 0 high 0 Logic Board PSU Local Board Key Tm2p low 0 high 0 CPU backside Key VD2R low 0 high 0 AC/DC 12V G3H Key ID2R low 0 high 0 AC/DC 12V G3H Key VM0R low 0 high 0 DIMM 1.5 S3 Key IM0R low 0 high 0 DIMM 1.5 S3 Key VC0C low 0 high 0 CPU Core Key IC0C low 0 high 0 CPU Core Key VH1R low 0 high 0 SSD 3.3V Key IH1R low 0 high 0 SSD 3.3V Key VR35 low 0 high 0 3.3v S5 Load Side Key IR35 low 0 high 0 3.3v S5 Load Side Key VR54 low 0 high 0 5V S4 load-side Key IR54 low 0 high 0 SSD 3.3V Key VR3R low 0 high 0 Voltage Regulator 3.3V Key TC0c low 15 high 105 CPU Core 1 - DTS Key TC1c low 15 high 105 CPU Core 2 - DTS Key TC2c low 15 high 105 CPU Core 3 - DTS Key TC3c low 15 high 105 CPU Core 4 - DTS Key CUS1 low (null) high (null) CPU Cores Key PSTR low 0 high 0 Total Power Key ALSL low 0 high 0 Ambient Light Key F0Ac low 1200 high 2850 Fan Key PSTR low 0 high 0 Total Dumping iMac18,3 from iMac18_3 Name: iMac with Retina 5K Display (27 inch, Mid 2017) Memory: 4 slots with 65536 MB total Defaults: TC0p, temperature: CUS1, hidden IGPU Key PGTR low 0 high 0 GPU Key TC0p low 0 high 0 CPU Proximity Key TPCD low 0 high 0 Platform Controller Hub Die Key TA0p low 0 high 0 Logic Board Ambient Key TL0p low 0 high 0 LCD Flying Lead Key TL1p low 0 high 0 Timing Controller Key TM0p low 0 high 0 Memory Proximity Key TH1R low 0 high 0 SSD Key Tp2h low 0 high 0 AC/DC T2 Sec Heatsink Key Tb0p low 0 high 0 BLC Proximity Key Tm0p low 0 high 0 Logic Board PSU Key Tm2p low 0 high 0 CPU backside Key TG0d low 0 high 0 GPU Die Key TG0p low 0 high 0 GPU Proximity Key Tm1p low 0 high 0 Logic Board GPU Key TM1p low 0 high 0 Memory Proximity 2 Key TM2p low 0 high 0 Memory Proximity 3 Key TM3p low 0 high 0 Memory Proximity 4 Key TCGc low 0 high 0 GPU Key TCSc low 0 high 0 CPU System Agent Key TS0V low 0 high 0 Skin Key VD2R low 0 high 0 AC/DC 12V G3H Key ID2R low 0 high 0 AC/DC 12V G3H Key VM0R low 0 high 0 DIMM 1.2 S3 Key IM0R low 0 high 0 DIMM 1.2 S3 Key VC0C low 0 high 0 CPU Core Key IC0C low 0 high 0 CPU Core Key IH1R low 0 high 0 SSD 3.3V Key VR3R low 0 high 0 Voltage Regulator 3.3V Key VC0M low 0 high 0 CPU Memory 1.2V Key IC0M low 0 high 0 CPU Memory 1.2V Key VG0C low 0 high 0 GPU Core Key IG0C low 0 high 0 GPU Core Low Side Key VG1C low 0 high 0 GPU Core High Side Key IG1C low 0 high 0 GPU Core High Side Key VG0F low 0 high 0 GPU Frame Buffer Key IG1F low 0 high 0 GPU Frame Input Average Key VH05 low 0 high 0 3.5 HDD 5V Key IH05 low 0 high 0 3.5 HDD 5V Key VR1R low 0 high 0 1.05V S0 Key VH1R low 0 high 0 SSD Key IH02 low 0 high 0 3.5 HDD 12V Key IC20 low 0 high 0 CPU Core, GPU, SA, IO Key PGTR low 0 high 0 GPU Package Key PSTR low 0 high 0 Total Power Key PCPR low 0 high 0 CPU Package Key ALSL low 0 high 0 Ambient Light Key F0Ac low 1200 high 2700 Fan Key TC0c low 15 high 105 CPU Core 1 - DTS Key TC1c low 15 high 105 CPU Core 2 - DTS Key TC2c low 15 high 105 CPU Core 3 - DTS Key TC3c low 15 high 105 CPU Core 4 - DTS Key CUS1 low (null) high (null) CPU Cores Key PSTR low 0 high 0 Total Dumping iMac14,1 from iMac14_1 Name: iMac (21 inch, Late 2013) Memory: 4 slots with 32768 MB total Defaults: TC0p, temperature: CUS1, hidden IGPU Key IC0C low 0.001 high 95 CPU Core Key IC0M low 0 high 2.2 CPU 1.35 S0 Key ID2R low 0 high 17.1 AC/DC Key IM0R low 0 high 12 DIMM 1.5 S3 Key TA0p low 5 high 100 Ambient Logic Board Key TC0p low 5 high 100 CPU Proximity Key TL0p low 5 high 100 LCD Key TL1p low 5 high 100 Timing Controller Key TM0p low 5 high 100 SO-DIMM Proximity Key TPCD low 15 high 105 Platform Controller Hub Key Tb0p low 5 high 100 BLC Proximity Key Tm0p low 5 high 100 Logic Board DIMM Local Board Key Tm1p low 5 high 100 Logic Board Proximity (CPU) Key Tm2p low 5 high 100 Logic Board Proximity Key Tp2h low 5 high 120 AC/DC T2 (Secondary Heatsink) Key VC0C low 1.425 high 1.953 CPU Core Key VC0M low 1.2825 high 1.4175 CPU 1.35V S0 Key VD2R low 10.8 high 13.2 AC/DC Key VM0R low 1.2825 high 1.4175 DIMM 1.5 S3 Key VR1R low 1 high 1.1 1.05V S0 Key VR3R low 3.135 high 3.465 Logic Board 3.3V S5 Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key TC0c low 15 high 105 CPU Core 1 - DTS Key TC1c low 15 high 105 CPU Core 2 - DTS Key TC2c low 15 high 105 CPU Core 3 - DTS Key TC3c low 15 high 105 CPU Core 4 - DTS Key CUS1 low (null) high (null) CPU Cores Key F0Ac low 1400 high 2800 Fan Key PSTR low 0 high 0 Total Dumping iMacPro1,1 from iMacPro1_1 Name: iMac Pro (27 inch, Late 2017) Memory: 4 slots with 131072 MB total Defaults: TC0p, temperature: CUS1, hidden IGPU Key PGTR low 0 high 0 GPU Key PCPR low 0 high 0 CPU Key PSTR low 0 high 0 Total Power Key TC0p low 0 high 0 CPU Proximity Key TPCD low 0 high 0 Platform Controller Hub Die Key TA0p low 0 high 0 Logic Board Ambient Key TL0p low 0 high 0 LCD Flying Lead Key TL1p low 0 high 0 Timing Controller Key Tp2h low 0 high 0 AC/DC T2 Sec Heatsink Key Tb0p low 0 high 0 BLC Proximity Key Tm0p low 0 high 0 PSU Key Tm2p low 0 high 0 CPU Backside Key TG0d low 0 high 0 GPU Die Key Tm1p low 0 high 0 GPU Local Board Key TM0p low 0 high 0 SO-DIMM 1 Proximity Key TM1p low 0 high 0 SO-DIMM 2 Proximity Key TM2p low 0 high 0 SO-DIMM 3 Proximity Key TM3p low 0 high 0 SO-DIMM 4 Proximity Key TS0V low 0 high 0 Skin Key VD2R low 0 high 0 AC/DC 12V G3H Key ID2R low 0 high 0 AC/DC 12V G3H Key VC0C low 0 high 0 CPU Core Key IC0C low 0 high 0 CPU Core Key IH1R low 0 high 0 SSD 3.3V Key VG0C low 0 high 0 GPU Core Key IG0C low 0 high 0 GPU Core Low Side Key TC0c low 15 high 105 CPU Core 1 Key TC1c low 15 high 105 CPU Core 2 Key TC2c low 15 high 105 CPU Core 3 Key TC3c low 15 high 105 CPU Core 4 Key TC4c low 15 high 105 CPU Core 5 Key TC5c low 15 high 105 CPU Core 6 Key TC6c low 15 high 105 CPU Core 7 Key TC7c low 15 high 105 CPU Core 8 Key F0Ac low 1100 high 2500 Fan 1 Key F1Ac low 1100 high 2500 Fan 2 Dumping MacBookPro11,2 from MacBookPro11_2 Name: MacBook Pro (15 inch, Retina, Late 2013) Memory: 2 slots with 16384 MB total Defaults: TCXC, temperature: TCXC Key IC0C low 0.1 high 20 CPU Core Key IC0R low 0.1 high 3.5 CPU Highside Key ID0R low 0.3 high 5 DC In Key IG0R low 0 high 2 GPU (Core, FB, 1.0V) Key IG1C low 0 high 5 GPU FB Key IHDC low 0 high 1 SSD Key IHSC low 0 high 0.3 Thunderbolt Key IM0C low 0.01 high 1 Memory Key IO3R low 0.01 high 0.5 Other 3.3V Key IO5R low 0.1 high 1.1 Other 5V Key IPBR low 0.1 high 3 Charger - BMON Key Ta0P low 10 high 60 Air Flow Proximity Key TB1T low 10 high 60 Battery Sensor 1 Key TB2T low 10 high 60 Battery Sensor 2 Key TC0P low 10 high 70 CPU Proximity Key TC1C low 10 high 95 CPU Core 1 Key TC2C low 10 high 95 CPU Core 2 Key TC3C low 10 high 95 CPU Core 3 Key TC4C low 10 high 95 CPU Core 4 Key TCGC low 10 high 100 Intel GPU Key TCSA low 10 high 100 CPU System Agent Core Key TCXC low 10 high 95 CPU PECI Die Key TM0P low 10 high 70 DDR3 Proximity Key TG0D low 10 high 100 GPU Die - Analog Key TG1D low 10 high 100 GPU Die - Digital Key TG0P low 10 high 80 GPU Proximity Key TH0A low 10 high 70 SSD A Key TH0B low 10 high 70 SSD B Key Th2H low 10 high 60 Left Fin Stack Key Ts0P low 10 high 45 Palm Rest Key TP0P low 10 high 75 Platform Controller Hub Key TPCD low 10 high 80 Platform Controller Hub PECI Key Th1H low 10 high 60 Right Fin Stack Key TW0P low 10 high 70 X29 Proximity Key VC0C low 1.6 high 1.95 CPU Vcore Key VD0R low 18 high 21 DC In Key VG0C low 0.7 high 1.15 GPU Vcore Key VG1C low 0.7 high 1.8 GPU FB Key VP0R low 10 high 13.5 PBus Key ALSL low 0 high 0 Ambient Light Key F1Ac low 2000 high 5700 Rightside Key F0Ac low 2160 high 6156 Leftside Key PCPC low 0 high 33 CPU Package Core Key PCPG low 0 high 22 CPU Package GPU Key PCPT low 0 high 55 CPU Package Total Key PSTR low 0 high 0 System Total Key PDTR low 0 high 0 DC In </pre> [[Category:Mac]] 95y0n1d9q3wrwcuwekl1ir5gjpwp4lt SMC flashing 0 1944 6942 6803 2023-09-29T06:14:55Z CBax 996 made efi shells shelfhosted 6942 wikitext text/x-wiki ==Disclaimer== This page will show you how to force flash an [[SMC]] using the EFI. The Mac you want to flash needs to be able to boot into EFI (Boot selection page) in order to flash it. We have not tested to further extent if you can solder any SMC on any board to flash it. So far, this method has been successfully applied to flash a SMC from a 820-3437 donor soldered on a [[820-00165 Boot Up Diagram|820-00165]] and a 820-00165 SMC soldered on a 820-3437. SMC update and MacOS update have not been tested. '''Any further compatibility information is welcome and [[SMC Compatibility|can be contributed here]]'''. Any further test, information, compatibilities or incompatibilities are welcome. <br /> ==Update: Flashing SMC, the easy way== Muerto (thanks to him) went further and developed a tool more suitable and easier to use. ==='''The easy way to flash an SMC is [https://github.com/MuertoGB/SMCFT here.]'''=== For the hardworking ones, follow the tutorial below. ==Requirements== List of required tools to flash your SMC: ===Hardware=== *A working laptop, to find or prepare some software tools *A Mac with an SMC to flash... of course. No soldering is involved here. We will boot the Mac and force flash in EFI *A USB key. It will contain reFIt, to boot on EFI, a shell and tools to flash ===Software=== *A MacOS installer application. In order to extract the SMC update files. We recommend a not too recent installer, which has SMC firmware in a 3 files format (Base, App and Update file). *SMCutil.efi. One that works. A link will be provided, or a way to find it. [https://repo.doslabelectronics.com/system_images/efi/smcutil.efi Download link.] *shell.efi. You need to add an EFI shell to rEFIt. Same, you need the right version that will work on a Mac. [https://repo.doslabelectronics.com/system_images/efi/shell.efi Download link.] *Pacifist: An app to extract .pkg. Other tools exist and terminal command can be used to do this as well. Available on https://www.charlessoft.com/. ==Gathering the stuff we need== ===Installing rEFIt on a bootable drive=== rEFIt will help you boot an EFI on an external drive to launch the shell, SMCutils and other stuffs... if you want to. Download Link: http://refit.sourceforge.net/#download We recommend to install it on a separate volume or external disk is explained on the website: http://refit.sourceforge.net/doc/c1s1_install.html Installation procedure is basically the same as explained above: *Copy the “efi” folder to the root of the volume *Run “enable.sh” inside the “efi/refit” directory. The path in Terminal will be different, for example “/Volumes/MyUSB/efi/refit” if the volume is named “MyUSB”. *If you want, you can use the provided “rEFIt.icns” icon as a volume icon. *You should also install an EFI Shell. A link to a shell.efi file will be provided. You just need to add it to a "tools" folder on the USB key. ===Finding your Board id=== Example here: Mac-7DF32CB3ED6977E5 The BoardID is different from the board number, the A number, the part number... It's an ID as ''Mac-boarIDinHexadecimal''. Here is the list of BoardID for almost all Macs. : https://mrmacintosh.com/list-of-mac-boardid-deviceid-model-identifiers-machine-models/ Note the board ID from the SMC firmware you need, it will be used to extract the right SMC firmware files.<br /> ===Extracting SMC Firmware=== To find SMC rom files, you need to have a bootable dmg file for OSX. Mojave Installation DMG File is used in this example. *Right click and show package contents as in picture. *Get InstallESD.dmg file and copy it to desktop. [[File:content-installer.jpg|frameless]] <br /> *Open the dmg, open packages folder and find FirmwareUpdate.pkg. *Extract pkg file using PACIFIST app. (Link: https://www.charlessoft.com/) [[File:firmwarepkg.jpg|frameless]] <br /> *Open FirmwareUpdate.pkg from pacifist app. *You will find a list of Mac-BoardID folders in scripts/tools/SMCPayloads. Select the 4 SMC related files according to your mac BoardID and extract to desktop [[File:paficist.jpg|frameless]] <br /> ==Prepare USB drive== *Copy the files to USB drive that you have made bootable before and arrange like this: **efi ***refit (where refit installed) ***SMCFlasher (where smcutils and your smc firmware is) ****smcutil.efi ****flasher base file ****flasher update file ****Mac-BoardID.smc ****Mac-BoardID.epm ***tools ****shell.efi <br /> [[File:Efi-flasher-USB-content.jpg|none|thumb|600x600px|Example of the content of the USB key used to force flash the SMC.]] <br /> ==Flashing the SMC== *Boot from USB Drive *Select boot from Shell (or efishell) on the rEFIt boot page [[File:Boot-on-rEFIt.jpg|frameless]] [[File:rEFIt-example.jpg|frameless]] *Look for removable drives the list of drives displayed by efi ("Removable HardDisk"), and identify the Alias: fs2 in this example. *Type “fs2:” to enter the drive. Now the shell act as a regular terminal: "ls", "cd" and autofill with tab will work. [[File:EFI shell.jpg|frameless]] [[File:shell efi.jpg|frameless]] *Confirm its your USB drive and go to SMCFlasher folder *Type smcutil.efi. You now have the liste of commands allowed by smcutil [[File:smcutilefi-shellcommand.jpg|frameless]] *You can now flash each file one by one using the -force argument to force flash without checking the version, -norestart to not reboot (it still reboots sometimes but we don't know why) and using the right argument each time: -LoadApp, -LoadUpdate or -LoadBase : **smcutil.efi -force -norestart -LoadUpdate flasher_update.smc **smcutil.efi -force -norestart -LoadBase flasher_base.smc **smcutil.efi -force -norestart -LoadApp Mac-BoardID.smc [[File:smcutil-flash-example.jpg|frameless]] [[File:SMC Flashing done.jpg|frameless]] *Type exit, reboot your Mac *Enjoy your new SMC file <br /> ==Final remarks== *It could be useful to reset the SMC using a smcutil command, but we don't know how it can affect the flashing. *epm file is not flashed in this tutorial. We don't know what it's used for and if it succeed to flash or if it's useful to be flashed. *We have not tested MacOS update or SMC update after this forced flashing. Feedbacks are welcome. *Some tools are specific and we need to find a place to store and provide them. The article will be updated with download links. *We don't know if we can flash any SMC solder on the wrong board to a compatible SMC. We believe a shell script can be built to do so. *SMCutil.efi is a modified version of SMCflasher.efi that can be found in MacOSinstaller packages. SMCflasher.efi includes both 32bit and 64bit and adds a header in front of it. SMCutil.efi has only 64bit and the header removed, so it can be used in EFI shell. SMCFlasher.efi should be usable with a EFI script right away, but this hasn't been tested here. This is very preliminary. It's a draft with many missing parts, unexplained and no understood stuff. Please, if you know more, feel free to modify, comment, add to make this thing look better. Specials thanks to: *Sajan Gurung for the pictures, the draft of this tutorial and the kick to get the tutorial done at last. *Alexandre "Padawan" Tissot for the initial searches, smcutil findings and the kick to get the flashing s***t done. ==Other resources== *Forum where SMCutil, SMCflasher and SCM disassembly is discussed: https://www.insanelymac.com/forum/topic/299811-readsmc-for-efi-a-tool-to-enter-read-smc-keys-from-efi-shell-on-real-macs/ *Discussion on SMCFlasher.efi in Ghostlyhaks: https://www.ghostlyhaks.com/forum/macbook-pro-retina-2015-2016/2231-smc-flashing-with-smcflasher-efi-or-within-os?start=0 *SMC downgrade tutorial on Apple forum (yes... Apple): https://discussions.apple.com/thread/6838010 *Youtube video of REcon2014 hacking conference of Alex Ionescu "SMC, the place to be, definitely" about hacking into SMC to make it run modified code: https://youtu.be/nSqpinjjgmg <br /> g0p3ecxes1z90jd4g2f0lx9txab9zys Samsung Diode Measurements 0 1414 3062 2020-10-06T15:52:20Z Chrisb 1 Chrisb moved page [[Samsung Diode Measurements]] to [[Samsung Diode Mode Measurements]] 3062 wikitext text/x-wiki #REDIRECT [[Samsung Diode Mode Measurements]] 4wfj7rap52jqe0dx4yd54ywvf3lpsid Samsung Diode Mode Measurements 0 292 6113 6100 2021-09-22T18:27:41Z Alpha Bravo Tech. 538 Uploaded Diode Mode Readings for the Samsung Galaxy S7 Edge SM-G935A 6113 wikitext text/x-wiki == Samsung Galaxy S7 Edge SM-G935A == === PDF of All Pictures: === [[File:Samsung S7 Edge SM-G935A.pdf|none|thumb]] <br /> ==== High Quality Pictures: ==== [[File:SM-G935A FRONT.png|none|thumb]] [[File:SM-G935A BACK.png|none|thumb]] [[File:SM-G935A PIC 1.png|none|thumb]] [[File:SM-G935A PIC 2.png|none|thumb]] [[File:SM-G935A PIC 3.png|none|thumb]] [[File:SM-G935A PIC 4.png|none|thumb]] [[File:SM-G935A PIC 5.png|none|thumb]] [[File:SM-G935A PIC 6.png|none|thumb]] [[File:SM-G935A PIC 7.png|none|thumb]] [[File:SM-G935A PIC 8.png|none|thumb]] [[File:SM-G935A PIC 9.png|none|thumb]] [[File:SM-G935A PIC 10.png|none|thumb]] ==Galaxy S8 SM-[[Galaxy S8 SM-G950U|G950U]]== === '''PDF of All Pictures:''' === [[File:Samsung S8 SM-G950U diode mode readingsV2.pdf|thumb|alt=|none]] ==== '''All Pics in High Quality:''' ==== [[File:SAMSUNG S8 BACK.jpg|thumb|alt=|none]] [[File:SAMSUNG S8 FRONT.jpg|thumb|alt=|none]] [[File:(2)S8 1 PNG.png|alt=|thumb|none]] [[File:S8 2.png|thumb|alt=|none]] [[File:S8 3 PNG.png|thumb|alt=|none]] [[File:S8 4 PNG.png|thumb|alt=|none]] [[File:S8 5 PNG.png|thumb|alt=|none]] [[File:S8 6 PNG.png|thumb|alt=|none]] <br /> [[File:S8 7 PNG.png|thumb|alt=|none]] <br /> ==Galaxy Note 9== Overall View: [[File:Overall View 1 Note 9.jpg|alt=Overall View 1 Note 9|1067x1067px]] Connector 1: [[File:Note 9 FPC 1.png|alt=Note 9 FPC 1|800x800px]] Connector 2: [[File:Note 9 FPC 2.png|alt=Note 9 FPC 2|800x800px]] Connector 3: [[File:Note 9 FPC 3.png|alt=Note 9 FPC 3|800x800px]] Connector 5: [[File:Note 9 FPC 5.png|alt=Note 9 FPC 5|800x800px]] Connector 6: [[File:Note 9 FPC 6.png|alt=Note 9 FPC 6|1102x1102px]] Connector 7: [[File:Note 9 FPC 7.png|alt=Note 9 FPC 7|800x800px]] Connector 8: [[File:Note 9 FPC 8.png|alt=Note 9 FPC 8|800x800px]] <br /> ==Galaxy S9 Plus== Overall View 1: [[File:Overall View 1 Edited.jpg|alt=Overall View 1 Edited|1067x1067px]] Overall View 2: [[File:S9+Overall View 2 Edited.jpg|alt=S9+Overall View 2 Edited|1067x1067px]] OLED: [[File:S9+OLED Edited.jpg|alt=S9+OLED Edited|800x800px]] Iris Scanner: [[File:S9+Iris Scanner Edited.jpg|alt=S9+Iris Scanner Edited|800x800px]] Front Facing Camera: [[File:S9+Front Facing Camera Edited.jpg|alt=S9+Front Facing Camera Edited|800x800px]] Proximity Sensor: [[File:S9+Prox Sensor Edited.jpg|alt=S9+Prox Sensor Edited|800x800px]] Finger Print Scanner: [[File:S9+Finger Print Scanner Edited.jpg|alt=S9+Finger Print Scanner Edited|800x800px]] Rear Camera: [[File:S9+Rear Camera Edited.jpg|alt=S9+Rear Camera Edited|800x800px]] Charging Port: [[File:S9+Charging Port Edited.jpg|alt=S9+Charging Port Edited|800x800px]] <br />Battery: [[File:S9+Battery Edited.jpg|alt=S9+Battery Edited|800x800px]] ==Samsung S10== OLED: [[File:Samsung S10 OLED Edited.jpg|alt=Samsung S10 OLED Edited|800x800px]] Charging Port: [[File:Samsung S10 Charging Port Edited.jpg|alt=Samsung S10 Charging Port Edited|800x800px]] Battery: [[File:Samsung S10 Battery Edited.jpg|alt=Samsung S10 Battery Edited|800x800px]] Front Camera: [[File:Samsung S10 Front Camera.jpg|alt=Samsung S10 Front Camera|800x800px]] Headphone Jack: [[File:Samsung S10 Headphone Jack Edited.jpg|alt=Samsung S10 Headphone Jack Edited|800x800px]] Left Rear Camera: [[File:Samsung S10 Left Rear Camera Edited.jpg|alt=Samsung S10 Left Rear Camera Edited|858x858px]] Right Rear Camera: [[File:Samsung S10 Right Rear Camera Edited.jpg|alt=Samsung S10 Right Rear Camera Edited|1056x1056px]] <br /> ==Samsung S10e== OLED: [[File:Samsung S10e OLED Edited.jpg|alt=Samsung S10e OLED Edited|800x800px]] 12MP Camera: [[File:Samsung S10e 12mp Camera Edited.jpg|alt=Samsung S10e 12mp Camera Edited|800x800px]] 16MP Camera: [[File:Samsung S10e 16MP Camera Edited.jpg|alt=Samsung S10e 16MP Camera Edited|800x800px]] Front Camera: [[File:Samsung S10e Front Camera.jpg|alt=Samsung S10e Front Camera|800x800px]] Headphone Jack: [[File:Samsung S10e Headphone Jack Edited.jpg|alt=Samsung S10e Headphone Jack Edited|800x800px]] Power Button: [[File:Samsung S10e Power Button Edited.jpg|alt=Samsung S10e Power Button Edited|800x800px]] ==Samsung S10+== OLED: [[File:Samsung S10+ OLED Edited.jpg|alt=Samsung S10+ OLED Edited|800x800px]] Front Camera: [[File:Samsung S10+ Front Camera Edited.jpg|alt=Samsung S10+ Front Camera Edited|803x803px]] Headphone Jack: [[File:Samsung S10+ Headphone Jack Edited.jpg|alt=Samsung S10+ Headphone Jack Edited|800x800px]] ==Galaxy Note 10+== Overall View 1: [[File:Note 10+ Overall 1.jpg|alt=Note 10+ Overall 1|800x800px]] Overall View 2: [[File:Note 10+ Overall 2.jpg|alt=Note 10+ Overall 2|800x800px]] Front Camera: [[File:Galaxy Note 10+ Front Camera.jpg|alt=Galaxy Note 10+ Front Camera|800x800px]] S Pen: [[File:Note 10+ S Pen.jpg|alt=Note 10+ S Pen|800x800px]] Wireless Charger: [[File:Note 10+ Wireless Charger.jpg|alt=Note 10+ Wireless Charger|800x800px]] Battery: [[File:Note 10+ Battery.jpg|alt=Note 10+ Battery|800x800px]] OLED: [[File:Galaxy Note 10+ OLED.jpg|alt=Note 10+ OLED|800x800px]] Dock Connector 1: [[File:Galaxy Note 10+ Dock Connector 1.jpg|alt=Galaxy Note 10+ Dock Connector 1|800x800px]] Dock Connector 2: [[File:Galaxy Note 10+ Dock Connector 2.jpg|alt=Galaxy Note 10+ Dock Connector 2|800x800px]] Digitizer: [[File:Galaxy Note 10+ Digitizer Connector.jpg|alt=Galaxy Note 10+ Digitizer Connector|800x800px]] Buttons: [[File:Galaxy Note 10+ Button Connector.jpg|alt=Galaxy Note 10+ Button Connector|800x800px]] Rear Camera 1: [[File:Galaxy Note 10+ Rear Camera 1.jpg|alt=Galaxy Note 10+ Rear Camera 1|800x800px]] Rear Camera 2: [[File:Galaxy Note 10+ Rear Camera 2.jpg|alt=Galaxy Note 10+ Rear Camera 2|800x800px]] Rear Camera 3: [[File:Galaxy Note 10+ Rear Camera 3.jpg|alt=Galaxy Note 10+ Rear Camera 3|800x800px]] ==Samsung S20 Ultra== Overall view: [[File:Samsung S20 Ultra Overall.jpg|alt=Samsung S20 Ultra Overall|1067x1067px]] Overview 2: [[File:Overall View Back.jpg|alt=Overall View Back]] Battery: [[File:Samsung S20 Ultra Battery Edited.jpg|alt=Samsung S20 Ultra Battery Edited|800x800px]] Power Button: [[File:Samsung S20 Ultra Power Button.jpg|alt=Samsung S20 Ultra Power Button|800x800px]] OLED: [[File:Samsung S20 Ultra Edited OLED.jpg|alt=Samsung S20 Ultra Edited OLED|800x800px]] Charging Port 1: [[File:Samsung S20 Ultra Charging Port Edited.jpg|alt=Samsung S20 Ultra Charging Port Edited|1067x1067px]] Charging Port 2: [[File:Samsung S20 Ultra Charging Port 2 Edited.jpg|alt=Samsung S20 Ultra Charging Port 2 Edited|1067x1067px]] Front Camera: [[File:Samsung S20 Ultra Front Camera Edited.jpg|alt=Samsung S20 Ultra Front Camera Edited|800x800px]] Rear Camera 1: [[File:Samsung S20 Ultra Rear Camera Edited.jpg|alt=Samsung S20 Ultra Rear Camera Edited|800x800px]] Rear Camera 2: [[File:Samsung S20 Ultra Rear Camera 2 Edited.jpg|alt=Samsung S20 Ultra Rear Camera 2 Edited|800x800px]] Rear Camera 3: [[File:Samsung S20 Ultra Rear Camera 3 Edited.jpg|alt=Samsung S20 Ultra Rear Camera 3 Edited|800x800px]] Rear Camera 4: [[File:Samsung S20 Ultra Rear Camera 4 Edited.jpg|alt=Samsung S20 Ultra Rear Camera 4 Edited|800x800px]] Wireless Charging: [[File:Samsung S20 Ultra Wireless Edited.jpg|alt=Samsung S20 Ultra Wireless Edited|800x800px]] Side Sensor: [[File:Samsung S20 Ultra Side Sensor Edited.jpg|alt=Samsung S20 Ultra Side Sensor Edited|800x800px]] Sensor 2: [[File:Smasung S20 Ultra Sensor Edited.jpg|alt=Smasung S20 Ultra Sensor Edited|800x800px]] kwlpctzt115ccgmh0jnvn3htllg2tby Schematic Abbreviations 0 1930 5691 5690 2021-03-21T01:16:12Z Chrisb 1 5691 wikitext text/x-wiki ==CODE COMPONENT== *BT : Button *C : Capacitor *CN : Connector *D : Diode *F : Fuse *L : Inductor *PC : Power Capacitor *PD : Power Diode *PL : Power Inductor *PQ : Power Transistor *PR : Power Resistor *PU : Power Integrated Circuit *Q : Transistor *R : Resistor *T : Transformers *U : Integrated Circuit/Bga Chip/Embedded Controller/Bios Ic,Etc *X : Terminal Strips, Terminations, Joins Oscillator *Y : Crystal ==Abbreviations== *AC : Alternating current *ACDRV : AC adapter to system-switch driver output *ACDET/ACIN : AC Adapter Voltage Detector *ACGOOD : Valid adapter detect logic *ACN : AC Adapter current sense amplifier inverting input *ACP : AC Adapter current sense amplifier non-inverting input *ACOP : Input Over-Power Protection *ACOV : Input Overvoltage Protection *ADP+ : Adapter Positive Supply *ADP_ID : Adapter Identity *AGND : Analog Ground *ALWP : Always On Power *B+ : AC or Battery Power Rail For Power Circuit *BATT : Battery *BAT+ : Battery Power Rail For Power Circuit *BAT_DRV : Battery FET Gate Driver *BAT_V : Battery Voltage *BOM : Bill Of Material Management *BT_EN : Bluetooth Enable *BYP : Bypass *CHGEN : Charge Enable Active-Low Logic Input *CIN : Input Capacitor *CLK_EN : Clock Enable *CRT : Cathode Ray Tube *CSIN : Input Current Sense Amplifier Inverting Input *CSIP : Input Current Sense Amplifier Non-Inverting Input *DC : Direct Current *DM :  DIMM Socket Memory Ddr *DOCK : Docking Socket *EC : Embedded Controller *EC_ON : Embedded Controller Enable *EMI : Electromagnetic Interference *EN : Enable *ENTRIP : Enable Terminal *FSEL : Frequency Select Input *GATE : Trigger Gate *GND : Ground *GP : Ground Pin *GPI : General Power Input *GPIO : General Purpose Input Output *HDMI : High-Definition Multimedia Interface *ID : Continuous Drain Current *IDM : Pulsed Drain Current *IIN : Operating Supply Current *IIN(SHDN) : Shutdown Supply Current *IIN(STBY) : Standby Supply Current *IS : Continuous Source Current (Diode Conduction) *IVIN : Battery Supply Current at VIN pin *JP : Jumper Point *KBC : Keyboard Controller *LCDV : LCD Power *LDO : Low-DropOut Regulator *LGATE : Lower-side MOSFET Gate Signal *LPC : Low Pin Count *LVDS : Low-voltage Differential Signaling *MBAT : Main Battery *NB : North Bridge *NC : Not Connected *ODD : Optical Disc Drive *PCI : Peripheral Component Interconnect *PGOOD : Power Good Open-Drain Output *PIR : Product Improved Record *PSI# : Current Indicator Input *PVCC : IC Power Positive Supply *RSMRST# : Resume Reset *RTC : Real Time Clock *SB : South Bridge *SHDN : Shutdown *SYS_SDN : System Shutdown *SPI : Serial Peripheral Interface *TD : Death Time *THRM : Thermal Sensor *TMDS : Transition Minimized Differential Signaling *TP : Test Point *TPAD : Thermal Pad *UVLO : Input Undervoltage Lock Out *V : Power Rail *V+ : Positive Voltage *VADJ : Output Regulation Voltage *VALW : Always On Power *VALWP : VALW Pad *VBAT : Battery Power *VCCP : Chip Power *VCORE : Processor Power Rail *VDD : Control Power Supply *VDDR : Power DDR (VDRAM/VRAM/VMEM) *VDS : Voltage Drain Source *VFB : Feedback Inputs Power *VGS : Voltage Gate Sources *VIN : Input Voltage Range *VIN : Adapter Power Supply *VL : Power Lock *VL : Voltage Across The Load *VL : Power Rail From Linear Regulator *VOT : Volt Out *VRAM : Power Memory *VREF : Power References *VS : Switch Power *VS+ : Support Voltage Positive *VSB : Standby Power Rail *VSS : Signal Ground *VSW : Power Switch *VTT : Memory Termination Voltage *VTERM : Memory Termination Voltage *VUSB : Power USB *VGFX/VGPU : Power Graphic Chip Original source [https://www.badcaps.net/forum/showthread.php?t=58105 Badcaps] 4euv0fm1fkxdqu7fogcbvwv9q87oyez Schematics and Boardviews Availability 0 1810 7738 7707 2025-01-23T05:54:08Z Pedro147 26 Added 820-03285 and 820-03286 boardviews and schematics 7738 wikitext text/x-wiki ✅ Available<br> 🗸 File is available but there is catch, see comment<br> ❌ File is not known to be available, even if you see it listed somewhere (free or paid) it is probably a different one<br> Check [https://logi.wiki/index.php?title=Schematics_and_Boardviews_Availability&action=history page history] for last update date.<br> Check [[Board Number by A Number]] for correspondance between board number and machine model. ==MacBook== ===Main Logic Board=== {| class="wikitable" !Board number!!Schematics!!Boardview!!Comment |- |820-1881||✅||✅|| |- |820-1889||✅||✅|| |- |820-1993||✅||✅|| |- |820-2023||✅||✅|| |- |820-2054||✅||✅|| |- |820-2056||✅||✅|| |- |820-2059||✅||✅|| |- |820-2101||✅||✅|| |- |820-2132||✅||✅|| |- |820-2179||✅||✅|| |- |820-2213||✅||✅|| |- |820-2249||✅||✅|| |- |820-2262||✅||✅|| |- |820-2279||✅||✅|| |- |820-2327||✅||✅|| |- |820-2330||✅||✅|| |- |820-2375||✅||✅|| |- |820-2390||✅||✅|| |- |820-2496||✅||✅|| |- |820-2523||✅||✅|| |- |820-2530||✅||✅|| |- |820-2532||✅||✅|| |- |820-2533||✅||✅|| |- |820-2610||✅||✅|| |- |820-2796||✅||✅|| |- |820-2838||✅||✅|| |- |820-2849||✅||✅|| |- |820-2850||✅||✅|| |- |820-2877||✅||✅|| |- |820-2879||✅||✅|| |- |820-2883||✅||✅|| |- |820-2914||✅||✅|| |- |820-2915||✅||✅|| |- |820-2936||✅||✅|| |- |820-3023||✅||✅|| |- |820-3024||✅||✅|| |- |820-3115||✅||✅|| |- |820-3190||✅||✅|| |- |820-3208||✅||✅|| |- |820-3209||✅||✅|| |- |820-3330||✅||✅|| |- |820-3332||✅||✅|| |- |820-3435||✅||✅|| |- |820-3437||✅||✅|| |- |820-3462||✅||✅|| |- |820-3476||✅||✅||Warning: most files distributed as 820-3476 are in fact 820-3536 (4GB RAM variant, 8 RAM ICs instead of 16). Correct boardview is available in XinZhiZao, otherwise use 820-3536. |- |820-3536||✅||✅|| |- |820-3662||✅||✅|| |- |820-3787||✅||✅|| |- |820-4924||✅||✅|| |- |820-00045||✅||✅|| |- |820-00138||🗸||✅||Warning: most boardviews distributed as 820-00138 are in fact 820-3662. Correct boardview is available in XinZhiZao, otherwise use 820-00163 (touchpad, SPI ROM…) and 820-3662 boardviews depending on the area. Touchpad connector has wrong pinout in schematics, refer to 820-00163 again. |- |820-00163||✅||✅|| |- |820-00164||✅||✅|| |- |820-00165||✅||✅|| |- |820-00239||✅||✅|| |- |820-00244||✅||✅|| |- |820-00281||✅||✅|| |- |820-00426||🗸||❌||Use 820-00163, only noticeable difference is DC-in MOSFETs (dual on 820-00163, 2× singles on 820-00426). Available schematics does not have the correct part either. |- |820-00687|| || ||Authenticity unconfirmed, very similar to 820-00244. |- |820-00840||❌||✅||Use 820-00875 which does not have the PI3USB32224BXEAE near USB-C ports and different populated parts for SSD_BOOT_L/SSD_PWR_EN_L (see [[A1708 SSD]]). Correct boardview is available in XinZhiZao. |- |820-00850||✅||✅|| |- |820-00875||✅||✅|| |- |820-00923||✅||❌||Use 820-00239, may have differences around CD3215: around U3100, check the 820-00850 schematics to find connections to R3169 (not appearing on schematics). |- |820-00928||✅||❌||Use 820-00281 some differences around CD3215 at least. |- |820-01041||✅||✅|| |- |820-01326 |❌ |❌ |Use 820-01041 boardview and schematic, 820-01326 unavailable, only difference is Vega GPU as far as i know |- |820-01521||✅||✅||Power sequence diagram also available with board number 820-01055. |- |820-01598||✅||✅||Power sequence diagram also available. |- |820-01700||✅||✅||Original boardview in brd format does not have the correct board outline. A modified boardview in bvr format does. |- |820-01814||✅|| ||Authenticity of boardview unconfirmed (file is identical to 820-01041). |- |820-01827||❌||❌||Use 820-01041, GPU area will be different (no VRAM on 820-01827). |- |820-01949||✅||✅||As of 19 Sep 2021 bvr and sch available on Badcaps forum. |- |820-01958||✅||✅||As of 19 Sep 2021 bvr and sch available on Badcaps forum. |- |820-01987||✅||✅||As of 19 Sep 2021 bvr and sch available on Badcaps forum. |- |820-02016||✅||✅||XinZhiZao may have boardview.As of 18 Sep 2021 bvr and sch available on Badcaps forum. in schematics and BV RP603 pin 2 refer to PP3V3_SW_LCD, but it's wrong it's actually GND same as RP602 pin 2 |- |820-02020||✅||✅||Only annotated boardview on XinZhiZao. As of 2 Sep 2021 bvr and sch available on Badcaps forum. |- |820-02098||✅||✅||14" M1 Pro as of 16 Sep 2022 bvr and sch available on Badcaps forum. |- |820-02100||✅||✅||16" M1 Pro Schematics and bvr files available on Badcaps 29 Sep 2022 |- |820-02382||✅||✅||Schematics and bvr files available on Badcaps 29 Sep 2022 |- |820-02443||✅||✅||14" M1 Max as of 16 Sep 2022 bvr and sch available on Badcaps forum. |- |820-02773||✅||✅||XinZhiZao may have boardview / bvr and sch available on Badcaps 25 May 2023 |- |820-02841||✅||✅||brdview and sch on Badcaps as of 22 Oct 2024. Search 820-02841 A2779 schematics and boardview on schematic request page |- |820-02862 |✅||❌||vinafix says they have sch |- |820-02536||✅||✅||brdview and sch on Badcaps. Search 820-02536 boardview and schematic on schematic request page | |- |820-02655 |✅ |✅ |14" M2 A2779 MBP search 820-02655 boardview (BVR) and schematic (PDF)on Badcaps forum as of 9 Sep 2024 | |- |820-03285 |✅ |✅ |A3113 13" Macbook Air M3 - Search "820-03285 and 820-03286 boardviews and schematics" on BadCaps on schematic request page for these | |- |820-03286 |✅ |✅ |A3114 15" Macbook Air M3 - Search "820-03285 and 820-03286 boardviews and schematics" on BadCaps on schematic request page for these | |} ===I/O Board=== {| class="wikitable" !Board number!!Schematics!!Boardview!!Comment |- |820-1699||✅||✅||A1150 |- |820-1970||✅||✅||A1151 |- |820-2055||✅||✅||A1211 |- |820-2060||✅||✅||A1212 |- |820-2102||✅||✅||A1226 |- |820-2140||✅||❌||A1229 |- |820-2273||✅||✅||A1260 |- |820-2274||✅||✅||A1261 |- |820-2827||❌||❌||A1370 2010 |- |820-2869||✅||✅||A1369 2010 |- |820-3053||✅||✅||A1370 2011 |- |820-3057||✅||❌||A1369 2011 |- |820-3071||✅||✅||A1398 2012 |- |820-3213||✅||✅||A1465 2012 |- |820-3214||❌||❌||A1466 2012 |- |820-3453||❌||❌||A1465 2013/2015 |- |820-3455||❌||❌||A1466 2013/2015 |- |820-3539||❌||✅||A1502 2013 |- |820-3547||❌||✅||A1398 2013 |- |820-5482||❌||❌||A1398 2015 |- |820-00012||❌||❌||A1502 2015 |- |820-01124||✅||✅||A1932 2018/2019 |} ==iMac== {| class="wikitable" !Board number!!Schematics!!Boardview!!Comment |- |820-1888||✅||✅|| |- |820-1919||✅||✅|| |- |820-1960||✅||✅|| |- |820-1984||✅||✅|| |- |820-2031||✅||✅|| |- |820-2052||✅||✅|| |- |820-2090||✅||✅|| |- |820-2110||✅||✅|| |- |820-2143||✅||✅|| |- |820-2223||✅||✅|| |- |820-2301||✅||✅|| |- |820-2347||✅||✅|| |- |820-2491||✅||✅|| |- |820-2494||✅||✅|| |- |820-2507||✅||✅|| |- |820-2542||❌||❌||Use 820-2347. |- |820-2641||✅||✅|| |- |820-2733||✅||✅|| |- |820-2784||✅||✅|| |- |820-2828||✅||✅|| |- |820-2901||✅||✅|| |- |820-3126||✅||✅|| |- |820-3172||✅||❌||Some sections similar to 820-3302. |- |820-3298||✅||✅|| |- |820-3299||✅||✅|| |- |820-3302||✅||✅|| |- |820-3478||✅||✅|| |- |820-3481||❌||❌||Use 820-3478 (1GB/4 chips VRAM vs. 2GB/8 chips VRAM for 820-3481), or 820-3299 for GPU area. |- |820-3482||✅||✅|| |- |820-3588||✅||✅|| |- |820-4652||✅||✅|| |- |820-4668||✅||✅|| |- |820-5029||✅||❌||Use 820-4652 (M290 vs. M295X on 820-5029). Minor differences in GPU area. |- |820-00034||✅||✅|| |- |820-00134||✅||✅|| |- |820-00291||✅||✅|| |- |820-00292||✅||❌||Use 820-00134. |- |820-00430||✅||❌||Use 820-00034. |- |820-00431||✅||✅||<s>Some sections near I/O ports vaguely similar with 820-3588.</s> |- |820-00597||✅||✅|| |- |820-00609||✅||✅||XinZhiZao have boardview. Some sections similar to 820-00134. |- |820-00629||✅||❌||Some sections vaguely similar with 820-00034. |- |820-00967||✅||❌|| |- |820-01061||❌||❌||Use 820-00597. |- |820-01069||❌||❌||Some sections vaguely similar with 820-00034. |- |820-01134||❌||❌||Use 820-00609. |- |820-01236||❌||❌||Available in XZZ board view database |- |820-01823 |❌ |❌ |Available in XZZ board view database |- |820-01799 |❌ |❌ |Available in XZZ board view database |- |820-01237||❌||❌|| |- |820-01779||✅||✅|| |- |820-01823||✅||✅|| |} ==Mac mini== {| class="wikitable" !Board number!!Schematics!!Boardview!!Comment |- |820-1900||❌||❌|| |- |820-2366||❌||❌|| |- |820-2577||❌||❌|| |- |820-2993||✅||❌|| |- |820-3017||✅||❌|| |- |820-3059||✅||❌|| |- |820-3227||✅||❌|| |- |820-3228||✅||❌|| |- |820-5509||✅||❌|| |- |820-00939||✅||✅||No real boardview, component placement diagram only. Correct boardview available in XinZhiZao. |- |820-02091||❌||❌|| |} ==Mac Pro== No Mac Pro schematics or boardviews are known to be available. q1n6s8ecg0ng2zfkfl3mkh32u6nhsjo Schematics and boardviews availability 0 1814 5331 2020-12-13T03:52:57Z Chrisb 1 Chrisb moved page [[Schematics and boardviews availability]] to [[Schematics and Boardviews Availability]] 5331 wikitext text/x-wiki #REDIRECT [[Schematics and Boardviews Availability]] e2xqb4ni06waejwhsv3rvflzeiotdmu Screen Compatibility 0 271 1691 709 2020-09-13T12:59:03Z Chrisb 1 Changed redirect target from [[LCD Screen Compatibility]] to [[MacBook LCD Screen Compatibility]] 1691 wikitext text/x-wiki #REDIRECT [[MacBook LCD Screen Compatibility]] dn90i743yqffztf868sifg0qecsggvc Serato 0 2100 6296 6294 2021-12-08T19:09:31Z Chrisb 1 6296 wikitext text/x-wiki [https://support.serato.com/hc/en-us/articles/115003575747-KNOWN-ISSUE-Toggling-WiFi-during-playback-can-result-in-an-audio-dropout-followed-by-large-latency Turning off wifi] can fix lag issues [https://support.serato.com/hc/en-us/articles/204865694 Compatibility chart] for macOS and Serato cvb19jw4s11j5guocxfrpd2jk6z0b4o Shutdown causes 0 810 6889 6540 2023-08-09T17:52:45Z Pingastron 998 Fix Bug 6889 wikitext text/x-wiki '''Shutdown Causes in Mac OS''' If you are having shutdown problems, use this command in the main user to find out the error codes, you can change the time to 1h, 24h, 72h or 2w or 1M or even " 1Y " the codes are generated in the terminal app. after that, collect the generated code and check the main errors in the table below, after the system crashes or recovers from a panicfull: <syntaxhighlight lang="bash"> log show --predicate 'eventMessage contains "Previous shutdown cause"' --last 24h </syntaxhighlight>This command is used if the mac does not recover after going to sleep or before going to sleep. Works for other occasions too ... you can also try this other command:<syntaxhighlight lang="bash"> log show --predicate 'eventMessage contains "Previous sleep cause"' --last 24h </syntaxhighlight>Error codes:<br /> {| class="wikitable" |'''Code''' |'''Description''' |'''Notes and Possible Solutions''' |- |7 |thread cpu failure |If this occurs during boot, try Safe Mode by holding on boot to limit what opens during boot. If while using the app, see if there is an update for the app by the developer, and leave a comment below with the app name and your Mac model.⇧shift |- |5 |Correct shut down |Is it a 'clean' shutdown or hibernation by the user |- |3 |Hard shut down |Iresulting from a hard reset or shutdown, check the power button and make sure it is not stuck, etc. |- |0 |Power disconnected |AC power supply failure, check power supplies: cables, plug, magsafe. On a MacBook, this could be a battery issue, or battery controller (logic board). Try an SMC reset first or a battery replacement! |- |<nowiki>-3</nowiki> |Multiple temperature sensors exceeded the defined limit. |Run Apple Hardware Test or PC Doctor. Check fans/airflow/thermal paste. |- | -14 |Electricity spike/surge.<br /> |On Mac Pro, this can indicate an electricity issue to the built-in power supply, or an issue with the power supply itself |- | -20 |Shutdown was initiated by BridgeOS T2. |The T2 chip has initiated a shutdown. |- |<nowiki>-60</nowiki> |Bad master directory block (badMDBErr). |corrupted system or storage, Do not continue using the system, or you may experience data loss: Backup data to Time Machine, completely erase the disk and reinstall macOS system.. |- |<nowiki>-61</nowiki> |Watchdog timer detected unresponsive application, shutting down the system. <br /> |Probably an application issue. Retry in Safe Mode, investigate stuck applications, investigate startup programs. Run MalwareBytes scan. |- | -63 | |it could be the USB controller or another T2 related USB hardware issue. Check kernel logs to confirm |- |<nowiki>-62</nowiki> |Watchdog timer detected unresponsive application, restarting the system. |Same as -61, except the machine will restart automatically instead of shutting down. |- |<nowiki>-65</nowiki> | |Potentially linked to OSX issue. Try reinstalling macOSX from a clean install on an external drive. |- |<nowiki>-71</nowiki> |SO-DIMM Memory temperature exceeds limits. |Try to reset the smc, if not, check the memory if possible replace it to see if the problem persists. If so, check the logic board for oxidation or dust. |- |<nowiki>-74</nowiki> |Battery temperature exceeds limits. |Perform SMC Reset. Possible need for battery replacement? |- |<nowiki>-75</nowiki> |Communication issue with AC adapter. |Use an official Apple power adapter. If on a USB-C model, try charging with the ports on the opposite side (to test port failure on one side). |- |<nowiki>-78</nowiki> |Incorrect current value coming from AC adapter. |Use an official Apple power adapter. Check building power/current at wall? |- |<nowiki>-79</nowiki> |Incorrect current value coming from battery. |Check the battery connection. Check battery cycles (may simply need replacement). |- |<nowiki>-86</nowiki> |Proximity temperature exceeds limits. |Check fans/airflow/thermal contact and thermal paste. |- |<nowiki>-95</nowiki> |CPU temperature exceeds limits. |Check fans/airflow. Check thermal paste between heatsink. Reset SMC. |- |<nowiki>-100</nowiki> |Power supply temperature exceeds limits. |Try resetting the smc, if that doesn't work, check the fans/airflow on the iMac. Check the magsafe on the MacBook for dirty, oxidized or burnt and remove MagSafe 1 to 2 or similar if in use. |- | -102 |overvoltage |Safety shutdown related to AC or Battery overvoltage protection |- |<nowiki>-103</nowiki> |Battery cell under voltage detected. |Replace the battery. |- |<nowiki>-104</nowiki> | |Possible battery issue? Try a complete charge cycle, or Apple Diagnostics before replacing. |- |<nowiki>-108</nowiki> | |Probably memory related? Could be running out of RAM (and Paging fails). Can occur during sleep. |- |<nowiki>-112</nowiki> | |Probably memory related? If on 2012-2013 15” MBP, probably GPU related. Usually occurs alongside -128. |- |<nowiki>-127</nowiki> |PMU forced shutdown. |Possibly fine if you performed a hard shutdown? If not, check power button (make sure it isn’t stuck). Otherwise, could be a logic board issue. |- |<nowiki>-128</nowiki> | |possibly the battery is at the end of its life, but it can also occur when the SMC initiates an automatic reboot after a kernel panic. occurs similar to -112. |} [https://www.ifixit.com/Document/QnLHENMgvZ6mD6D1/Shutdown-Causes.pdf (via ifixit] <references group="https://georgegarside.com/blog/macos/shutdown-causes/" />https://georgegarside.com/blog/macos/shutdown-causes/ <small>''<sub>Almost every day I use this page to be able to diagnose my services, thanks to everyone who contributed to this site. Ad Victoriam!</sub>''</small> ''<small><sub>by Pingas</sub></small>'' [[Category:Mac]] [[Category:MacBook]] [[Category:Troubleshooting Guide]] 6tr9bgjjdfbkdsfw7vksqptooee1xeb Single user mode 0 58 6808 6420 2023-04-05T16:54:52Z AMK9000 627 added Catalina to the header of the split volumes instructions 6808 wikitext text/x-wiki Booting into single user mode will allow you to run terminal commands with full access to the file system. After running your commands simply type in reboot. NOTE: before having write access you will need mount the root volume as read/write *mount -uw / ==Create a new user in Single User Mode (This creates a new Administrator Account)== You can create a new administrator account by restarting the Setup Assistant: #Boot into Single User Mode: Start/restart your Mac. As soon as you hear the startup tone, press and hold <kbd>⌘</kbd> + <kbd>S</kbd> until you see a black screen with white lettering. (If you end up back on the login screen after a flash of the black screen with white lettering, enter your password and it will return to the black screen.) #Mount the drive by typing <code>/sbin/mount -uw /</code> then <kbd>↩ enter</kbd>. #Remove the Apple Setup Done file by typing <code>rm /var/db/.AppleSetupDone</code> then <kbd>↩ enter</kbd>. #Reboot by typing <code>reboot</code> then <kbd>↩ enter</kbd>. #Complete the setup process, creating a new admin account. With macOS Catalina, the APFS volume scheme is a little different. Change step 2 to <code>/sbin/mount -uw /System/Volumes/Data</code> . Continue to step 3. <br /> ==Creating a new user with macOS Catalina, Big Sur and Monterey using Terminal in recovery mode.== It appears that with Big Sur, you loose Admin privileges in single user mode. So in order to delete the Apple Setup Done file, we now have to boot into Recovery mode first and use Terminal to carry out our command. Very similar to the above method of removing the file .AppleSetupDone, we need to locate the db folder in the Macintosh HD Data partition. With macOS Big Sur and Monterey, the db folder has now been relocated in an additional "private" folder. #First, Boot into Recovery Mode with CMD+R #Access Disk Utility and mount the Data volume. Should be called Macintosh HD - Data #Close Disk Utility and open Terminal. #From terminal enter this the new command. <code>rm /Volumes/Macintosh\ HD\ -\ Data/private/var/db/.AppleSetupDone</code> then enter. #Reboot by typing <code>reboot</code> then enter #Complete the setup process, creating a new admin account. More information on this method can be found here. https://discussions.apple.com/docs/DOC-250002676 <br /> ==Delete test account in Single User Mode (This removes any test acct and creates a new Admin acct)== #<kbd>⌘</kbd>+<kbd>S</kbd> #<code>/sbin/mount -uw /</code> #<code>cd /var/db/dslocal/nodes/Default/users/</code> #<code>rm test.plist</code> #<code>rm -rf /Users/test</code> #<code>rm /var/db/.AppleSetupDone</code> #<code>reboot</code> With macOS Catalina, the APFS volume scheme is a little different. Change step 2 to <code>/sbin/mount -uw /System/Volumes/Data</code> . Continue to step 3. [[Category:Mac]] p4q4dehdlsefijx7ugiz04vqvwysg9w Software Sensor Readings 0 698 5978 5977 2021-08-04T14:57:20Z ProMoe 502 /* Macbook Pro Retina 13" 2015 (820-4924) */ 5978 wikitext text/x-wiki page needs user contributions. If you have one of these machines in fully-working condition, please consider adding your values ==Macbook Air 13" 2015-2017 (820-00165)== [[File:820-00165_2015_IStat_menu.png|x750px]] [[File:820-00165_2015_HWmonitor.png|x750px]] ==Macbook Pro Retina 13" 2015 (820-4924)== 13", 2015, 2.7 i5, 8GB, 128GB Battery cycle 1026 MacOS 10.15.7<br /> [[File:Screen Shot 2021-08-04 at 4.57.13 PM.png|x750px|alt=]] [[File:Screen_Shot_2021-08-04_at_5.40.47_PM.png|x750px]] HWSensors version: 6.26.1440 Stats version: 2.6.3 ==Macbook Pro Retina 15" 2015 iGPU (820-00138)== to be added ==Macbook Pro Retina 15" 2015 dGPU (820-00163/820-00426)== [[File:2015 A1398 gDPU HWmonitor.png|x750px]] '''Note: Do know, with nothing but external monitor connected, and usb or ssd testing operating system, the heatpipe air sensor readings will be 128C. It is most likely not an actual sensor issue. Verify with good trackpad connector, and or trackpad.''' <br /> fs516063i581udtldi52tpqu1ldd7ae Soldering Stations 0 1742 5168 5147 2020-10-29T00:18:51Z Chrisb 1 Chrisb moved page [[soldering stations]] to [[Soldering Stations]] without leaving a redirect 5147 wikitext text/x-wiki -Recommended stations at different price points and use cases -hot tweezers -micropencil -tips and tips n8feq96q905fomt1ocjqz61j66t6gtc Start Up Manager 0 1433 3166 3165 2020-10-10T22:21:05Z QuiveryNut 206 Added hyperlinks 3166 wikitext text/x-wiki Key Combination: Hold '''Option''' on start Start Up Manager allows you to boot from an external device, whether that be a USB Flash Drive, External Hard Drive, or with more recent machines over the Network via [[Netboot]]. If your desired disk isn't showing up, newer machines don't show devices that use [[Option ROM]] Firmware until you load their firmware. To do so, press '''Option + Shift + Command + Period''' while in startup manager. If a firmware password is in use, the ability to load [[Option ROM]] Firmware devices is disabled. ptoq70mnc7ktovswsw041awv5r7mfmi Startup Keys 0 55 5420 3162 2020-12-25T01:25:27Z Joesipaq 20 formatting 5420 wikitext text/x-wiki ==Modern (Intel) Macs== NOTE: Macs with a firmware password will not allow booting from a different volume without password. They will not PRAM. ===<u>Recovery:</u>=== *Command + R: Start up from built in [[Recovery Mode|recovery mode]]. Macs upgraded to macOS 10.12.4 or later: *Option + Command + R: Start up from latest [[Internet Recovery|internet recovery]] compatible with your Mac. *Shift + Option + Command + R: Start up from [[Internet Recovery|internet recovery]] closest to original macOS that came with your Mac. Macs not upgraded to macOS 10.12.4 or later: *Option + Command + R: Start up from internet recovery closest to original macOS that came with your Mac. ===<u>Resets:</u>=== ====PRAM Reset:==== *Option + Command + P + R: Reset [[NVRAM]]/[[PRAM]]. This will reset screen brightness, volume, default boot drive to first available storage device (usually internal HDD/SSD), Bluetooth/WiFi settings, Find My [Mac] token, display resolution, and Gpu selection. ====SMC Reset:==== *Left Control + Left Option + Right Shift + Power (7-45 seconds) - For Notebooks with T2 Chip *Left Shift + Left Control + Left Option + Power -For Notebooks with non-removable battery and no T2 *All others - Discharge machine ===<u>Diagnostic:</u>=== *Option: Use the [[Start Up Manager]]. Newer Macs allow WiFi booting and selection of [[NetBoot]] volumes from this screen. *Shift: Start up in [[safe mode]]. *D: Start up the build in [[Apple Hardware Test (AHT) and Apple Diagnostics (AD) Codes|Apple Hardware Test (AHT)]]. *Option + D: Start up the internet [[Apple Hardware Test (AHT) and Apple Diagnostics (AD) Codes|Apple Hardware Test (AHT)]]. *N: Start up from the last or default [[NetBoot]] volume. *Option + N: Start up from the default [[NetBoot]] volume. *Command + S: Start up in [[Single user mode|single user mode]]. *T: Start up in [[Target Disk Mode|target disk mode]]. *Command + V: Start up in [[Verbose Mode|verbose mode]]. *Eject, F12, or pointer button: Eject removable devices. *C: Boot from optical drive. [[Category:Mac]] 27q0765q6kh2ylp72xutgvkageuwvaj Steam Deck 0 2192 6628 2022-09-19T14:10:38Z Kroman 522 added Steam Deck page, and image screenshot of diode readings I took with three different multimeters. 6628 wikitext text/x-wiki '''<big>Steam Deck 512GB USB-C Charge Port Diode Readings</big>''' [[File:Steam Deck 512GB Diode Readings.png|thumb|alt=|left|Steam Deck 512GB Diode Readings]] <br /> [[Category:Game Consoles]] hq64eqhfd4oke8nifb09dffohi48z2o Stencils 0 1745 5306 5235 2020-12-06T18:44:04Z Chrisb 1 5306 wikitext text/x-wiki iPhone Stencils [[MacBook Stencils]] <br /> objhgx9gx3yumsjr8srkg75xxc44ob2 Stuck System Upgrades 0 740 1568 2020-08-28T17:14:10Z Chrisb 1 Created page with "If you encounter a Mac that is stuck on the loading screen * Check the disk first with [[DriveDX]]. * Check to see if the storage and [[hard drive cable]] are good. The impo..." 1568 wikitext text/x-wiki If you encounter a Mac that is stuck on the loading screen * Check the disk first with [[DriveDX]]. * Check to see if the storage and [[hard drive cable]] are good. The important [[SMART]] stats to look at are [[sector errors]]<nowiki/>and [[CRC errors]]. * Use [[Disk Utility]] to run first aid. If you get anything other than OK and "Operation Successful" there is an issue that needs to be repaired before moving on * Hold the Shift key to boot to [[safe mode]]. Type in the password. Reboot when done jasnjskmn4ga47rtiyhxx3ihu2o7x2i T1 MacBook WiFi IC Replacement 0 1884 5558 5554 2021-02-08T21:59:43Z Chrisb 1 5558 wikitext text/x-wiki In the event a WiFi IC is internally shorted on a MacBook Pro with a T1 processor (2015-2017), you must replace the WiFi IC as well as the WiFi ROM and Bluetooth ROM from a matching donor board. The WiFi IC U3700, WiFi ROM U3780, and Bluetooth ROM U3770 are paired together and all 3 chips must be transferred together in order to restore WiFi Functionality. Below I have provided images from an 820-00840-A Logic board that had a short on PP3V3_s5 inside of the U3700 WiFi IC. [[File:WiFi Replacement.jpg|thumb|When Replacing U3700, U3770 and U3780 must be transferred as well.]] <br /> [[File:WiFi Error.jpg|thumb|Error in System Information if ROM chips are NOT transferred.]] If you ONLY migrate the Wifi IC U3700, the MacBook will acknowledged the presence of the WiFi IC, however, WiFi will NOT work and report NULL under System Information. Replacement WiFI IC has to come from matching donor board, similar to SMC Replacements on older MacBooks. Do not use an iPad Air WiFi IC as it does not have the firmware provided by the WiFI ROM to properly function. In theory, you may be able to dump the firmware of a donor WiFi ROM and Bluetooth ROM to the patient ROMs. However you still have to transfer the WiFi IC from the donor board where you would be getting the ROM dumps from, so you might as well just transfer the ROM chips instead. 65e0yucwe3lqdzv6uvpysyjmfre23h3 T2 Chip Compatibility 0 2213 6745 2023-02-14T03:51:28Z Alan.l 19 Created page with "T2 Chip with 1GB T2 RAM Can Support for logic board with 128GB , 256GB , 500GB of Storage T2 Chip with 2GB T2 RAM Can Support for logic board with 128GB , 256GB , 500GB , 1T..." 6745 wikitext text/x-wiki T2 Chip with 1GB T2 RAM Can Support for logic board with 128GB , 256GB , 500GB of Storage T2 Chip with 2GB T2 RAM Can Support for logic board with 128GB , 256GB , 500GB , 1TB , 2TB , 4TB , 8TB of Storage aooesphzn09stgxvswtp8bvq2y6vjbi T2 Diagnostics and repair 0 2242 7603 7601 2024-08-12T02:57:42Z Muerto 527 Add more information. 7603 wikitext text/x-wiki [[File:DALL-E T2.png|thumb]] === T2 General information === T2 serves the purpose of SIO/EC, Camera, ALS, Touch ID, Audio, DFR (Touch Bar), SSD, Encryption, and ESPI Controller. It also controls all temp sensors, peripherals (keyboard/touchpad), and CD3215/CD3217 PD communication. T2 starts iBoot from SoC ROM SPI Flash chip, which initializes its SMC instructions to proceed with the power sequence. Once initialized, it turns on the PP3V3_G3H power supply and NAND power to proceed with BridgeOS firmware, which is stored on the SSD drive. Once booted, it initializes the Intel power sequence and feeds Intel EFI via the eSPI interface to PCH. Serial number and battery charging statistics, as well as "NVRAM" configuration, are also stored in this SPI Flash. There are two types of T2 with two types of DDR chips each. T2 does not need DDR to boot iBoot and will be responsive in DFU. Most devices have a "slim" version of the chip with the same size of memory, and the T2 chip itself. 2018 and 2019 MacBook Pro 2TB models have larger T2 and T2 PMIC (Calpe chips). Known types of RAM + APL number: * APL1027 (T2 itself) * 339S00467 - 2GB * 339S00533 - 1GB Known Ram codes(apl code does not match one in BOM table, so there might be other variants): - H9HKNNN8KUMUVR - 1GB Hynix Chip. - D9LVN - Micron 1GB - H9HKNNNBRUMUVR - Hynix 2GB === Power System(CALPE) === T2 is powered by an Apple proprietary power IC named Calpe. This IC serves as the power supply for T2, PCH, and even SSD on 13" models with 2 SSD chips populated. This chip needs PP3V3_G3H_RTC as its first power input. Like any SIO, it has a few internal LDO supplies and an external clock generator. There is also a secondary input that often gets corroded with high humidity. HI_DRV is more of a voltage sensor (it takes power directly through a voltage divider from PPBUS). 3V3_G3H_RTC to 3V3_G3H switch happens once iBoot is loaded. VDDMAIN_EN turns on 3V3_G3H/5V_G3S power supply. There are 3 Enable inputs, like in many such power controllers, which are used depending on the particular board design. Markings in schematics indicate that on desktops there might be a different enable sequence.[[File:Calpe LDO and Bypass.png|none|thumb|1153x1153px|As you may see 3V3_G3H_RTC enters in the left side. per default internal MosFET is turned on, which sends 3V3_G3H_RTC to 3V3_G3H_RTC_SOCPMU(3V3_G3H alias). Once T2 starts communicating with Calpe, it issues PMU_VDDMAIN_EN to 3/5v supply and disables bypass. ]] If clicking the trackpad produces haptic feedback, it indicates that the 5V_G3S supply is functional, allowing you to shortcut diagnostics for this part. Similarly, a power consumption of 0.01A suggests a fault either in the iBoot phase or in the early power supplies. for more detailed [[:File:820-01055 Power Sequence.pdf|power sequence, refer to a big diagram]]. === iBoot / BridgeOS DFU mode, revive/restore, SEP ROM === DFU is a firmware flash mode that keeps the machine completely off. In this mode T2 can boot externally from ramdisk provided via usb cable. It can be triggered either by keyboard combination (most unreliable), jumper (1.8V jumped to FORCE_DFU line on power-up), or cleaning SoC ROM (requires serial number injection after restore). If the SSD is replaced or there's corruption in iBoot/BridgeOS, restore may be a good diagnostic step. If during restore the device reaches the S0 step with full PCH/CPU power and fan spin, it's mostly safe to say that the T2 part is fine. In some cases, SSD corruption may cause the device to power on only once and then revert to its original state. SEP ROM is a separate chip near the T2 that contains SEP(Secure Enclave Processor) firmware. You can safely take this ROM from donor board if corruption suspected. Its corruption can cause DFU error 9 (failed to create/find/initialize BridgeOS partition). refer to the [[DFU Mode Restore (Macs)]] page for more detailed information === CD3215/17 PD === corrupted iBoot and stuck T2 might cause PD malfunction. However it is important to mention that 5v-20v switch does not need T2 on board to happen on some boards. This will look like super-fast switching, without 2-3 seconds of 5V 0.2A phase. So if T2 is present but not booted, it will proactively prevent 20V switch [[CD3215 Bootup Sequence]] [[CD3217 and T2 Power on Sequence]] === Data recovery possibility using AST2 (AASP only) === if you find competent and reliable AASP provider, they might help you to extract data from the device. There is a tool called "Data Transfer toolkit" which switches T2 into deeper target disk mode. In this mode SSD will be mounted as a normal target disk using minimal usb 2.0 interface and intel part is not turned on. AASP data toolkit will byteclone whole drive to the external drive. The tool is configured the way it will encrypt the drive with device's SN. The process requires AST2 access. AASP tech opens a ticket in Atlas(?) and after it is approved he is able to download utility. Most likely it loads some custom signed iboot image to T2 so there is close to zero chance it will be available any time soon. === Transferring T2 to another board === if you need to move T2 to another board, you need to check if DDR size matches the SSD size of the recipient. You also need to move SoC Rom or you will get problem with activation / there will be error -3400F on loading recovery(if target SoCRom is clean) === Soldering === T2 is a sandwich chip. It is quite important to remove it in a way that the RAM layer won't be separated from T2 itself. To keep it from separating, you can put some UV glue on the edge before removing the chip. Use a preheater (board to 130-150C) and a big nozzle to keep the temperature more or less even. There are a few jigs (Amaoe / SoFix) as well as separate stencils. The most consistent result I got was with an Amaoe jig + 0.25 mm PMTC solder balls. If you have to reball RAM, it might be a good idea to put 213C or even 260C solder paste on the RAM layer, so when you solder T2 with RAM on it, it won't even try to melt and separate. It is normal that after soldering, DDR corners might lift a little bit. Unless you see actual solder ball separation/blob, there is nothing yet to worry about. Check for DDR power supply short if corners look suspicious before reballing the T2. Reballing DDR is somewhat difficult if you have a lack of solder on the T2 side. You can fill holes with soldering paste, heat it up, then repeat until you have a consistent size of balls. However, in most cases, you will have to cut plastic support around balls to form a proper pattern. [[File:T2 Ram balls.png|none|thumb|T2 DDR Ball support]] [[File:balls cut.png|none|thumb|Plastic frame cut on iphone CPU (Photo by A.Lisochenko, logi.wiki community)]] Pinout chart if you got ram reballing(Credits to leshuq) and some pins are ripped/damaged. [[File:t2ram.png|508x508px|Diagram]] T2 Footprint pattern in very prone to short circuit. there is a checkmate pattern in the middle between ground and DDR power supply. Do not move the chip to sides to make it settle, but rather gently tap on top of it with tweezers. Once chip is cooled down, measure resistances: PPVDDCPU_AWAKE 10-15 Ohm PP0V82_SLPDDR 30-40 Ohm PPVDDCPUSRAM_AWAKE 100-120 Ohm PP1V1_SLPS2R 1-2 kOhm PP0V9_SLPDDR 40 Ohm PP1V8_SLPS2R 4 kOhm == T2 SoCROM Programming == The T2 SoCROM is a 1.8v 8-USON (or USON8) 4x3mm package. This is different from the Thunderbolt ROM SPIROM, which uses a 8-USON (or USON8) 2x3mm package. Tools like the T203 are essentially a customized CH341a programmer that only supports 1.8V on both VCC and the data lines, with a USON8 4x3mm socket attached. This is similar to many other expensive programmers. Do not purchase them. To dump and program the T2 SoCROM, a standard CH341a is sufficient. However, you’ll need to use either a 1.8v level shifting board or a CH341a v1.7, which has built-in level shifting that can be adjusted with a switch. A USON8 4x3 socket can be purchased easily from AliExpress ([https://www.aliexpress.com/item/1005007137888078.html XGECU Official Store]) very inexpensively, this also applies to the CH341a programmer. Softwares that support the CH341a are NeoProgrammer, and AsProgrammer. If you want to go more fancy on a programmer, you can purchase either an XGecu T48, or T56 which both natively support 1.8v. '''Some notes on the serialization block:''' [[File:socrom example.png|diagram]] Starting at offset 0x28A000h, there is a 4-byte signature of 67664353h. Byte 5 (E0h) specifies the store size, which can be determined by extracting a segment beginning at 0x28A000h with a length of E0h. This allows for the extraction of the entire store. I'm unaware of whether the block always starts at 0x28A000h. Within the store, there are some key signatures of interest. The first is 6D4E7253h (If we flip the endianess of plaintext it translates to SrNm, or SerialNumber) located at 0x28A040h, which indicates the System Serial Number (SSN). The following 12 bytes (0C in length) contain the serial number, where the last four digits of these 12 represent the hardware configuration code (HWC), the serial number should always be 12-bytes (0Ch) in length, and seems to always be terminated by zeroes (00h). The second signature were interested in is 23646F4Dh (Again, if we flip the plaintext endianess it translates to Mod#, which I assume is ModelNumber) located at 0x28A054h, which identifies the System Order Number (SON). The size of this variable varies, but it is consistently terminated by at least two 00 bytes or more (0000h). The last signature of interest is 6E676552h (Endianess flipped this translates to Regn, or RegistrationNumber?) located at 28A07Ch, which is the final part of the System Order Number, if we concatinate these two pieces of data it comes out as MVVL2B/A, which is correct in my case since the firmware dump came from a MacBook Pro 16" 2019. n2pkatz4pmqbq5mr690tiqi8je30ncy T2 MacBook WiFi IC Replacement 0 1886 5559 5557 2021-02-08T22:00:25Z Chrisb 1 5559 wikitext text/x-wiki Very similar to replacing the WiFI IC on a T1 MacBook Pro, you will need a donor board with a donor WiFi along with its two married components. Transfer the 3 chips and WiFi will work again with a new chip. [[File:T2 WiFi IC Replacement.jpg|thumb|Replace WiFI iC, BT Serial Flash, WiFi EEPROM (Rico Cerva)]] Credit to Rico Cerva. [https://instagram.com/federicocerva instagram.com/federicocerva] gp23u02x2g5w5gklvpzkilpioi3vqsn T2 Soldering Tutorial 0 2240 6918 6916 2023-09-25T16:48:52Z Alex6337 28 Remove everything -> Unuseful or not checked info... 6918 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 T2 and CD3215 Power on Sequence 0 1749 5184 2020-11-04T02:02:05Z Chrisb 1 Chrisb moved page [[T2 and CD3215 Power on Sequence]] to [[T2 and CD3217 Power on Sequence]]: Accuracy 5184 wikitext text/x-wiki #REDIRECT [[T2 and CD3217 Power on Sequence]] 886kc6m30vtc32z6n63hstdsq19uipe T2 and CD3217 Power on Sequence 0 2084 6230 2021-11-15T11:22:37Z Francis 4 Francis moved page [[T2 and CD3217 Power on Sequence]] to [[CD3217 and T2 Power on Sequence]]: Changed formatting of title to be similar to CD3215 page to find it easily 6230 wikitext text/x-wiki #REDIRECT [[CD3217 and T2 Power on Sequence]] lpzia3sfpsupuc7vbezn8lawq8hoepd TODO 0 695 1419 2020-07-12T23:19:52Z Chrisb 1 Chrisb moved page [[TODO]] to [[1 TODO]] 1419 wikitext text/x-wiki #REDIRECT [[1 TODO]] aax0ep2qst81e2szfc4s8wd3urex46x Target Disk Mode 0 57 579 409 2020-02-02T11:36:41Z Piernov 10 Category Mac 579 wikitext text/x-wiki Booting a Mac into target disk mode allows the internal storage to show up on another Mac as external storage.<BR> The following will work with target disk mode: *Thunderbolt 1-3 *USB C *Firewire NOTE: A1342 do not have any target disk mode capable ports. [[Category:Mac]] 2m9clmpbkalx605l5v8b7cgwp20lnci Terminal Commands Cheat Sheet 0 741 1569 2020-08-28T17:19:57Z Chrisb 1 Created page with "===Shortcuts=== {| class="wikitable" !Key/Command !Description |- |Tab |Auto-complete files and folder names |- |Ctrl + A |Go to the beginning of the line you are currently ty..." 1569 wikitext text/x-wiki ===Shortcuts=== {| class="wikitable" !Key/Command !Description |- |Tab |Auto-complete files and folder names |- |Ctrl + A |Go to the beginning of the line you are currently typing on |- |Ctrl + E |Go to the end of the line you are currently typing on |- |Ctrl + U |Clear the line before the cursor |- |Ctrl + K |Clear the line after the cursor |- |Ctrl + W |Delete the word before the cursor |- |Ctrl + T |Swap the last two characters before the cursor |- |Esc + T |Swap the last two words before the cursor |- |Ctrl + R |Lets you search through previously used commands |- |Ctrl + L or Command + K |Clears the Screen |- |Ctrl + C |Kill whatever you are running |- |Ctrl + D |Exit the current shell |} ===Core Commands=== {| class="wikitable" |cd |Home directory |- |cd [folder] |Change directory |- |cd ~ |Home directory, e.g. ‘cd ~/folder/’ |- |cd / |Root of drive |- |ls |Short listing |- |ls -l |Long listing |- |ls -a |Listing incl. hidden files |- |ls -lh |Long listing with Human readable file sizes |- |ls -R |Entire content of folder recursively |- |sudo [command] |Run command with the security privileges of the superuser (Super User DO) |- |open [file] |Opens a file |- |open . |Opens the directory |- |top |Displays active processes. Press q to quit |- |nano [file] |Opens the Terminal it’s editor |- |pico [file] |Opens the Terminal it’ |Exit |- |clear |Clear screen |} ===Command History=== {| class="wikitable" |history n |Shows the stuff typed – add a number to limit the last n items |- |ctrl-r |Interactively search through previously typed commands |- |![value] |Execute the last command typed that starts with ‘value’ |- |!! |Execute the last command typed |} ===File Management=== {| class="wikitable" |touch [file] |Create new file |- |pwd |Full path to working directory |- |.. |Parent/enclosing directory, e.g. |- |ls -l .. |Long listing of parent directory |- |cd ../../ |Move 2 levels up |- |. |Current folder |- |cat |Concatenate to screen |- |rm [file] |Remove a file, e.g. rm [file] [file] |- |rm -i [file] |Remove with confirmation |- |rm -r [dir] |Remove a directory and contents |- |rm -f [file] |Force removal without confirmation |- |rm -i [file] |Will display prompt before |- |cp [file] [newfile] |Copy file to file |- |cp [file] [dir] |Copy file to directory |- |mv [file] [new filename] |Move/Rename, e.g. mv -v [file] [dir] |} ===Directory Management=== {| class="wikitable" |mkdir [dir] |Create new directory |- |mkdir -p [dir]/[dir] |Create nested directories |- |rmdir [dir] |Remove directory ( only operates on empty directories ) |- |rm -R [dir] |Remove directory and contents |} ===Pipes – Allows To Combine Multiple Commands That Generate Output=== {| class="wikitable" |more |Output content delivered in screensize chunks |- |> [file] |Push output to file, keep in mind it will get overwritten |- |>> [file] |Append output to existing file |- |< |Tell command to read content from a fi |} ===Help=== {| class="wikitable" |[command] -h |Offers help |- |[command] —help |Offers help |- |[command] help |Offers help |- |reset |Resets the terminal display |- |man [command] |Show the help for ‘command’ |- |whatis [command] |Gives a one-line description of ‘command’ |} Source: https://gist.github.com/poopsplat/7195274.js durjg29vaddx77wskqa12hp4b3bmbzc Thermal Cameras 0 2083 6226 6223 2021-11-14T21:25:21Z Inwerp 16 6226 wikitext text/x-wiki '''1. HT-A2 + ZnSe Focal Lens''' *I ordered the camera directly from Aliexpress - https://www.aliexpress.com/item/32963919097.html?spm=a2g0s.9042311.0.0.413e4c4dW0lD8P the HT-A2 Camera is a standalone smartphone-like device with IR sensor resolution 320x240px. it also has camera for combined mode (like many of quanli cameras), howerver with this mod image is sharp enough to turn normal camera completely off. * *Please be advised that this camera is not capable of recording video, keep this in mind if capturing video is important for your work. It can only capture photos. * *Lens used in the example - ZnSe Focal Lens, 20mm Diameter, 50.8mm Focus Lenght * *Lens adapter used in the example (by OZ2CPU) - https://www.thingiverse.com/thing:4964427/files (Requires glue) [[File:Combined Examples.png|thumb|alt=|none|600x600px]]<br /> bo0ri3ds03i3nwqdhy1iel2s15cw7v5 Throttling 0 1873 6024 5651 2021-08-25T18:44:12Z Piernov 10 820-2936 battery 6024 wikitext text/x-wiki Throttling (arbitrary frequency limitation of the CPU) happens when a [[Software Sensor Readings|sensor]] is reading bad, a bad battery is used or battery is absent. The machine becomes slow but not always totally unusable. Youtube video playback can become choppy at higher resolutions, moving cursor halts video, etc... The CPU temperature won't go up in most cases (and the fan will either stay quite low or ramp up fully). *To find missing sensors, use [[ASD List|ASD]] and decode here : [[SMC Sensor Codes|sensors codes]] or use [[Apple Hardware Test (AHT) and Apple Diagnostics (AD) Codes|AHT/AD]], not as specific.) [https://software.intel.com/content/www/us/en/develop/articles/intel-power-gadget.html Intel Power Gadget] can be used to monitor the power consumption and the actual core clock of the CPU to observe proper boosting behaviour under load. Intel Power Gadget is only available starting from 2nd gen Core CPU. Trying to run it on 1st gen Core will result in an immediate kernel panic. Instead, while it is much less user friendly, the following command can be used in the Terminal to monitor the actual core clock, refreshing every 0.1s: sudo powermetrics --sampler cpu_power -i 100 ==820-2936== ===No battery=== [[File:820-2936 sensors no battery.jpg|600px|820-2936 sensors no battery]] ===With battery=== [[File:820-2936 sensors with battery.jpg|600px|820-2936 sensors with battery]] ==820-00165== The following example is a 820-00165 (MBA 13" 2017 i7) with prime95 torture test starting in the middle of the graph. <br /> [[File:820-00165 battery throttling.jpg|left|thumb|663x663px|820-00165 throttling due to bad battery (same with no battery). Notice the constant frequency stuck just above 1GHz. Fan stays low and temp won't go past 65°C.]] <br /> [[File:thermal throttling.jpg|left|thumb|663x663px|820-00165 throttling due to high CPU usage (Prime95 torture test). The start of the graph is normal behavior when using programs. This time the frequency stays quite high and reach a plateau when the cooling capacity is overwhelmed. The fan is gradually ramping up at max rpm or close.This is the expected behavior.]] <br> [[File:throttling-random-under-load.jpg|left|thumb|663x663px|Case study : 820-00165 (i5 early 2015) throttling eratically under load, system very slow. Notice the frequency capped around 1GHz, the low power used and subsequent low thermals (under 65°C).]] [[File:throttling-random-fixed.jpg|left|thumb|663x663px|Case study : 820-00165 (i5 early 2015) After the fix. A bad cap on PP3V3_S5_AVREF_SMC was messing with the SMC itself. System behaves normally under load. The frequency now scales up and stays there (normal thermal throttling) as temps rise up to 100°C (Prime95 small FFT is torturing the poor Air).]] ko16p23vng4ba3673zmc5wok7erzh6i Topcase information 0 2181 6609 6608 2022-09-12T17:37:04Z Francis 4 /* MacBook Pro */ 6609 wikitext text/x-wiki =WORK IN PROGRESS= This page contains information about topcases and how to distinguish different model years based on no more than the topcase itself and its features/model numbers. Information about compatibility between the different years will be added when possible as well. =<bdi>MacBook Pro</bdi>= {| class="wikitable" |+ !Screen size !EMC !'''Model N°''' !Date !Model ID !Board number !Topcase model '''N°''' !Topcase date !Topcase lot number !Letter code |- |13" | |A1502 | | | | | | | |- | | |A1502 | | | | | | | |- | | |A1502 | | | | | | | |- |15" |EMC 2512/2673 |A1398 |Midi 2012/Early 2013 |MacBookPro10,1 |820-3332 |613-9739-D |14.12.11 |0000141930 |K |- | | | | | | |613-9739-D |13.06.09 |0000259210 |K |- | | | | | | |613-9739-D |2012.08.25 |01MPN20041 |F |- | | | | | | |613-9739-D |13.06.09 |0000259210 |K |- | |EMC 2674 |A1398 |Late 2013 |MacBookPro11,2 |820-3662 |613-1325-08 |2013.11.29 |01MPN00336 |F |- | | | | | | |613-1325-09 |13.02.07 |01MPD10724 |F |- | | | | | | |613-1325-08 |2013.10.14 |01MPD00386 |F |} i6lqha2wdmyvnvk8cqo4agqcy7uj9is Touch Bar Notes 0 31 580 64 2020-02-02T11:37:00Z Piernov 10 Category Mac MacBook 580 wikitext text/x-wiki It will boot with just the bare LB. Make sure to have a known good USB C to video adapter that works in EFI mode. The Apple multi adapter did not work for me. The power button is replaceable, but without Touch ID (mesa). [[Category:Mac]] [[Category:MacBook]] 70ikrqa5224pa5ts1xtbjq243g0ektk Trackpad & keyboard 0 697 6063 5742 2021-09-15T18:44:40Z Deadbody408 536 added a fix to procedures 6063 wikitext text/x-wiki '''Issue: Trackpad & Keyboard do not function on A1465 and A1466 MacBook Air''' Troubleshooting Steps #Test boot and hold option. Does it bring you to the boot menu? Does the trackpad/keyboard work? If no, continue on step 2. If yes, skip to step #Inspect trackpad flex cable for any damage or corrosion. Sometimes it is only visible under microscope. It is also a safe bet to swap the cable and test. #Test with a new trackpad, and keyboard disconnected. #Measure voltages going into J4800. Does it have power where there should be power? <br /> Case Example: A1465 2013 11" MacBook Air: Original issue was SMC failure, and it sat in my drawer for about a year. Finally replaced SMC and the unit boots up and works fine, but no trackpad or keyboard in the OS. They do work on the boot menu. I tested all components and discovered 0v on TPAD_USB_IF_EN coming from the PCH. I jumpered from PP3V3_S0, and the keyboard and mouse function. Note : if both TPAD_USB_IF_EN_CONN and TPAD_SPI_IF_EN_CONN are present (from jumping 3v3 to TPAD_USB_IF_EN_CONN) , mouse movement will be jittery, to fix this issue jump TPAD_SPI_IF_EN_CONN to ground. '''Issue: Water damaged trackpad works but causes throttling and temperature error in FaceTime on A1465 MacBook Air (trackpad sensor issue)'''<br> Apple Diagnostics show error PFM006.<br> Troubleshooting Steps #Inspect trackpad flex cable for any damage or corrosion. Sometimes it is only visible under microscope inside the connector on trackpad side or board side. It is also a safe bet to swap the cable and test. #Test with a new trackpad, and eventually with keyboard disconnected. For testing purposes, you may use a trackpad from an A1466, they are compatible. ===A1502 and similar flexcable install=== #leave connector CLOSED #align flex cable so it perfectly fits but not inserted #open connector lock and let cable slide in [[File:A1502 Keyboard flex.png|left|frameless|558x558px]] <br /> 8zby3kx1mksxusk9vjecvmmwttlqlwr USB-C Pinout 0 812 3107 3095 2020-10-06T22:02:24Z Inwerp 16 /* Common problems on Macbooks: */ 3107 wikitext text/x-wiki [[File:USB-C pinout.png|frameless|800x800px|USB-C pin-out]] The USB-C port on an A1708 is constructed with from a metal cap, a PCB, and a pin carrier. The metal cap has a ground shield that extends toward the end of the port and kapton tape on the inside to protect against shorts. The PCB layer has indents in the sides of the ports to allow the USB C cable to grab on to. The pin carrier has a metal frame and shields that partially cover the exposed port like the metal cap does. The pins are held in place with a plastic. All three of these components are soldered together. [[File:A1708 USB-C port teardown.png|frameless|800x800px|USB-C teardown]] Common power sequence: [[File:image.png|frameless|801x801px]]<br /> =====Common problems on Macbooks:===== #No External monitor, also Not able to charge / but USB connectivity works. In most cases means CC1 or CC2 pin is either damaged or dataline is burned on cd3215/17 side. There are usb 2.0 lines in the middle, they work fine in both orientations, thats why it somehow detects storage devices. #Charging works only in one orientation same with CC1/CC2, most likely damaged connector. #Charging works, data transfer too, no external screen with known-good cable Inspect dataline pairs for damage or shorts. Shorted dataline usually is a bad sign. #Damaged port, no image on the screen RIP CPU. Despite all possible precautions, it is possible to kill the CPU by sending 20V to some of Datalines around. In most cases it will blow the cd3215 but before replacing dead CD3215 check if there is a short on USB_UPC_PCH_XA( or B)_P(or N). <br /> am6b7g24uhhtql00pofph3berf9itfl Ultrasonic Cleaners 0 1744 7688 6476 2024-09-02T18:50:39Z Inwerp 16 7688 wikitext text/x-wiki == '''WARNING''' == Despite being useful for post-repair cleaning, many people use this device to "fix" a dead-end device. Please don't do that under any circumstances if there is valuable customer data on the device. Escalate it to a different repair store with proven competence or reject the repair. '''USC CLEANING IS NOT REPAIR''' Example: This Mac was properly cleaned and all visible damage was repaired by one of our community members. Since there was random corrosion, the tech decided to do a proper USC clean. Technically he did nothing wrong, and the device was properly dried after that. This device arrived to me approximately 3 weeks after the USC, so there is zero chance there was any residual liquid. The original issue was a broken i2c clk line, which prevented NAND power from working. It was really hard to find because the affected line was corroded under the mask, and there were zero traces, but the standard M1 power sequence helped me pinpoint the issue. After finding and fixing the original issue, the Mac turned on and then turned off again after a minute, with a smelly 3v8 short to ground. After removing the sticker, I found that the SPMU had a very nasty hole in it, which would mean a dead CPU and no data in most cases. [[File:Hardcase A2442.png|none|thumb|654x654px|I had to drill under the SPMU since 3v8 was welded to ground. i also had to restore pad because 3V8 inputs are not connected internally in PMU. after that to stay on safe side i did a back up with battery disconnected which caused the device throttling thus using less power. ]] It is maybe okay to use USC as a last resort on non-data recovery cases where you expect liquid under the SoC. However, it is strongly NOT recommended to USC boards in any data recovery cases. Data is not replaceable, and the 1% chance it will fix invisible damage is not worth the greater chance of killing the board. USC cleaning became popular on older machines with detachable SSD drives, and it was a valid technique which even fixed reasonable amount of boards. Now it is very different, because of integrated SSD drive and much more dence PCB complexity on newer macs. '''Why you should just get a crest ultrasonic cleaner if you're fixing boards professionally:''' Every other generally available brand of ultrasonically cleaner simply doesn't work as well. If you want to know why see below. The product description on the rossman groups website has a good description of the advantages of crest's machines and has some pictures comparing the cleaning of a crest machine compared to another manufacturer's machine. Link - https://store.rossmanngroup.com/crest-p1800h-45.html '''List of available models:''' https://crest-ultrasonics.com/benchtop-ultrasonic-cleaners/?gclid=EAIaIQobChMImeva2aqU9wIVBv_jBx374gS8EAAYASAAEgKM0fD_BwE Something the size of a P1200D can fit any current macbook logic board , some large boards may not be fully submerged and you would need to flip them more time to get full coverage on the board. '''Dilution levels to use in tank:''' Concentration of Branson electronics cleaner should be between 3-5% and the rest is distilled water. For Example if you had a 1200D cleaner, the tank is roughly 2.4 gallons or 9200ml, so you'd want 275ml- 460ml of Branson EC, the rest of the tank would be distilled water. '''''*DO NOT use tap water or isopropyl alcohol in an ultrasonic cleaner or any other combination of chemicals.*''''' '''*Use Branson EC and distilled water, that is all.*''' '''Whenever you refill or plan to use the cleaner, you should run the degass setting to get rid of any air bubbles in the solution, air bubbles hitting the board can cause cavitation, not good.''' Your tank is filled, you've degassed the solution of branson and distilled water and you want to clean your boards, here are the settings that are widely used: '''Crest Ultrasonic settings:''' Temp: 68 C Power: 9 Set timer for 4 min ''4 Minutes of each side of the board'' '''General Tips:''' -It is a good idea to remove any stickers, heatsinks and shield plates before putting a board in an ultrasonic. Stickers will be ruined by the ultrasonic process and shields will stop the cleaning process from working effectively in those covered areas. -If you've been doing rework on a board, it is recommended to clean off flux residue from the board before putting it into the ultrasonic cleaner as you can get more uses of a solution in the tank before it needs to be cleaned out and refilled. <br /> 0cl78ndx71zfp2daad0cpavt7w9ifc3 Uninstall PhoneCheck 0 2220 6797 2023-03-21T17:14:48Z Chrisb 1 Created page with "<syntaxhighlight lang="bash"> defaults delete -g ignore-devices defaults delete com.apple.AMPDevicesAgent </syntaxhighlight>" 6797 wikitext text/x-wiki <syntaxhighlight lang="bash"> defaults delete -g ignore-devices defaults delete com.apple.AMPDevicesAgent </syntaxhighlight> ktkjj6zdu3p54h8jlze6voanzf4rudj Update Certificates in Older macOS 0 2073 6179 6178 2021-10-14T14:45:30Z Chrisb 1 Protected "[[Update Certificates in Older macOS]]": Security ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) [cascading] 6178 wikitext text/x-wiki The root certificates of older macOS like El Capitan are expiring. Below is a script to pull the updated certs from the logi.wiki source and install them to an older system. Open a terminal by using Spotlight Search (Command(⌘) + Space) and type Terminal. Then copy and paste the following command into a terminal. After pasting press enter. You will get a password prompt popping up. Enter your password and click OK. Alternatively you can open Terminal by opening the Utilities directly by pressing Shift + Command(⌘) + U after clicking Finder to activate it.<syntaxhighlight lang="bash"> bash <(curl -s http://logi.wiki/rootcerts.sh) </syntaxhighlight>You can also add it to a scripting system like DeployStudio by adding a DS to the end.<syntaxhighlight lang="bash"> curl -s http://logi.wiki/rootcerts.sh | bash -s DS </syntaxhighlight>'''For more information and other methods see''' https://logi.wiki/index.php/ERR_CERT_INVALID 6odvj83q0mquah4y6kj9117al1pck04 Useful Websites 0 745 1574 2020-08-28T17:35:03Z Chrisb 1 Created page with " Save these, bookmark these, use these. [https://www.everymac.com Everymac Lookup] [https://beetstech.com/apple-device-lookup Beetstech Device compatibility look up.] [htt..." 1574 wikitext text/x-wiki Save these, bookmark these, use these. [https://www.everymac.com Everymac Lookup] [https://beetstech.com/apple-device-lookup Beetstech Device compatibility look up.] [https://beetstech.com/blog/where-are-macbook-pro-unibody-power-on-pads-located MacBook Pro Unibody Power On Pad Locations] [https://beetstech.com/blog/macbook-air-power-pads MacBook Air Power On Pad Locations] [https://ss64.com/osx/ MacOS A-Z Terminal Commands] [https://support.apple.com/en-us/HT207584 Fix Fusion Drive - WARNING! ERASES EXISTING DATA IF ANY!!!] [https://support.apple.com/en-us/HT205043#4 2012 and Earlier Mac Pro RAM Instructions] [https://support.apple.com/exchange_repair Apple Exchange and Repair Programs] [https://www.apple.com/support/systemstatus/ Apple System Status] [http://logiwiki.shinycomputers.com/index.php/Main_Page Logiwiki] '''Apple Wiki's -''' Be sure to bookmark Apple product Wiki's in Wikipedia.  Each has very detailed technical information listed within which is uber helpful.  I am not going to copy and paste each one here, but please use this valuable resource! 2zthgbvy7297t9c0jdwe29s2lacj0oc Useful tools 0 2246 6934 2023-09-27T13:48:02Z Francis 4 Created page with "== Here you will find a list of various tools that might not be easy to find on your own == Nerd-tool: tool for calibrating the sleep sensor on 2019+ macbooks: https://notebooknerds.de/en/nerd-tool-1/ Lifeboat (076-00236), tool for extracting data from 2016-2017 Macbook Pros, usually out of stock these days: https://www.ebay.co.uk/itm/282989664130 FNB58: most recommended USB-c meter, for use with macbooks, iphones, androids etc [https://www.aliexpress.com/item/10050051..." 6934 wikitext text/x-wiki == Here you will find a list of various tools that might not be easy to find on your own == Nerd-tool: tool for calibrating the sleep sensor on 2019+ macbooks: https://notebooknerds.de/en/nerd-tool-1/ Lifeboat (076-00236), tool for extracting data from 2016-2017 Macbook Pros, usually out of stock these days: https://www.ebay.co.uk/itm/282989664130 FNB58: most recommended USB-c meter, for use with macbooks, iphones, androids etc [https://www.aliexpress.com/item/1005005108936815.html?spm=a2g0o.productlist.main.3.17b7154czRr5p8&algo_pvid=218e2ba0-216b-4d97-953f-d13dcfc395d1&algo_exp_id=218e2ba0-216b-4d97-953f-d13dcfc395d1-1&pdp_npi=4%40dis%21SEK%211116.64%21446.71%21%21%2191.49%21%21%40211b88ef16954032924265183e1a8d%2112000031691325883%21sea%21SE%21752551030%21&curPageLogUid=KLBwxSRhF8Vg https://www.aliexpress.com/item/1005005108936815.html] 3fmykfcpvbjhw9uuy2ifp4k61tx99z7 Verbose Mode 0 56 581 410 2020-02-02T11:37:11Z Piernov 10 Category Mac 581 wikitext text/x-wiki Verbose, aka wordy, mode displays all the [[EFI]] and kernel boot info. It will end when the OS takes over. Pro Tip: Use a camera pointed at the screen to get a record of the fast moving text [[Category:Mac]] lkl1uuxv8wep13cwr9in2o265v0f3ow Wi-Fi not working in recovery mode 0 2092 7639 6499 2024-08-19T08:46:12Z Inwerp 16 7639 wikitext text/x-wiki When a MacBook enters recovery mode or the boot menu it cannot rely on drivers from MacOS, and instead the platform must initialize model specific drivers during the UEFI DXE boot stage; because of this, a MacBook can only initialize a '''model specific''' driver for the wireless card that is ''specifically'' designed to be in THAT MacBook. The MacBook EFI is an optimised firmware, and would be wasteful to bloat it with unnecessary drivers. Here is a real world example; the Wi-Fi card in an A1502 will fit nicely into an A1398 and work in MacOS, however, when recovery mode is booted, i.e., Internet Recovery, no wireless networks will be discovered you'll more than likely encounter the following error codes:- *'''-1005F''' *'''-1005U''' If any of this read looks familiar, you should check your Wi-Fi card is compatible with the MacBook it's installed in, else you'll have no access to networks in the boot menu, internet recovery or diagnostics as the EFIROM contains no driver to initialize the Wi-Fi hardware. == Error -2003F during online recovery load == Use USBC-Ethernet adapter. In most cases separate usbc-lan adapters do not work, but in my experience almost all UsbC hubs (Anker, Ugreen, etc) work fine. On some devices issue might be fixed with DFU restore i0fz32qzp2lracbmdohscyud4jpjwev Xbox One 0 2109 6329 2022-01-08T05:29:54Z Alpha Bravo Tech. 538 Created page with "Xbox One info here [[Category:Game Consoles]]" 6329 wikitext text/x-wiki Xbox One info here [[Category:Game Consoles]] cbvjgqea9hogcfgjov50uy88ldn1bqz Xbox One S 0 2110 6330 2022-01-08T05:30:14Z Alpha Bravo Tech. 538 Created page with "Xbox One S info here [[Category:Game Consoles]]" 6330 wikitext text/x-wiki Xbox One S info here [[Category:Game Consoles]] j0nq96paw5ix81dvc4ihzddcubhz1qm Xbox One X 0 2111 6331 2022-01-08T05:30:33Z Alpha Bravo Tech. 538 Created page with "Xbox One X info here [[Category:Game Consoles]]" 6331 wikitext text/x-wiki Xbox One X info here [[Category:Game Consoles]] a42iq99w4c8z382y1dhq1ja3i870ugj Xbox Series S 0 2112 6332 2022-01-08T05:31:08Z Alpha Bravo Tech. 538 Created page with "Xbox Series S info here [[Category:Game Consoles]]" 6332 wikitext text/x-wiki Xbox Series S info here [[Category:Game Consoles]] cgrf6tmfy8xgbhey9ct1cxou5ruwl4f Xbox Series X 0 2113 6333 2022-01-08T05:31:48Z Alpha Bravo Tech. 538 Created page with "Xbox Series X info here [[Category:Game Consoles]]" 6333 wikitext text/x-wiki Xbox Series X info here [[Category:Game Consoles]] ogbh2lmn4hh4y82367y6l4tl65tvmkz eDP interface 0 2233 6873 6872 2023-06-22T08:36:55Z Inwerp 16 6873 wikitext text/x-wiki == Theory == Stub article related to the troubleshooting of eDP displays + some modifications made by Apple. There are 5 main parts of the common eDP connector: #TCON / LCD Controller Power supply. Depending on panel type it might be 3, 5 or 12V as a main LCD VDD power supply. This supply is always present. #Service or Auxiliary bidirectional differential pairs to transfer service information.- Standard line is eDP_AUX(N+P), however on macs we would see also a TCON SMBUS connected to SMC(for example, SMC reads LCD temp via this line). On MacBook (see [[Backlight Troubleshooting|MacBook backlight]] troubleshooting page) there is also an extra i2c line which connects two parts of backlight driver. Depending on realisation, there might be two AUX lines (on iMacs) each would be connected to Intel / AMD GPU. On MacBooks, there would be one AUX line, which would be later routed by GMUX. #1-4+ Data lines, depending on refresh rate / max panel resolution #Backlight control lines, depending on what exact implementation do we have. There might be sync signal to sync backlight with panel refresh rate, there might be EN signal, or as mentioned in nr.2 - i2c line to bind two backlight drivers together. You can also see PWM signal as a secondary backlight control on some MacBooks and most PC laptop screens. #HPD (Hot Plug Detect) signal, which works as an indicator that panel is on and ready to send/receive data. There might be some more lines like Microphone or Touchscreen/Camera lines on PC laptop display connectors, but these are not related to eDP itself. The common power sequence would be: #LCD-VCC provided to Display #Display initializes and resets LCD panel #HPD goes high (1.5-3V depending on panel type) on the display side. this tells the mainboard that it is time to communicate with panel #Display controller (GPU) reads panel parameters via EDP_AUX and also sets its display mode. #Signal Differential pairs are being trained and display starts to render the image. -- On iMac screens, there is also VIDEO_ON signal which turns on the backlight circuit on the mainboard. This is probably made to avoid any visible artefacts before the display panel is fully reset. This also turns on indicates 4th DEBUG LED. -- If backlight driver is located in display/tcon, Backlight enable will be sent by Mainboard to LCD panel. #Backlight should be turned on. On most modern panels it only turns on if there was no issue in sending image to the panel. [[File:iMac EDP.png|frameless|1311x1311px]] This is iMac 2017 eDP connector pinout. Pinout is quite different from standard eDP interface, but mostly it works very similar. <br /> == Troubleshooting == # Check condition of the screen. Is it recognized (does external screen show login or only background as it was secondary screen)? Does it have image but no backlight? If so, for MacBook backlight troubleshooting refer to this page or iMac Backlight Troubleshooting here. # If there is no picture, start with checking if there is a power supply provided to the screen. # Check signal lines in diode mode, separately on screen/mainboard side. N and P lines of the same pair should have very similar readings. # Check HPD signal. If it's present, there should be communication at least on AUX lines. # If you have communication, backlight but no image, most likely the display itself is damaged. On MacBook screen, there is an integrity check wire around the panel which disables the image if the controller sees glass as "broken". It happens really often through "security" camera shutter glued on the glass on Macbook screens. fvt1ptximp7uav5vgp76c1xje5o01bv iMac A1311/A1312 Graphics card 0 1747 6819 5764 2023-04-30T13:07:22Z Piernov 10 Remove obsolete information in 2023 6819 wikitext text/x-wiki iMac Late 2009 to Late 2011 are known for their GPU failure. All models are affected to a certain extent, except the 21.5" 2009 with integrated graphics only (NVidia 9400M). All other models use a ATi/AMD Radeon HD HD4000 through HD6000 series GPU which are unreliable. The most affected is the Radeon HD6000 series in the 2011 models, then the Radeon HD5000 in the 2010 models and finally the Radeon HD4000 in the 2009 models. Heat does reduce the lifespan of these, so higher-end models are more likely to fail. If you are still using one of these, it is highly recommended put fresh thermal paste and to install Macs Fan Control and set a much more aggressive fan profile. This is also recommended for older models (2006 to 2009) which are also failure-prone. There are '''no''' officially compatible graphics card available to replace them. Most cards you find on eBay or elsewhere already have been baked or will fail soon enough. The best solution is to install a newer unsupported graphics card. However, Apple's EFI does not support the VBIOS used on the "non-Apple" cards, some people thankfully figured out how to patch the VBIOS to restore EFI video output support as well as other features (native brightness adjustment, external display support) on some cards. '''If you are considering replacing the GPU in your iMac, you should REALLY read this post as it is appears to be the central repository for all things related to iMac GPU replacements - including more information on supported cards and available VBIOS:''' https://forums.macrumors.com/threads/2011-imac-graphics-card-upgrade.1596614/ Note that A1225 2009 and A1311 2009 DG only support some older cards with native LVDS output rather than eDP. These cards from around 2012 may not have the best reliability either. Additionally, they require using OpenCore to boot into macOS. There is no fully transparent solution allowing to boot macOS natively. However, since replacement graphics cards support Metal, it is also an opportunity to install a newer macOS version with OpenCore Legacy patcher and get acceptable performance without graphical glitches. For the A1311 2009 DG, it is possible to swap the logic board with the A1311 2009 IG model to get rid of the discrete graphics card. It is not easily possible to convert an A1311 2009 DG board to IG board since it requires swapping the MCP from "NF-7201-DC-B3" to "GF-9400J-DC-I-B3" and removing the parts with BOM option "MXM" then soldering the parts with BOM option "IG" [[Category:Mac]] [[Category:iMac]] ajvtbe0z4i18yrx230kmg7tnhq5o6xm iMac HDD Thermal Sensor Bypass 0 607 7042 6794 2024-01-15T10:26:12Z Piernov 10 /* Modifying the Logic Board */ 7042 wikitext text/x-wiki ===Problem=== If you replace an OEM drive in a 2010 or 2011 iMac, the fans in the system will go crazy. These can be controlled by software like MacsFanControl or smcFanControl, but that's a poor workaround for an issue that can be addressed internally quite easily. <br /> ===Context=== There is no such thing as HDD thermal sensor on iMacs from 2010 or 2011 - instead it's simply a thermal trigger sent by the OEM-installed hard drives. If you connect HDD_OOB_TEMP_FILT to ground, the thermal trigger never occurs and the system will behave as it normally would with its OEM drive installed. <br /> ===Solutions!=== On '''2009''' iMacs, there is a separate two-wire cable that runs from the logic board to the hard drive and connects to J5400 on the logic board. The best solution is to simply snip the hard drive terminal off of the cable and strip and solder the two wires together. You could also simply add a jumper between the two pins of J5400 on the logic board itself. The former option will look like this: [[File:2010_Hard_Drive_Thermal_Sensor_Jumper.jpg|alt=|frameless]] On '''2010'''-'''2011''' iMacs you can either modify the drive you'll be installing '''-OR-''' the logic board itself. '''YOU DO NOT NEED TO MODIFY BOTH ENDS, BUT NO PROBLEMS WILL BE CAUSED BY BOTH MODIFICATIONS BEING IN PLACE.''' <br /> ===Modifying the Logic Board=== Modifying the logic board is preferable as it is a more permanent fix that will remain in effect through potential future drive replacements, but it DOES requires access to the backside of the logic board, so if you don't have the board pulled already it may be preferable to simply modify the drive itself (see below). Chances are these won't be going through too many drive replacements in the future. To modify the logic board and provide a permanent fix for the high fan issue, simply find J4511 where the SATA power cable for the hard drive connects to the logic board, and simply solder HDD_OOB_TEMP_FB on pin 7 to ground on pin 6 using either a solder blob or a 0 ohm resistor. A 0603 or 0402-sized resistor should work just fine. <br /> [[File:Imagen.jpg|thumb|J4511 PIN 6 y 7|alt=|none]] Alternatively, on 2011 27", without disassembly of the main logic board, you can bridge the test point/via TP[510]HDD_OOB_TEMP_FB (near the bottom-right of the SMC U4900 and just below the unpopulated connector J5550) to the nearby ground plane after scraping the solder mask a little bit. [[File:820-2828 TP HDD OOB TEMP FB bridge.jpg|thumb|HDD_OOB_TEMP_FB test point bridged to ground plane on 820-2828|none]] ===Modifying the Drive=== To modify the drive you'll be installing, simply get physical access to the leads of the SATA power port and tie pin 11 to either adjacent ground pin and you're set. Pin 1 is at the end of the plug with the key (the foot of the L shaped plug) and pin 15 is on the far end, so pin 11 is the fifth pin over from the end of the plug without the key. On most drives I've seen, the actual fins on the plug are longer for pins 10 and 12, and pin 11 is the shorter one between them. Pins 10 and 12 are both ground so either will work perfectly. Pictured below is a modification of a SATA power plug on a drive with pin 11 tied to pin 12 using a zero ohm 0603 resistor, which is a perfect fit for the SATA power pin pitch. [[File:SATA ENERGIA.png|alt=Pinouts for SATA power plug|thumb|Pinouts for SATA power plug]] [[File:SATA Temp.png|frameless]] After soldering, be sure that pin 11 and all of your ground pins have continuity to one another (so pins 4, 5, 6, 10, 11, and 12 should all have continuity), and that they do NOT have any connectivity to the 5V pins (7, 8, and 9) or the 12V pins (13, 14, and 15). See the SATA power pinout reference table as needed: <br /> ===Technical Explanation=== [[File:TempComparator.png|frameless|556x556px]] The above circuitry is common to all iMacs from 2010 and 2011. In it, U5400 is a LM393 comparator. The circuit produces a 1V reference voltage from PP12V_S0_SENSE through a voltage divider (R5400 & R5401) and delivers it to pin 2 of U5400. The circuit also produces a 1.5V pullup voltage from PP3V3_S0_SMC_LS through a voltage divider (R5402 & R5404). If the input voltage on pin 3 is LESS THAN pin 2's reference voltage, then U5400 shorts pin 1 to ground. If the input voltage on pin 3 is GREATER THAN pin 2, then U5400 does nothing, leaving the 3.3V pullup voltage on pin 1 provided by PP3V3_S0_SMC_LS unmodified. Because pin 3 is pulled up to 1.5V by default and 1.5V is greater than the 1.0V reference voltage on pin 2, the comparator does nothing and the 3.3V pullup provided to pin 1 through R5405 is delivered to the system's SMC as a logical 1, which it takes as a sign that your hard drive is on fire and about to melt your iMac and burn down your house. If the voltage on pin 3 is grounded out by an OEM drive's custom firmware or a clever modification to the circuitry ;) the voltage delivered to pin 3 will be less than the 1.0V reference voltage on pin 2 and U5400 will pull the 3.3V on pin 1 to ground, leaving the SMC to receive a logical 0, which is taken to mean that the hard drive is not, in fact, on fire. What does that fancy 50$ OWC adapter do? It takes 12V or 5V (who cares, never had one, they're stupid) from the SATA cable, turns it into ~3V and uses a LM35 or something similar to output ~0.5V to pin 11 which will lead to the SMC receiving that same logical 0 it wants to see to feel safe. Why do you see reports that SATA power Y-adapter cables solve the problem? Most Y cables simply short pin 11 to ground as that is acceptable for 99% of non-server hard drive. (Do not use such cables in servers unless you want to kill your PSU! :) ) [[File:thisisfine.png|alt=|frame|fig.2: iMac after jumper-mod]]<br /> ===Fun Facts!=== *Fun fact 1: Pin 11 on SATA power connectors is used on server hard drives to regulate "safe" startup by simply delaying motor spinup, thus reducing peak current draw on 12v PSU lines. *Fun fact 2: There are Apple plug modifiers for iMacs from 2009-2011 to accommodate SSD setups. On 2009 (and 2010?) it may be shorted, whereas on 2011 Apple Technician are required to remove the logic board and connect the plug to J4511 - the onboard HDD power socket. That means that '''''by Apple's own design''','' if you upgrade to a SSD it is totally fine to disable the temperature trigger. *Fun fact 3: The weird fan behavior we see is actually a compatibility sacrifice, as per this note in the official schematics: [[File:funfact3.png|alt=|frameless|417x417px]] <br /> *<s>Fun fact 4: Companies like OWC or iFixit keep selling "thermal sensor" for Retina (2012+) iMacs as a part of their SSD upgrade kit. In retail it might cost up to 60$ for snakeoil wire which does... absolutely nothing because even though temp line is still present on Retina Logicboards, however this temp-trigger function is not really utilized by SMC so its absense wont change anything. '''Temp sensor bypass is only needed on 2009-2011 iMacs.'''</s> *Fun fact 5: The information above is not really correct, and I apologize for that. As I figured out, there are, in fact, some iMac 2012 27" devices which require a communication line instead of the simple trigger like on older models. This communication line uses the same pin on the SATA connector. Most likely, it could be bypassed with a 3.3V pull-up on this line; however, it needs some more testing to confirm. <br /> mp1qxi1vrjziu178fqvfmpj0ou63f3f iMac Logic Board LED Indicators 0 1889 5563 5562 2021-02-11T16:16:24Z Chrisb 1 5563 wikitext text/x-wiki The following is true for iMac logic boards from early 2009 and up with only four LED locations. Some models have positions for 5 LEDs, but only 4 LEDs populated. *LED 1 - Indicates that the trickle voltage from the power supply is detected by the main logic board. This LED will remain ON while the iMac is connected to the AC power. The LED will remain on even when the computer has been shut down or put to sleep. The LED will turn off only if the AC power is disconnected or the power supply is faulty. *LED 2 - Indicates that the main logic board has detected proper power from the power supply when the computer is turned on. This LED will be ON when the computer is turned on and the power supply is working correctly. *LED 3 - Indicates that the computer and the video card are communicating. This LED will be ON when the computer is communicating properly with the video card. If LEDs 1 and 2 are ON and you heard the startup sound, but LED 3 is OFF, then the video card might be installed incorrectly or need replacement. *LED 4 - Indicates that the computer and the LCD display panel are communicating. This LED will be ON when the computer is turned on and video signal is being generated. If the LED is ON and there is no image on the LCD display panel, the LCD display panel or inverter might be installed incorrectly or need replacement. 2j9pmfht3z5rawpwah7twzuppiemva6 iMac Pictures 0 1934 5726 2021-04-08T22:20:20Z Nobluesky 182 Created page with "==iMac 21.5" 4K 2019 (A2116) (820-01237)"== [[File:imac 21 2019 recto.jpg|900px]] [[File:imac 21 2019 verso.jpg|900px]]" 5726 wikitext text/x-wiki ==iMac 21.5" 4K 2019 (A2116) (820-01237)"== [[File:imac 21 2019 recto.jpg|900px]] [[File:imac 21 2019 verso.jpg|900px]] 90686y68mgh78g56vfuo5cucw7sizhu iMac backlight circuit troubleshooting (A1419 and above) 0 1894 6733 5582 2023-02-09T17:29:39Z Inwerp 16 6733 wikitext text/x-wiki Those who ever tried to repair it already know thats much more advanced circuit compared to Macbooks or older models. There are quite a few enable signals with many P-channel MosFets on the way. Having BLC_EN signal does not mean much and i will try to explain why. As an example i use 820-3478 (A1419 27" 2013). First of all you need to recognize if thats really a board-side problem. If possible test with spare screen, inspect cable and components near the eDP connector. To diagnose the circuit you need to fully remove the board and put it on connected screen. It can be powered with a 12V PSU, you will need 3-4 amps during diagnostics so your bench psu will do the job. as soon as you fix the circuit it will jump to 6-8A so dont wonder it triggers OCP on your PSU later on. Short J6901 pin 1-2 to press power button. J8100 is a good point to start troubleshooting. You can check both VSYNC and BLC_EN signals on this pad (thats backlight microcontroller U8100 programming interface), however LED4 is triggered by VIDEO_ON signal which is also the source for BLC_EN Signal. So if debug LED4 is off, you should troubleshoot somewehere else. VSYNC indicates there is communication between screen and Microcontroller. Also pin 14,15 on eDP worth checking for smbus communication between screen and backlight controller. Long story short, VIDEO_ON comes from display side and initiates sequence to turn on Backlight. As mentioned on the schematics page, "backlight is only on when Panel has valid video". If you follow VIDEO_ON signal, you may wonder why there are so many enable signals around. I have no idea, maybe there was an "enable signal challenge" in Logicboard design room. #VIDEO_ON triggers DEBUG_LED4, and after a short delay circuit turns into BLC_EN. #Power conditions check: OpAmp U8320 checks if there is a short circuit (1OUT) and if LED Driver is working and properly powered (2OUT), also passes Backlight controller MCU signals (Outputs 3 and 4) <br />'''2OUT'''goes first since it enables initial charging of Boost circuit caps. It issues BLC_BL signal which is later summed up by U8360 with PM_GOOD_FETP12_S0_BLC(part of 12V_S0 circuit). It looks like the main condition is good 12v and 3v3v (used by MCU). When it is low, BLC_BL is HIGH and Q8371 is open, approx. 1W power starting to flow into BLC_VINP side and slowly charges the caps. '''1OUT''' is pretty insteresting. It checks voltage difference between PP12_S0_BLC_VIN2 and PP12B_S0_BLC_VINP. If you check Q8370 you can see that it needs gate to be LOW which is triggered by pretty complex In-Rush current limiting scheme. To sum it up, R8377 and R8397 mentioned above are used to slowly charge caps on drain side (VINP), if they can be charged (which is only possible if there is no short or significant leakage in circuit). Once charged to 12V, OpAmp output goes low thus releasing BLC_P_ON signal from ground. This signal goes to AND gate U8370 which is also summed with FLAG_V_L signal. Please note that FLAG_V is a signal which goes from MCU, then inverted, so HIGH FLAG_V is used to disable backlight. The whole sequence sends Q8370 Gate to ground letting voltage to pass to the boost circuit. To sum it up, you should measure Q8370 Gate to determine if all conditions above are met Having 12V on both sides does not necesarrily mean it is open, Gate should be LOW for Backlight boost circuit to work. If there is nothing on source it is most likely a blown fuse, '''but as always, blown fuse is a symptom, not a problem.''' #If all above works fine, LED_DRIVER_EN will go HIGH. Note D8200 which allows BLC_EN to instantly kill LED_DRIVER_EN if its pulled to ground. Because of this diode, low LED_DRIVER_EN wont pull BLC_EN down. #LED Driver starting to produce magical PWM signals to boost the circuit. U8350 is used as Overvoltage protection. once OVP condition is met, it pulls one of PWMs to ground. There are three outputs on boost circuit, so if you have stage-like effect or partial backlight, this might be a place to look into. However in most cases stage-light is being caused by one dead LED stripe. in this case voltage on one output will be higher compared to other ones. If no output produced, there might be an issue with one of boost feedback circuits or LED driver IC. to be continued. I will try to draw sequence diagram and further explanation as soon as i have more time. Logic behind multiple enable signals is really complex and frustrating but since i sort of beat it. i would love to share my experience. On newer (5k Macs) like 820-00134 or 820-00609 Circuit looks much simplier, however there is undervoltage protection circuit is controlled by Boost controller via UVLO_OVP pin. For some reason problem with switch mosfet and boost output diode might troll you into replacing power supply since it seem to work with a bit higher/lower PPBUS voltage which might be the case if you put a brand new power supply but it will come back. If you have non working booster, replace switching Q8119 MosFET. Supposedly voltage leakage here will cause random no backlight and somewhat better function with fresh PSU / LAB PSU. 47xtm52ngle4ypep1zp8gt7abl6lg6q iOS Kernel Panic Codes 0 113 1720 553 2020-09-13T23:11:20Z Eden 191 1720 wikitext text/x-wiki {{DISPLAYTITLE:iOS Kernel Panic Codes}} [[File:FB IMG 1564050051190.jpg|thumb|alt=|left]] [[File:FB IMG 1564050058516.jpg|thumb|alt=|left]] [[File:FB IMG 1564050065579.jpg|thumb|alt=|left]] [[File:FB IMG 1564050071098.jpg|thumb|alt=|left]] [[File:Ios kernel panic codes.png|thumb|alt=|left]] {{DEFAULTSORT:IOS Kernel Panic Codes}} [[Category:iPhone]] qhnrbbzm5pbjytqxg5bke82eu8ka85t iOS Version Per Device 0 2141 6631 6622 2022-09-21T18:08:20Z Rodger.lodge 484 Added iPhone 14 info 6631 wikitext text/x-wiki Here is a list of Devices and what iOS/iPadOS versions they can take. ===iPhone=== {| class="wikitable" !Device !Released !First iOS !Max iOS |- |iPhone 14 Pro |2022 |16 | rowspan="13" |16 |- |iPhone 14 |2022 |16 |- |iPhone 13 Pro / 13 Pro Max | rowspan="2" |2021 | rowspan="2" |15 |- |iPhone 13 / 13 mini |- |iPhone 12 Pro / 12 Pro Max | rowspan="3" |2020 | rowspan="2" |14 |- |iPhone 12 / 12 mini |- |iPhone SE (gen 2) | rowspan="3" |13 |- |iPhone 11 Pro / 11 Pro Max | rowspan="2" |2019 |- |iPhone 11 |- |iPhone XS / XS Max | rowspan="2" |2018 | rowspan="2" |12 |- |iPhone XR |- |iPhone X | rowspan="2" |2017 | rowspan="2" |11 |- |iPhone 8 / 8 Plus |- |iPhone 7 / 7 Plus | rowspan="2" |2016 |10 | rowspan="3" |15 |- |iPhone SE (gen 1) | rowspan="2" |9 |- |iPhone 6s / 6s Plus |2015 |- |iPhone 6 / 6 Plus |2014 |8 | rowspan="2" |12 |- |iPhone 5s | rowspan="2" |2013 | rowspan="2" |7 |- |iPhone 5c | rowspan="2" |10 |- |iPhone 5 |2012 |6 |- |iPhone 4s |2011 |5 |9 |- |iPhone 4 |2010 |4 |7 |- |iPhone 3GS |2009 |3 |6 |- |iPhone 3G |2008 |2 |4 |- |iPhone (gen 1) |2007 |1 |3 |} ===iPad=== Before iPadOS 13, iPadOS was known as iOS. {| class="wikitable" !Device !Released !First iPadOS !Max iPadOS |- |iPad (gen 9) | rowspan="4" |2021 | rowspan="2" |15 | rowspan="19" |16 |- |iPad mini (gen 6) |- |iPad Pro 12.9" (gen 5) | rowspan="4" |14 |- |iPad Pro 11" (gen 3) |- |iPad Air (gen 4) | rowspan="4" |2020 |- |iPad (gen 8) |- |iPad Pro 12.9" (gen 4) | rowspan="3" |13 |- |iPad Pro 11" (gen 2) |- |iPad (gen 7) | rowspan="3" |2019 |- |iPad Air (gen 3) | rowspan="4" |12 |- |iPad mini (gen 5) |- |iPad Pro 12.9" (gen 3) | rowspan="3" |2018 |- |iPad Pro 11" (gen 1) |- |iPad (gen 6) |11 |- |iPad Pro 12.9" (gen 2) | rowspan="3" |2017 | rowspan="3" |10 |- |iPad Pro 10.5" |- |iPad (gen 5) |- |iPad Pro 9.7" |2016 | rowspan="3" |9 |- |iPad Pro 12.9" (gen 1) | rowspan="2" |2015 |- |iPad mini 4 |15 |- |iPad mini 3 | rowspan="2" |2014 | rowspan="2" |8 |12 |- |iPad Air 2 |15 |- |iPad mini 2 | rowspan="2" |2013 | rowspan="2" |7 | rowspan="2" |12 |- |iPad Air (gen 1) |- |iPad (gen 4) | rowspan="3" |2012 | rowspan="2" |6 |10 |- |iPad mini (gen 1) | rowspan="3" |9 |- |iPad (gen 3) |5 |- |iPad 2 |2011 |4 |- |iPad (gen 1) |2010 |3 |5 |} ===iPod touch=== {| class="wikitable" !Device !Released !First iOS !Max iOS |- |iPod touch (gen 7) |2019 |12 |15 |- |iPod touch (gen 6) |2015 |8 |12 |- |iPod touch (gen 5) |2012 |6 |9 |- |iPod touch (gen 4) |2010 |4 |6 |- |iPod touch (gen 3) |2009 |3 |5 |- |iPod touch (gen 2) |2008 |2 |4 |- |iPod touch (gen 1) |2007 |1 |3<br /> |} i0tmsnhhqf2al6cpk7v8qy60amn2o8u iPad Cellular to Wifi Conversion 0 592 1606 1605 2020-09-04T00:59:41Z Alan.l 19 1606 wikitext text/x-wiki [[File:iPad WiFi Chip List.png]] <br /> [[File:ipad-air-2-icloud-unlock.jpg]] <br /> ot5xvfp5ncp9ypqn77725etqalehpch iPad Component Compatibility 0 120 388 307 2020-01-07T05:31:55Z Chrisb 1 Changed redirect target from [[IPhone Component Compatibility]] to [[iPhone/iPad Component Compatibility]] 388 wikitext text/x-wiki #REDIRECT [[iPhone/iPad Component Compatibility]] hv6cv7ip78ojxjpufilnpkhucw3tj34 iPad Diode Measurements 0 1408 4994 4990 2020-10-11T05:57:37Z Chrisb 1 Chrisb moved page [[IPad Diode Measurements]] to [[iPad Diode Measurements]] without leaving a redirect 3050 wikitext text/x-wiki #REDIRECT [[iPad Diode Mode Measurements]] aggbnqu3yjlguyezp5dq4ujr0n6w7z6 iPad Diode Mode Measurements 0 106 5464 5443 2021-01-06T04:51:56Z Dusten04 30 iPad Pro 12.9 4th Generation Diode Measurements 5464 wikitext text/x-wiki ==iPad 5th Gen 2017== ===Overall View=== [[File:iPad 5 Overall View Edited.jpg|alt=iPad 5 Overall View Edited|800x800px]] ===Digitizer 1=== [[File:iPad 5 Digitizer 1 Edited.jpg|alt=iPad 5 Digitizer 1 Edited|800x800px]] ===Digitizer 2=== [[File:iPad 5 Digitizer 2 Edited.jpg|alt=iPad 5 Digitizer 2 Edited|800x800px]] ===Sim Card=== [[File:iPad 5 SIM.jpg|alt=iPad 5 SIM|800x800px]] ===Home Button=== [[File:iPad 5 Home Button Edited.jpg|alt=iPad 5 Home Button Edited|800x800px]] ===LCD=== [[File:iPad 5 LCD Edited.jpg|alt=iPad 5 LCD Edited|800x800px]] ===Power/Volume=== [[File:iPad 5 Power Button edited.jpg|alt=iPad 5 Power Button edited|800x800px]] ===Rear Camera=== [[File:iPad 5 Rear Camera Edited.jpg|alt=iPad 5 Rear Camera Edited|800x800px]] ===Front Camera=== [[File:iPad 5 Front Camera Edited.jpg|alt=iPad 5 Front Camera Edited|800x800px]] ===Headphone=== [[File:iPad 5 Headphone Jack Edited.jpg|alt=iPad 5 Headphone Jack Edited|800x800px]] ===Microphone=== [[File:iPad 5 Mic Edited.jpg|alt=iPad 5 Mic Edited|800x800px]] ===Charging Port=== [[File:iPad 5 Charging Port Edited.jpg|alt=iPad 5 Charging Port Edited|800x800px]] ==iPad 6th Gen== [[File:Overall Edited.jpg|800x800px]] ===Connector 1=== [[File:Connector 1 Edited.jpg|800x800px|iPad 6 Connector 1]] ===iPad 6 Connector 2=== [[File:iPad 6 Connector 2 Edited.jpg|alt=Connector Number 2|816x816px|Connector 2]] ===iPad 6 Connector 3=== [[File:Corrected iPad 6 3.jpg|800x800px]] ===Home button=== [[File:IPad 6 Home Button FPC Diode.jpg|800x800px]] ==iPad Pro 10.5== ===FPC Diode Readings=== [[File:Overall 1 Edited.jpg|800x800px]] ===Connector Number 1=== [[File:iPad Pro105 Connector 1 Edited.jpg|800x800px]] ===Connector Number 2=== [[File:iPad Pro105 Connector 2 Edited.jpg|800x800px]] ===Connector Number 3=== [[File:iPad Pro105 Connector 3 Edited.jpg|800x800px]] ===Connector 4=== [[File:iPad Pro105 Connector 4 Edited.jpg|800x800px]] ===Charging Port=== [[File:iPad Pro 105 Charging Port Edited.jpg|alt=iPad Pro 105 Charging Port Edited|800x800px]] ==iPad 7th Gen (2019)== ===Overall View=== [[File:iPad 10.2 Overall View 1 Edited.jpg|alt=iPad 10.2 Overall View 1 Edited|800x800px]] ===Digitizer Connector 1=== [[File:iPad 10.2 Digitizer Connector 1 Edited.jpg|alt=iPad 10.2 Digitizer Connector 1 Edited|800x800px]] ===Digitzer Connector 2=== [[File:iPad 10.2 Digi Connector 2 Edited.jpg|alt=iPad 10.2 Digi Connector 2 Edited|800x800px]] ===LCD Connector=== [[File:iPad 10.2 LCD Connector Edited.jpg|alt=iPad 10.2 LCD Connector Edited|800x800px]] ===Connector 4=== [[File:iPad 10.2 Connector 4 Edited.jpg|alt=iPad 10.2 Connector 4 Edited|800x800px]] ===Home Button Connector=== [[File:iPad 10.2 Home button connector Edited.jpg|alt=iPad 10.2 Home button connector Edited|800x800px]] ===SIM Connector=== [[File:iPad 10.2 SIM Connector Edited.jpg|alt=iPad 10.2 SIM Connector Edited|800x800px]] ==iPad Pro 11== ===Overall View=== [[File:iPad Pro 11 Overall View Edited.jpg|alt=iPad Pro 11 Overall View Edited|800x800px]] ===FPC 1=== [[File:iPad Pro 11 FPC 1 Edited.jpg|alt=iPad Pro 11 FPC 1 Edited|800x800px]] ===FPC 2=== [[File:iPad Pro 11 FPC 2 Edited.jpg|alt=iPad Pro 11 FPC 2 Edited|800x800px]] ===FPC 3=== [[File:iPad Pro 11 FPC 3 Edited.jpg|alt=iPad Pro 11 FPC 3 Edited|800x800px]] ===FPC 4=== [[File:iPad Pro 11 FPC 4 Edited.jpg|alt=iPad Pro 11 FPC 4 Edited|800x800px]] ===FPC 5=== [[File:iPad Pro 11 FPC 5 Edited.jpg|alt=iPad Pro 11 FPC 5 Edited|800x800px]] ===FPC 6=== [[File:iPad Pro 11 FPC 6 Edited.jpg|alt=iPad Pro 11 FPC 6 Edited|800x800px]] ===FPC 7=== [[File:iPad Pro 11 FPC 7 Edited.jpg|alt=iPad Pro 11 FPC 7 Edited|800x800px]] ===FPC 8=== [[File:iPad Pro 11 FPC 8 Edited.jpg|alt=iPad Pro 11 FPC 8 Edited|800x800px]] ===FPC 9=== [[File:iPad Pro 11 FPC 9 Edited.jpg|alt=iPad Pro 11 FPC 9 Edited|800x800px]] ===FPC 10=== [[File:iPad Pro 11 FPC 10 Edited.jpg|alt=iPad Pro 11 FPC 10 Edited|800x800px]] ===FPC 11=== [[File:iPad Pro 11 FPC 11 Edited.jpg|alt=iPad Pro 11 FPC 11 Edited|800x800px]] ===FPC 12=== [[File:iPad Pro 11 FPC 12 Edited.jpg|alt=iPad Pro 11 FPC 12 Edited|800x800px]] ===FPC 13=== [[File:iPad Pro 11 FPC 13 Edited.jpg|alt=iPad Pro 11 FPC 13 Edited|800x800px]] ===FPC 14=== [[File:iPad Pro 11 FPC 14 Edited.jpg|alt=iPad Pro 11 FPC 14 Edited|800x800px]] ==iPad Pro 12.9 1st Gen== ===Overall View 1=== [[File:iPad Pro 12.9 1st Gen Overall 1.jpg|alt=iPad Pro 12.9 1st Gen Overall 1|800x800px]] ===Overall View 2=== [[File:iPad Pro 12.9 1st Gen Overall 2.jpg|alt=iPad Pro 12.9 1st Gen Overall 2|800x800px]] ===Connector 1=== [[File:iPad Pro 12.9 1st Gen Connector 1.jpg|alt=iPad Pro 12.9 1st Gen Connector 1|800x800px]] ===Connector 2=== [[File:iPad Pro 12.9 1st Gen Connector 2.jpg|alt=iPad Pro 12.9 1st Gen Connector 2|800x800px]] ===Connector 3=== [[File:iPad Pro 12.9 1st Gen Connector 3.jpg|alt=iPad Pro 12.9 1st Gen Connector 3|800x800px]] ===Connector 4=== [[File:iPad Pro 12.9 1st Gen Connector 4.jpg|alt=iPad Pro 12.9 1st Gen Connector 4|800x800px]] ===Connector 5=== [[File:iPad Pro 12.9 1st Gen Connector 5.jpg|alt=iPad Pro 12.9 1st Gen Connector 5|800x800px]] ===Connector 6=== [[File:iPad Pro 12.9 1st Gen Connector 6.jpg|alt=iPad Pro 12.9 1st Gen Connector 6|800x800px]] ===Connector 7=== [[File:iPad Pro 12.9 1st Gen Connector 7.jpg|alt=iPad Pro 12.9 1st Gen Connector 7|800x800px]] ===Connector 8=== [[File:iPad Pro 12.9 1st Gen Connector 8.jpg|alt=iPad Pro 12.9 1st Gen Connector 8|800x800px]] ===Backlight IC=== [[File:iPad Pro 12.9 1stG Backlight.jpg|alt=iPad Pro 12.9 1stG Backlight|800x800px]] ===Tristar=== [[File:iPad Pro 129 1stG Tristar.jpg|alt=iPad Pro 129 1stG Tristar|800x800px]] ==iPad Pro 12.9 2nd Gen== ===Top FPC=== [[File:iPad Pro 12.9 2nd Gen Connector 1 Edited.jpg|alt=iPad Pro 12.9 2nd Gen Connector 1 Edited|800x800px]] ===Bottom FPC=== [[File:iPad Pro 12.9 2nd Gen Connector 2 .jpg|alt=iPad Pro 12.9 2nd Gen Connector 2 |800x800px]] ==iPad Pro 12.9 3rd Gen== iPad Pro 12.9 3rd Gen Diode Readings ===Overall View=== [[File:iPad Pro 1293 Overall.jpg|800x800px]] ===Connector 1=== [[File:iPad Pro 1293 Connector 1 Water.jpg|800x800px]] ===Connector 2=== [[File:iPad Pro 1293 Connector 2 Water-2.jpg|800x800px]] ===Connector 3=== [[File:iPad Pro 12.9 3rd Gen Connector 3.jpg|800x800px]] ===Connector 4=== [[File:iPad Pro 12.9 3rd Gen Connector 4.jpg|800x800px]] == iPad Pro 12.9 4th Gen == Overall View: [[File:iPad Pro 129 4th Overall View Edited.jpg|alt=iPad Pro 129 4th Overall View Edited|800x800px]] Charging Port: [[File:iPad Pro 129 4th Gen Charging Port Edited.jpg|alt=iPad Pro 129 4th Gen Charging Port Edited|800x800px]] C1: [[File:iPad Pro 129 4th Gen C1 Edited.jpg|alt=iPad Pro 129 4th Gen C1 Edited|800x800px]] C2: [[File:iPad Pro 129 4th Gen C2 Edited.jpg|alt=iPad Pro 129 4th Gen C2 Edited|800x800px]] C3: [[File:iPad Pro 129 4th Gen C3 Edited.jpg|alt=iPad Pro 129 4th Gen C3 Edited|800x800px]] C4: [[File:iPad Pro 129 4th Gen C4 Edited.jpg|alt=iPad Pro 129 4th Gen C4 Edited|800x800px]] C5: [[File:iPad Pro 129 4th Gen C5 Edited.jpg|alt=iPad Pro 129 4th Gen C5 Edited|800x800px]] C6: [[File:iPad Pro 129 4th Gen C6 Edited.jpg|alt=iPad Pro 129 4th Gen C6 Edited|800x800px]] C7: [[File:iPad Pro 129 4th Gen C7 Edited.jpg|alt=iPad Pro 129 4th Gen C7 Edited|800x800px]] C8: [[File:iPad Pro 129 4th Gen C8 Edited.jpg|alt=iPad Pro 129 4th Gen C8 Edited|800x800px]] C9: [[File:iPad Pro 129 4th Gen C9 Edited.jpg|alt=iPad Pro 129 4th Gen C9 Edited|800x800px]] C10: [[File:iPad Pro 129 4th Gen C10 Edited.jpg|alt=iPad Pro 129 4th Gen C10 Edited|800x800px]] C11: [[File:iPad Pro 129 4th Gen C11 Edited.jpg|alt=iPad Pro 129 4th Gen C11 Edited|800x800px]] C12: [[File:iPad Pro 129 4th Gen C12 Edited.jpg|alt=iPad Pro 129 4th Gen C12 Edited|800x800px]] C13: [[File:iPad Pro 129 4th Gen C13 Edited.jpg|alt=iPad Pro 129 4th Gen C13 Edited|800x800px]] C14: [[File:iPad Pro 129 4th Gen C14 Edited.jpg|alt=iPad Pro 129 4th Gen C14 Edited|800x800px]] C15: [[File:iPad Pro 129 4th Gen C15 Edited.jpg|alt=iPad Pro 129 4th Gen C15 Edited|800x800px]] C16: [[File:iPad Pro 129 4th Gen C16 Edited.jpg|alt=iPad Pro 129 4th Gen C16 Edited|800x800px]] C17: [[File:iPad Pro 129 4th Gen C17 Edited.jpg|alt=iPad Pro 129 4th Gen C17 Edited|800x800px]] C18: [[File:iPad Pro 129 4th Gen C18 Edited.jpg|alt=iPad Pro 129 4th Gen C18 Edited|800x800px]] ==iPad Mini 4== ===Overall View=== [[File:iPad Mini 4 Overall View Edited.jpg|alt=iPad Mini 4 Overall View Edited|800x800px]] ===LCD Connector=== [[File:iPad Mini 4 LCD Edited.jpg|alt=iPad Mini 4 LCD Edited|800x800px]] ===Digitizer Connector=== [[File:iPad Mini 4 Digi Edited.jpg|alt=iPad Mini 4 Digi Edited|800x800px]] ===Battey Connector=== [[File:iPad Mini 4 Battery Edited.jpg|alt=iPad Mini 4 Battery Edited|800x800px]] ===Volume Flex=== [[File:iPad Mini 4 Volume Mic Edited.jpg|alt=iPad Mini 4 Volume Mic Edited|800x800px]] ===Rear Camera=== [[File:iPad Mini Rear Camera Edited.jpg|alt=iPad Mini Rear Camera Edited|800x800px]] ===Power Flex=== [[File:iPad Mini 4 Power Button Edited.jpg|alt=iPad Mini 4 Power Button Edited|800x800px]] ===Front Camera=== [[File:iPad Mini 4 Front Camera Edited.jpg|alt=iPad Mini 4 Front Camera Edited|800x800px]] ===Headphone Jack=== [[File:iPad Mini 4 Headphone Jack Edited.jpg|alt=iPad Mini 4 Headphone Jack Edited|800x800px]] ==iPad Mini 5== ===iPad Mini 5 Overall View=== [[File:iPad Mini 5 Overall Edited.jpg|alt=iPad Mini 5 Overall Edited|1067x1067px]] ===iPad Mini 5 Connector 1=== [[File:iPad mini 5 Connector 1 Edited.jpg|alt=iPad mini 5 Connector 1 Edited|1067x1067px]] ===iPad mini 5 Connector 2 Edited=== [[File:iPad Mini 5 Connector 2 Edited.jpg|alt=iPad Mini 5 Connector 2 Edited|1067x1067px]] ===iPad Mini 5 Connector 3 Edited=== [[File:iPad Mini 5 Connector 3 Edited.jpg|alt=iPad Mini 5 Connector 3 Edited|1067x1067px]] ===iPad Mini 5 Battery Connector=== [[File:iPad Mini 5 Battery Connector.jpg|alt=iPad Mini 5 Battery Connector|1067x1067px]] ===iPad Mini 5 4G Antenna=== [[File:iPad Mini 5 4G Antenna Edited.jpg|alt=iPad Mini 5 4G Antenna Edited|1067x1067px]] ===iPad Mini 5 4G Antenna Edited=== [[File:iPad Mini 5 Charging Port Edited.jpg|alt=iPad Mini 5 Charging Port Edited|800x800px]] ===iPad Mini 5 Front Camera Edited=== [[File:iPad Mini 5 Front Camera Edited.jpg|alt=iPad Mini 5 Front Camera Edited|1067x1067px]] ===iPad Mini 5 Front Mic Edited=== [[File:iPad Mini 5 Front Mic Edited.jpg|alt=iPad Mini 5 Front Mic Edited|1067x1067px]] ===iPad Mini 5 Headphone Jack Edited=== [[File:iPad Mini 5 Headphone Jack Edited.jpg|alt=iPad Mini 5 Headphone Jack Edited|1067x1067px]] ===iPad Mini 5 Power Button Edited=== [[File:iPad Mini 5 Power Button Edited.jpg|alt=iPad Mini 5 Power Button Edited|1067x1067px]] ===iPad Mini 5 Rear Camera Edited=== [[File:iPad Mini 5 Rear Camera Edited.jpg|alt=iPad Mini 5 Rear Camera Edited|1067x1067px]] ==iPad Air 3== ===Connector 1 and 2=== [[File:iPad Air 3 Final FPC 1 and 2.jpg|alt=iPad Air 3 Final FPC 1 and 2|800x800px]] ===Connector 3 and 4=== [[File:iPad Air 3 Final DM.jpg|alt=iPad Air 3 Final DM|800x800px]] ===Headphone Jack=== [[File:iPad Air 3 Headphone Jack.jpg|alt=iPad Air 3 Headphone Jack|800x800px]] ===iPad Air 3 Front Camera=== [[File:iPad Air 3 Front Camera.jpg|alt=iPad Air 3 Front Camera|800x800px]] ===Power Button=== [[File:iPad Air 3 Power Button.jpg|alt=iPad Air 3 Power Button|800x800px]] ===Top Mic=== [[File:iPad Air 3 Top Mic.jpg|alt=iPad Air 3 Top Mic|800x800px]]<br /> __NEWSECTIONLINK__ [[Category:iPad]] 7xisee21dnbpbwdz7te7s54ur6fjd2z iPad Laminated Display Sizing 0 1818 5344 5343 2020-12-19T00:45:13Z PaladinJax 199 5344 wikitext text/x-wiki These measurements were taken with the opposite side of the LCD on these models facing forward. Example seen on the right. The depth measures the LCD offset to the glass, and the glass+LCD thickness measures the combined thickness of both on the left side of the iPad (This is because on some models such as Air 2 and Pro 12.9 have a raised edge on the right side of the LCD). <br /> [[File:iPadLaminatedOrientation.jpg|thumb|The orientation in which measurements are taken.]] <br /> {| class="wikitable" |+ Measurements for Laminated Displays ! !iPad Air 2nd Gen !iPad Mini 4th Gen !iPad Pro 12.9" 1st Gen !iPad Pro 9.7" 1st Gen !iPad Pro 10.5" !iPad Pro 12.9" 2nd Gen !iPad Pro 11" !iPad Pro 12.9" 3rd Gen !iPad Air 3rd Gen !iPad Mini 5th Gen !iPad Pro 11" 4th Gen !iPad Pro 12.9" 4th Gen !iPad Air 4th Gen |- |Glass Thickness |0.6mm |0.5mm | | |0.5mm |0.5mm | | | | | | | |- |Glass+LCD Thickness |2.7mm |2.6mm | | |2.4mm |2.6mm | | | | | | | |- |Camera Side Depth |15.8mm/17mm |16.3mm | | |14.5mm |16.8mm | | | | | | | |- |Home Button Side Depth |13mn |13.2mm | | |10.3mm |13.4mm | | | | | | | |- |Left Offset Depth |3.8mm |1.9mm | | |2mm |5.8mm | | | | | | | |- |Right Offset Depth |3.4mm |1.9mm | | |1.9mm |4.4mm | | | | | | | |} 3ovawj226n00c8rv46lem0exemqib2h iPad Pro Pictures 0 65 585 371 2020-02-02T11:38:33Z Piernov 10 Category iPad 585 wikitext text/x-wiki {{DISPLAYTITLE:iPad Pro Pictures}} ==iPad Pro 9.7" 1st Gen WiFi== ==iPad Pro 9.7" 1st Gen Cellular== ==iPad Pro 12.9" 1st Gen Wifi== ==iPad Pro 12.9" 1st Gen Cellular== ==iPad Pro 10.5" 2nd Gen WiFi== ==iPad Pro 10.5" 2nd Gen Cellular== ==iPad Pro 12.9" 2nd Gen Wifi== [[File:IPad_Pro_12.9_2nd_Gen_WiFi.jpg|512x512px]][[File:IPad_Pro_12.9_2nd_Gen_WiFi_4.jpg|400x400px]]<br><br> [[File:IPad_Pro_12.9_2nd_Gen_WiFi_3.jpg|400x400px]][[File:IPad_Pro_12.9_2nd_Gen_WiFi_2.jpg|400x400px]]<br><br> [[File:IPad_Pro_12.9_2nd_Gen_WiFi_5.jpg|600x600px]] ==iPad Pro 12.9" 2nd Gen Cellular== ==iPad Pro 11" 3nd Gen WiFi== [[File:iPad_Pro_11"_3rd_Gen_WiFi.jpg|link=File:iPad_Pro_11%22_3rd_Gen_WiFi.jpg|400x400px]][[File:iPad_Pro_11"_3rd_Gen_WiFi_Screen_(Camera_&_IR_Sensors).jpg|link=File:iPad_Pro_11%22_3rd_Gen_WiFi_Screen_(Camera_&_IR_Sensors).jpg|400x400px]]<br><br>[[File:iPad_Pro_11"_3rd_Gen_WiFi_Screen_Cables.jpg|link=File:iPad_Pro_11%22_3rd_Gen_WiFi_Screen_Cables.jpg|400x400px]][[File:iPad_Pro_11"_3rd_Gen_WiFi_Logic_Board_(Fulll).jpg|link=File:iPad_Pro_11%22_3rd_Gen_WiFi_Logic_Board_(Fulll).jpg|545x545px]]<br><br>[[File:iPad_Pro_11"_3rd_Gen_WiFi_Logic_Board_(Screen_Connectors).jpg|link=File:iPad_Pro_11%22_3rd_Gen_WiFi_Logic_Board_(Screen_Connectors).jpg|400x400px]][[File:iPad_Pro_11"_3rd_Gen_WiFi_Logic_Board_(Top,_Speaker_Section).jpg|link=File:iPad_Pro_11%22_3rd_Gen_WiFi_Logic_Board_(Top,_Speaker_Section).jpg|400x400px]] <br /> ==iPad Pro 11" 3nd Gen Cellular== ==iPad Pro 12.9" 3nd Gen Wifi== ==iPad Pro 12.9" 3nd Gen Cellular== [[Category:iPad]] p9sa7rkidnx7h8pgmfuf8zpyjoufa5f iPad Pro Touch Filter 0 146 6641 586 2022-10-08T17:14:57Z Kroman 522 first image is incorrectly labeled as a blown touch filter, it is actually a blown backlight filter. edited to properly address it as a good indicator of a blown touch filter. Also added where to find replacements for blown backlight filters. 6641 wikitext text/x-wiki There is a very common issue on the iPad Pros (Specifically the 12.9" 1st and 2nd Generations) where if the LCD/Digitizer Flex is unplugged without disconnecting the battery connection, a Filter corresponding with touch will blow and needs to be replaced to restore touch functionality. [[File:Blown Touch Filter.jpg|alt=Blown Backlight Filter, a good indicator of a blown touch filter.|thumb|Blown Backlight Filter, a good indicator of a blown touch filter.]] Disconnect battery, check for continuity on Filter next to small capacitor as shown in the second image. If no continuity, Filter/Coil is blown. Replace with a Coil with rating of 240ohms-350ma. Or take coil from Donor iPad Mini 1 like in the last image. Additionally, iPhone 6S touch filters can also be used (components L4211 and L4212 on 6s). If the backlight filter is also blown, a 120ohm, 1.5a, size 0402 replacement can be found on iPad 4 (L2201), iPad 3 (L2201, L5761, L5760, L5714), iPad 2 (L2201, L5761, L5760, L5714), iPad Mini (L2201), iPad Mini 2 (L2201), and iPad Air (L7001). [[File:What to look for.png|alt=What to look for|thumb|What to look for]] <br /> [[File:FPC Measurements.png|alt=FPC Measurements|thumb|FPC Measurements]] [[File:Replacement Filter- Coils.png|alt=Replacement Filter/ Coils|thumb|Replacement Filter/ Coils]] <br /> [[Category:iPad]] 3kp1e2omo8q6ahgz3hltmw6a8rhvj3c iPad Repair Tips 0 746 1575 2020-08-28T17:36:00Z Chrisb 1 Created page with "<br /> ==== General ==== * It's good practice to unplug the battery from the iPad before unplugging the LCD, digitizer, and other extremities. These can result in mysterious..." 1575 wikitext text/x-wiki <br /> ==== General ==== * It's good practice to unplug the battery from the iPad before unplugging the LCD, digitizer, and other extremities. These can result in mysterious issues (such as digitizer functioning in a "wonky" fashion, LCD Backlight staying off until reboot, etc.) and there have been reports of more severe happenings online. It's best to just unplug it to be safe. ==== iPad 2 ==== * When removing screens, be '''extremely''' careful when using the iSesamo on the entire left edge, and the upper right corner; It's easy to hurt the digitizer and the power/volume button cables when not careful, similar to the wifi antenna. * '''Always''' heat the outer edge of the digitizer when removing or re-seating it, at least when salvaging a good digitizer, or reseating a new one. Even when it doesn't feel like you're putting heavy force onto the glass of the digitizer, the resistance from the adhesive '''will''' put additional stress, exponentially increasing the likelihood of breaking it. ==== iPad Mini ==== * Large EMI shield that is directly below the LCD screen is VERY SHARP.Be careful when removing as you very well can slice your finger on the edges of this shield * When installing a new digitizer, check the solder contacts at the bottom of the digitizer, and make sure the contacts are either taped with fabric tape or kapton tape. If not, cover with a strip(s) of kapton tape. This can often times resolve issues where the power button is non-functional. * Check to see if digitizer or LCD cables are loose when diagnosing/troubleshooting. With the shield removed it's easy for the two to become disconnected. * Check to see that the volume/power button cable is loose when diagnosing/troubleshooting. A loose cable can result in mysterious outputs, such as a power button that doesn't work when pressed once, but fully functions when held down, etc. * Digitizer and LCD connectors are '''very''' fragile... Be extra gentle when removing or plugging in either or '''the ports will break.''' * Check the male connectors when installing a digitizer, LCD, or similar snap-in connector. Anomalies in the connectors - such as a bent pin - can result in damaging the female connector end upon install by breaking teeth, etc. * When trying to solder a new female connector for the digitizer (And the same rule can be stated for the LCD connector, battery, and extremities connectors as well), be '''extra''' careful to not use too much force after heating the old, broken port. The pads on these logic boards tear off incredibly easy, which will lead to a much more difficult overall repair, if repairable. * When soldering a new home button on the digitizers, make sure both the cable for the button assembly, and the cable with the solder points are perfectly aligned. An efficient way to do this is to use the two holes that are present on both cables and align them flush. If you feel as though the cables will move while you're trying to solder, using kapton tape on both sides of the cable (Past the solder points of course) can help keep the cable aligned while you solder them down with fresh solder and flux. * When installing a new digitizer or replacing the old one, make sure to check the flex cable is not kinked or creased. The cable should bend in, but '''not be creased'''. A crease or kink in the flex will most likely result in the digitizer breaking. ==== iPad Air ==== * When removing a good digitizer for repair or testing, work around the touch IC on the bottom right side of the digitizer. Use heat and the iSesamo on the outside from the top, left, and bottom sections. Use guitar picks periodically to keep the screen open. When you get to the right side of the digitizer, use the guitar pick instead of the iSesamo and be very careful about halfway down the right side of the screen, so as to not put pressure on the touch IC. Once you loosen it somewhat, you can try to see if it will pry up, but don't use excessive force to do so. This care is crucial to keep from damaging the touch IC. ==== iPad 2-4 Cellular ==== * When removing the LCD and digitizer '''DO NOT''' use a shim on the upper section of the battery terminal!! This will likely tear the ribbon cable connecting the CDMA or GMA card to the logic board. axgkc14ejg03q81sgnwnnfyqllnmcdx iPhone/iPad Component Compatibility 0 119 6459 5775 2022-04-05T14:18:21Z Zaim 686 added iPad models 6459 wikitext text/x-wiki <br /> {| class="wikitable sortable" |+ |iPhone Chip Cross Refrence |Chip |Alias | | colspan="19" |iPhone | | colspan="7" |iPad |- | | | | |5 |5C |5s |6 |6+ |6s |6s+ |7 |7+ |SE |8 |8+ |X |XR |XS |XS MAX |11 |11 Pro |11 Pro Max | |iPad Air |iPad Air 2 |iPad 4 |iPad Mini 1 |iPad Mini Ret 2/3 |iPad Pro 11" |iPad Pro 12" 3rd |- |Display Driver/Power IC |TI 65730a0p |Chestnut | | ----- |U3 |U3 |U1501 |U1501 |U4000 |U4000 |U3703 |U3703 |U4000 |U5600 |U5600 | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |USB Logic & Charging IC |NXP 1608A1 |Tristar | |U2 | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- |<nowiki>-----</nowiki> | | | | ----- | ----- |U5900 |U1300 | ----- | | |- |USB Logic & Charging IC |NXP 1610A1 |Tristar | | ----- |U2 |U2 | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- |<nowiki>-----</nowiki> | | | | ----- | ----- | ----- | ----- |U1300 | | |- |USB Logic & Charging IC |NXP 1610A2 |Tristar | | ----- | ----- | ----- |U1700 |U1700 | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- |<nowiki>-----</nowiki> | | | |U3500 |U3500 | ----- | ----- | ----- | | |- |USB Logic & Charging IC |NXP 1610A3 |Tristar | | ----- |U2 |U2 |U1700 |U1700 |U4500 |U4500 | ----- | ----- |U4500 | ----- | ----- | ----- | ----- | ----- | ----- |<nowiki>-----</nowiki> | | | | | | | | | | |- |USB Logic & Charging IC |NXP 610A3B |Tristar | | ----- |U2 |U2 |U1700 |U1700 |U4500 |U4500 |U4001 |U4001 |U4500 | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | |U3650 |U3650 |- |USB Logic & Charging IC |NXP 610A3C |Tristar | | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | |U3650 |U3650 |- |Gas Guage Mosfet | | | | ----- | | | | | | |Q2012 |Q2012 | |Q3200/Q3201 |Q3200/Q3201 |Q3200/Q3201 | | | | | | | | | | | | | | |- |Charging Logic IC |NXP1612A1 |Hydra | | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- |U6300 |U6300 |U6300 |U6300 |U6300 |U6300 |U3300 |U6300 |U6300 | | | | | | | | |- |Charging Triode |CSD68813W10 | | | ----- | ----- |Q2 | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |Charging Mosfet |CSD68815w15 |"Charging Mosfet | | ----- | ----- |Q4 |Q1403 |Q1403 |Q2300 | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |Charging Mosfet |CSD68841W |Charging Mosfet | | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- |Q3350 |Q3350 | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |Charging IC |TI SN2400AB0 |Tigris | | ----- | ----- | ----- | ----- | ----- |U2300 |U2300 |U2300 |U2300 | ----- | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |charging IC |TISN2501A1 |Tigris | | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- |U3300 |U3300 |U3300 | ----- | ----- | ----- | | | | | | | | | | | |- |Wireless charging IC |BC59355A2 |Iktara | | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- |U3400 |U3400 |U3400 | ----- | ----- | ----- | | | | | | | | | | | |- |Strobe/Flash Driver/Boodst IC |LM3564A1TMX | | | ----- | ----- |U17 |U1602 |U1602 |U3300 |U3300 | ----- | ----- |U3300 | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |Digitizer/Touchsreen Controller Chip |TI343S0645 |Sage | |U14 |U15 |U15 | ----- | ----- | ----- | ----- | ----- | ----- |U4300 | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |Digitizer/Touchsreen Controller Chip |TI343S0694 |Meson | | ----- | ----- | ----- |U2402 |U2402 | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |Touchscreen IC |BCM5976 |Cumulus | |U12 |U12 |U12 |U2401 |U2401 | ----- | ----- | ----- | ----- |U4301 | ----- | ----- | ----- | ----- | ----- | ----- | | | | |U6600/U6650 |U4100/U41500 | ----- | ----- | ----- | | |- |TouchID Driver |TILM3638 |? | | ----- | ----- |U10 |U1503 |U1503 |U4040 |U4040 | ----- | ----- |U4040 | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |Touchscreen Power IC |IC 3373A |Acorn | | | | | | | | | | | | | |U5600 | |U5600 |U5600 | | | | | | | | | | | |- |Touch ID Power IC |LP5907UVX 1.8 | | | ----- | ----- | ----- |U2100 |U2100 | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |PMIC |338S1216 A2 |Amber | | ----- | ----- |U7 | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |PMIC/Power Man IC |338S1251-AZ |Adi | | ----- | ----- | ----- |U1202 |U1202 | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |PMIC |338S00155 A1 |Antigua | | ----- | ----- | ----- | ----- | ----- |U2000 |U2000 | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |PMIC |338S00225-A1 |Adelyn | | ----- | ----- | ----- | ----- | ----- | ----- | ----- |U1801 |U1801 | ----- | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |PMIC |338S00309-B0 | | | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- |U2700 |U2700 | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |Baseband PMIC |PM8018 | | | ----- |U2_RF |U2_RF | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |Baseband PMIC |PM8019 | | | ----- | ----- | ----- |U_PMICRF |U_PMICRF | ----- | ----- | ----- | ----- |U_PMICRF | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |Baseband PMIC |PMD9635 | | | ----- | ----- | ----- | ----- | ----- |U_PMU_RF |U_PMU_RF | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |Baseband PMIC - Qualcomm |PMD9655 |Qualcomm | | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- |U_MDM_E |U_MDM_E |U_MDM_E | ----- | ----- | ----- | | | | | | | | | | | |- |Camera LDO IC |LP5907UVX 2.85 | | | ----- | ----- |U210 |U2301 |U2301 | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |Backlight Driver/Boost Chip |LM3534TMX | | | ----- |U23 |U23 |U1502 |U1502/U1580 | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |Backlight Driver/Boost Chip |LM3539A0YFFR | | | ----- | ----- | ----- | ----- | ----- |U4020/U4050 |U4020/U4050 |U3701 |U4601/U3701 |U4020 |U5650 |5660 | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |Speaker Amp/Audio IC |338S1202 | | | ----- | ----- |U22 |U1601 |U1601 | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |Speaker Amp/Audio IC |338S1285 | | | ----- | ----- | ----- | ----- | ----- |U3700 |U3700 | ----- | ----- |U3700 | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |Speaker Amp/Audio IC |338S00295 | | | ----- | ----- | ----- | ----- | ----- | ----- | ----- |U3502? |U3402/U3502? | ----- |U5000 |U5000/U5100 |U4900/U5000 | ----- | ----- | ----- | | | | | | | | | | | |- |Audio Codec |338S1201 | | | ----- | ----- |U21 |U0900 |U0900 | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |Audio Codec |338S00105 | | | ----- | ----- | ----- | ----- | ----- |U3500 |U3500 |U3500 |U3500 |U3500 | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |Wifi/Bluetooth IC |339S0228/339S0231/339S0242 | | | ----- | ----- | ----- |U5201_RF |U5201_RF | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |NFC Boost IC |AS3923 |Stockholm | | ----- | ----- | ----- |U5302_RF |U5302_RF | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | | | | | | | | | | | |- |LCD FPC Connector | | | |J5 |J5 | | | | | | | | | | | | | | | | | | | | | | | | | |- |LCD FPC Connector | | | | | | |J2019 | | | | | | | | | | | | | | | | | | | | | | | |- |LCD Connector | | | | | |J5 | | | | | | | | | | | | | | | | | | | | | | | | |- |LCD FPC Connector | | | | | | | |J2019 | | | | | | | | | | | | | | | | | | | | | | |- |Digitizer Connector | | | | |J4 |J4 | | | | | | | | | | | | | | | | | | | | | | | | |- |Digitizer Connector | | | | | | |J2401 | | | | | | | | | | | | | | | | | | | | | | | |- |Digitizer Connector | | | | | | | |J2401 | | | | | | | | | | | | | | | | | | | | | | |- |Digitizer Connector | | | | | | | | | |J4200 | | | | | | | | | | | | | | | | | | | | |- |Digitizer Connector | | | | | | | | | | |J4502 | | | | | | | | | | | | | | | | | | | |- |Digitizer Connector | | | | | | | | | | | | | |J5700 | | | | | | | | | | | | | | | | |- |Battery FPC Connector | | | | | | |J2523 | | | | | | | | | | | | | | | | | | | | | | | |- |Battery FPC Connector | | | | | | | |J2525 |J2400 |J2400 | | | | | | | | | | | | | | | | | | | | |- |Home Button FPC Connector | | | | | | |J2118 | | | | | | | | | | | | | | | | | | | | | | | |- |Home Button FPC Connector | | | | | | | |J2118 | | | | | | | | | | | | | | | | | | | | | | |- |Home Button FPC Connector | | | | | | | | |J4100 |J4100 | | | | | | | | | | | | | | | | | | | | |- |Charging Port Connec tor | | | | |J7 |J7 | | | | | | | | | | | | | | | | | | | | | | | | |- |Charging Port FPC Dock Connector | | | | | | |J1817 | | | | | | | | | | | | | | | | | | | | | | | |- |Charging Port FPC Dock Connector | | | | | | | |J1817 | | | | | | | | | | | | | | | | | | | | | | |- |Charging Port FPC Dock Connector | | | | | | | | |J4600 |J4600 | | | | | | | | | | | | | | | | | | | | |- |Charging Port FPC Dock Connector | | | | | | | | | | | | | |J6400 |J6400 | | | | | | | | | | | | | | | |- |Power Volume Connector | | | | |J2 |J2 | | | | | | | | | | | | | | | | | | | | | | | | |- |Backlight Filter Fuse |240Ohm 350Ma 0201 | | |X |X |X |X |X |X |X | | | | | | | | | | | | | | | | | | | | |- |Ferrite Bead Filter |120Ohm 201MA 01005 | | |X |X |X |X |X |X |X | | | | | | | | | | | | | |X | | | | | | |} {{DISPLAYTITLE:iPhone/iPad Component Compatibility}} [[Category:iPhone 5]] [[Category:iPhone 5c]] [[Category:iPhone 5s]] [[Category:iPhone 6]] [[Category:iPhone 6+]] [[Category:iPhone 6s]] [[Category:iPhone 6s+]] [[Category:iPhone 7]] [[Category:iPhone 7+]] [[Category:iPhone 8]] [[Category:iPhone 8+]] [[Category:iPhone SE]] [[Category:iPhone X]] [[Category:iPhone XR]] [[Category:iPhone XS]] [[Category:iPhone XS Max]] [[Category:iPad]] 0add7jictsjlcbfemmdbfisnbzub0nt iPhone/iPad Tristar 0 39 587 378 2020-02-02T11:39:08Z Piernov 10 Category iPad iPhone 587 wikitext text/x-wiki {{DISPLAYTITLE:iPhone/iPad Tristar}} For compatibility see [[iPhone/iPad Component Compatibility]] [[File:IPhone-iPad Tristar 3.jpg|800x800px]] [[Category:iPad]] [[Category:iPhone]] dr9p3lfmzixlgklh3inbjsrljy0l7ds iPhone 11 Pro Smart Case Teardown 0 287 737 736 2020-02-18T23:53:21Z Chrisb 1 737 wikitext text/x-wiki This case does not have an ISL9240. [[File:iPhone 11 Smart Case 01.jpg|800x800px]] [[File:iPhone 11 Smart Case 02.jpg|800x800px]] [[File:iPhone 11 Smart Case 03.jpg|800x800px]] [[File:iPhone 11 Smart Case 04.jpg|800x800px]] [[File:iPhone 11 Smart Case 05.jpg|800x800px]] [[File:iPhone 11 Smart Case 06.jpg|800x800px]] [[File:iPhone 11 Smart Case 07.jpg|800x800px]] [[File:iPhone 11 Smart Case 08.jpg|800x800px]] [[File:iPhone 11 Smart Case 09.jpg|800x800px]] [[File:iPhone 11 Smart Case 10.jpg|800x800px]] [[File:iPhone 11 Smart Case 11.jpg|800x800px]] [[File:iPhone 11 Smart Case 12.jpg|800x800px]] [[File:iPhone 11 Smart Case 13.jpg|800x800px]] [[File:iPhone 11 Smart Case 14.jpg|800x800px]] [[File:iPhone 11 Smart Case 15.jpg|800x800px]] [[File:iPhone 11 Smart Case 16.png|800x800px]] [[File:iPhone 11 Smart Case 17.png|800x800px]] [[File:iPhone 11 Smart Case 18.png|800x800px]] [[File:iPhone 11 Smart Case 19.png|800x800px]] rp83dh1fv50ntb0vcxoil2um1px0dua iPhone 12 Pro Diode Mode Measurements 0 1724 5103 2020-10-23T16:24:36Z Chrisb 1 Redirected page to [[iPhone Diode Mode Measurements#iPhone 12 Pro]] 5103 wikitext text/x-wiki #REDIRECT [[iPhone Diode Mode Measurements#iPhone 12 Pro]] 7itjmguz1pllp309201k0w6nlp7nm3v iPhone Board Swap 0 2046 6127 6126 2021-09-28T17:02:43Z Chrisb 1 6127 wikitext text/x-wiki iPhones up to and including the 6 for data only: * CPU * NAND * Logic EEPROM If you want a fully functional phone: * Baseband * Baseband EEPROM iPhones 6s and newer for data only: * CPU * NAND * Logic EEPROM If you want a fully functional phone: * Baseband * Baseband EEPROM * WIFI IC twap6apd9abacbk0ubhy2d62d8beer9 iPhone Component Compatibility 0 121 306 289 2019-12-11T04:02:45Z Chrisb 1 Chrisb moved page [[IPhone Component Compatibility]] to [[iPhone Component Compatibility]] without leaving a redirect: Case 289 wikitext text/x-wiki #REDIRECT [[iPhone/iPad Component Compatibility]] {{DISPLAYTITLE:iPhone Component Compatibility}} 216by5p969pg6srvgjd8vv8s2hio79p iPhone Diode Measurements 0 1415 3064 2020-10-06T15:52:46Z Chrisb 1 Chrisb moved page [[iPhone Diode Measurements]] to [[iPhone Diode Mode Measurements]] 3064 wikitext text/x-wiki #REDIRECT [[iPhone Diode Mode Measurements]] 5mjsqlh49gb91rcop0jl4v6mfcebxh6 iPhone Diode Mode Measurements 0 164 7734 7733 2024-12-31T14:12:59Z Dfcloud6 1726 typo fix 7734 wikitext text/x-wiki ==iPhone 14 Pro Max== Battery Connector: <br /> [[File:iPhone 14 Pro Max Battery Connector.jpg|alt=iPhone 14 Pro Max Battery Connector|800x800px|iPhone 14 Pro Max Battery Connector]]<br /> Charging Port Connector: <br /> [[File:iPhone 14 Charging Port.jpg|alt=iPhone 14 Pro Max Battery Connector|977x977px]]<br /> Display Connector: <br /> [[File:iPhone 14 Pro Max Display Connector.jpg|alt=iPhone 14 Pro Max Display Connector|921x921px]]<br /> Power Button Connector: <br /> [[File:iPhone 14 Pro Max Power Button Connector.jpg|alt=iPhone 14 Pro Max Power Button Connector|800x800px]]<br /> ==iPhone 13 Pro Max== LCD & TOUCH [[File:lcd and touch 13pm dfcloud6.jpg|998x998px]] CHARGE DOCK+VBATT+PWRKEY+5G [[File:charge fpc 13pm dfcloud6.jpg|998x998px]] RF [[File:RF 13pm dfcloud6.jpg|998x998px]] ALS+IR-CAM+TORCH+LIDAR [[File:ALS and IRCAM 13pm dfcloud6(2).jpg|998x998px]] FCAM+WIDECAM+ULTRA-WIDECAM [[File:CAMERAS 13pm dfcloud6.jpg|998x998px]] <br /> ==iPhone 13== LCD & TOUCH [[File:lcd iphone 13 dfcloud6.jpg|998x998px]] ALS+IR-CAM+TORCH+SIM-CARD [[File:als iphone 13 dfcloud6.jpg|998x998px]] RF [[File:rf iphone 13 dfcloud6.jpg|998x998px]] DOCK+VBATT+PWRKEY [[File:dock iphone 13 dfcloud6.jpg|998x998px]] CAMERAS [[File:cameras iphone 13 dfcloud6.jpg|998x998px]] ==iPhone 12 Pro Max== Charging Port [[File:iPhone 12 Pro Max Charging Port.webp|alt=iPhone 12 Pro Max Charging Port]] ==iPhone 12 Pro== FPC 1 and 2: [[File:iPhone 12 Pro FPC 1 and 2.png|alt=iPhone 12 Pro FPC 1 and 2|800x800px]] FPC 3 4 and 5: [[File:iPhone 12 Pro FPC 3, 4 and 5.png|alt=iPhone 12 Pro FPC 3, 4 and 5|800x800px]] FPC 6, 7 and 8: [[File:iPhone 12 Pro FPC 6, 7 and 8.png|alt=iPhone 12 Pro FPC 6, 7 and 8|800x800px]] FPC 9: [[File:iPhone 12 Pro FPC 9.png|alt=iPhone 12 Pro FPC 9|800x800px]] FPC 10: [[File:iPhone 12 Pro FPC 10.png|alt=iPhone 12 Pro FPC 10|800x800px]] FPC 11: [[File:iPhone 12 Pro FPC 11.png|alt=iPhone 12 Pro FPC 11|800x800px]] FPC 12: [[File:iPhone 12 Pro FPC 12.png|alt=iPhone 12 Pro FPC 12|800x800px]] FPC 13 and 14: [[File:iPhone 12 Pro FPC 13 and 14.png|alt=iPhone 12 Pro FPC 13 and 14|800x800px]] FPC 15 and 16: [[File:iPhone 12 Pro FPC 15 and 16.png|alt=iPhone 12 Pro FPC 15 and 16|800x800px]] ==iPhone 11== Overall View: <br> [[File:iPhone 11 Overall View 1.jpg|800x800px]]<br> Overall View 2: <br> [[File:iPhone 11 Overall View 2.jpg|800x800px]]<br> Connector 1: <br> [[File:iPhone 11 Connector 1.jpg|800x800px]]<br> Connector 2: <br> [[File:iPhone 11 Connector 2.jpg|800x800px]]<br> Connector 3:<br> [[File:iPhone 11 Connector 3.jpg|800x800px]]<br> Connector 4: <br> [[File:iPhone 11 Connector 4.jpg|800x800px]]<br> Connector 5:<br> [[File:iPhone 11 Connector 5.jpg|800x800px]]<br> Connector 6: <br> [[File:iPhone 11 Connector 6.jpg|800x800px]]<br> Connector 7: <br> [[File:iPhone 11 Connector 7.jpg|800x800px]]<br> Connector 8: <br> [[File:iPhone 11 Connector 8.jpg|800x800px]]<br> Connector 9: <br> [[File:iPhone 11 Connector 9.jpg|800x800px]]<br> Connector 10: <br> [[File:iPhone 11 Connector 10.jpg|800x800px]]<br> Connector 11: <br> [[File:iPhone 11 Connector 11.jpg|800x800px]]<br> Connector 12:<br> [[File:iPhone 11 Connector 12.jpg|800x800px]]<br> Connector 13:<br> [[File:iPhone 11 Connector 13.jpg|800x800px]]<br> Connector 14: <br> [[File:iPhone 11 Connector 14.jpg|800x800px]]<br> Connector 15: <br> [[File:iPhone 11 Connector 15.jpg|800x800px]]<br> ==iPhone 11 Pro/Pro Max== Overall View 1: [[File:iPhone 11 Pro Overall 1 Final.jpg|alt=iPhone 11 Pro Overall 1 Final|800x800px]] Overall View 2: [[File:iPhone 11 Pro Overall 2 Final.jpg|alt=iPhone 11 Pro Overall 2 Final|800x800px]] FPC 1: [[File:iPhone 11 Pro FPC 1 Final.jpg|800x800px]] FPC 2: [[File:iPhone 11 Pro FPC 2 Final.jpg|alt=iPhone 11 Pro FPC 2 Final|800x800px]] FPC 3: [[File:iPhone 11 Pro FPC 3 Final.jpg|alt=iPhone 11 Pro FPC 3 Final|800x800px]] FPC 4: [[File:iPhone 11 Pro FPC 4 Final.jpg|alt=iPhone 11 Pro FPC 4 Final|800x800px]] FPC 5: [[File:iPhone 11 Pro FPC 5 Final.jpg|alt=iPhone 11 Pro FPC 5 Final|800x800px]] FPC 6: [[File:iPhone 11 Pro FPC 6 Final.jpg|alt=iPhone 11 Pro FPC 6 Final|800x800px]] FPC 7: [[File:iPhone 11 Pro FPC 7 Final.jpg|alt=iPhone 11 Pro FPC 7 Final|800x800px]] FPC 8: [[File:iPhone 11 Pro FPC 8 Final.jpg|alt=iPhone 11 Pro FPC 8 Final|800x800px]] FPC 9: [[File:iPhone 11 Pro FPC 9 Final.jpg|alt=iPhone 11 Pro FPC 9 Final|800x800px]] FPC 10: [[File:iPhone 11 Pro FPC 10 Final.jpg|alt=iPhone 11 Pro FPC 10 Final|800x800px]] FPC 11: [[File:iPhone 11 Pro FPC 11 Final.jpg|alt=iPhone 11 Pro FPC 11 Final|800x800px]] FPC 12: [[File:iPhone 11 Pro FPC 12 Final.jpg|alt=iPhone 11 Pro FPC 12 Final|800x800px]] FPC 13: [[File:iPhone 11 Pro FPC 13 Final.jpg|alt=iPhone 11 Pro FPC 13 Final|800x800px]] FPC 14: [[File:iPhone 11 Pro FPC 14 Final.jpg|alt=iPhone 11 Pro FPC 14 Final|800x800px]] Proximity Sensor pin out [[File:11 Pro dot projector pins.jpg|alt=11 Pro dot projector pins|800x800px]] [[File:apple-iphone-11pro_nand.png|953x953px]] <br /> ==iPhone SE (2022)== CHARGING DOCK [[File:main se 2022.jpg|998x998px]] LCD AND TOUCH-ID [[File:VIDEO Y TOUCH SE 2022.jpg|998x998px]] CAMERAS [[File:CAMERAS IPHONE SE 2022 final.jpg|998x998px]] RF AND PWRKEY [[File:ANT POWER KEY SE 2022 final.jpg|998x998px]] ==iPhone SE (2020)== Overall View: [[File:iPhone SE Overall View Edited.jpg|alt=iPhone SE Overall View Edited|1422x1422px]] Battery: [[File:iPhone SE Battery Edited.jpg|alt=iPhone SE Battery Edited|800x800px]] Cellular Antenna: [[File:iPhone SE Cellular Antenna Edited.jpg|alt=iPhone SE Cellular Antenna Edited|800x800px]] Charging Port: [[File:iPhone SE Charging Port Edited.jpg|alt=iPhone SE Charging Port Edited|800x800px]] Front Camera: [[File:iPhone SE Front Camera Edited.jpg|alt=iPhone SE Front Camera Edited|800x800px]] Home Button: [[File:iPhone SE Home Button Edited.jpg|alt=iPhone SE Home Button Edited|800x800px]] Power Button: [[File:iPhone SE Power Button Edited.jpg|alt=iPhone SE Power Button Edited|800x800px]] Rear Camera: [[File:iPhone SE Rear Camera Edited.jpg|alt=iPhone SE Rear Camera Edited|800x800px]] WiFi Antenna: [[File:iPhone SE Wifi Edited.jpg|alt=iPhone SE Wifi Edited|800x800px]] Wireless Charging: [[File:iPhone SE Wireless Edited.jpg|alt=iPhone SE Wireless Edited|800x800px]] <br /> ==iPhone XR== CHARGE DOCK [[File:iPHONE XR DOCK CONECTOR VALUES.jpg|998x998px]] LCD AND TOUCH [[File:IPHONE XR VIDEO AND TOUCH CONECTOR VALUES (4).jpg|998x998px]] RF+VBATT+SIM-CARD [[File:IPHONE XR BATTERY CONECTOR VALUES (2).jpg|998x998px]] FACE ID+F-CAM [[File:IPHONE XR CAMERA CONECTOR VALUES (2).jpg|998x998px]] PWRKEY+WIDE-CAM+RECEIVER [[File:IPHONE XR AURICULAR CONECTOR VALUES (7).jpg|998x998px]] ==iPhone X Intel== BBPMU: [[File:iPhone X BBPMU.png|alt=iPhone X BBPMU (Intel)|800x800px]] DSM: [[File:iPhone X Intel DSM.png|alt=iPhone X Intel DSM|800x800px]] ET: [[File:iPhone X ET.png|alt=iPhone X ET|800x800px]] GLNA: [[File:iPhone X GLNA.png|alt=iPhone X GLNA|800x800px]] GNSS: [[File:iPhone X GNSS.png|alt=iPhone X GNSS|800x800px]] GPOLAT: [[File:iPhone X GPLAT.png|alt=iPhone X GPLAT|800x800px]] GPOUAT: [[File:iPhone X GPOUAT.png|alt=iPhone X GPOUAT|800x800px]] GSMPA: [[File:iPhone X GSMPA.png|alt=iPhone X GSMPA|800x800px]] LATCP: [[File:iPhone X LATCP.png|alt=iPhone X LATCP|800x800px]] LBLN: [[File:iPhone X LPLN.png|alt=iPhone X LPLN|800x800px]] LBPA: [[File:iPhone X LBPA.png|alt=iPhone X LBPA|800x800px]] MHBLN: [[File:iPhone X MHBLN.png|alt=iPhone X MHBLN|800x800px]] MHPA: [[File:iPhone X MHPA.png|alt=iPhone X MHPA|800x800px]] NFC DCDC: [[File:NFC DCDC S.png|alt=NFC DCDC S|800x800px]] NFC: [[File:iPhone X NFC.png|alt=iPhone X NFC|800x800px]] Q3350: [[File:iPhone X Q3350.png|alt=iPhone X Q3350|800x800px]] QUAD P: [[File:iPhone X Quad P.png|alt=iPhone X Quad P|800x800px]] TDDPA: [[File:iPhone X TDDPA.png|alt=iPhone X TDDPA|800x800px]] BBCPU: [[File:iPhone X BBCPU.png|alt=iPhone X BBCPU|800x800px]] U2600: [[File:iPhone X NAND.png|alt=iPhone X NAND|800x800px]] PMIC: [[File:iPhone X PMIC.png|alt=iPhone X PMIC|800x800px]] U3100: [[File:iPhone X U3100.png|alt=iPhone X U3100|800x800px]] U3300: [[File:iPhone X U3300.png|alt=iPhone X U3300|800x800px]] U3400: [[File:iPhone X U3400.png|alt=iPhone X U3400|800x800px]] U3600: [[File:iPhone X U3600.png|alt=iPhone X U3600|800x800px]] U3620: [[File:iPhone X U3620.png|alt=iPhone X U3620|800x800px]] U3700: [[File:iPhone X U3700.png|alt=iPhone X U3700|800x800px]] U4100: [[File:iPhone X U4100.png|alt=iPhone X U4100|800x800px]] U4120: [[File:iPhone X U4120.png|alt=iPhone X U4120|800x800px]] U4400: [[File:iPhone X U4400.png|alt=iPhone X U4400|800x800px]] U4700: [[File:iPhone X U4700.png|alt=iPhone X U4700|800x800px]] U4900: [[File:iPhone X U4900.png|alt=iPhone X U4900|800x800px]] U5000: [[File:iPhone X U5000.png|alt=iPhone X U5000|800x800px]] U5100: [[File:iPhone X U5100.png|alt=iPhone X U5100|800x800px]] U5530: [[File:iPhone X U5530.png|alt=iPhone X U5530|800x800px]] U5600: [[File:iPhone X U5600.png|alt=iPhone X U5600|800x800px]] U6200: [[File:iPhone X U6200.png|alt=iPhone X U6200|800x800px]] U6300: [[File:iPhone X U6300.png|alt=iPhone X U6300|800x800px]] UATCP: [[File:iPhone X UATCP.png|alt=iPhone X UATCP|800x800px]] Wifi: [[File:WIFFI.png|alt=iPhone X WiFi|800x800px]] XCVR1: [[File:iPhone X XCVR1.png|alt=iPhone X XCVR1|800x800px]] XCVRO: [[File:iPhone X XCVRO.png|alt=iPhone X XCVRO|800x800px]]CPU [[File:iPhone X CPU diode readings.jpg|800x800px]] Dot projector & Infrared camera [[File:iPhone X Dot projector & Infrared Camera diode readings.jpg|800x800px]] Sandwich top [[File:iPhone X sandwich top diode readings.jpg|800x800px]] Sandwich bottom (Qualcomm) Sandwich bottom (Intel) Battery connector & Charging IC (Tigris) Rear camera connectors Front camera connector Strobe IC & MIC2 connector MIC3 DIsplay connector Touch connector NFC Power IC PMU <br /> ==iPhone 8 Plus== <br /> ==iPhone 8== <br /> ==iPhone 7 Plus== <br /> ==iPhone 7== <br /> ==iPhone 6s Plus== <br /> ==iPhone 6s== <br /> ==iPhone 6 Plus== <br /> ==iPhone 6== Display connector Display Audio IC NAND Tristar U2 NFC Wireless <br /> [[Category:iPhone 11]] [[Category:iPhone 11 Pro]] [[Category:iPhone 11 Pro Max]] [[Category:iPhone SE (2020)]] __FORCETOC__ r2ec2a2v7as5gpd1reiqupdcc58r843 iPhone Face ID Repair 0 821 1828 2020-09-27T17:35:12Z Swedish Chef 196 Face ID Dot Projector Repair 1828 wikitext text/x-wiki JC Have Created a new face ID Repair programer, this is specifically for dot projector repair. JC kindly sent one out to me as I beta test products for them. You can find me Swedish Chef aka. Luke Hopkin over on my instagram https://www.instagram.com/swedish_repairs/ There can be many reasons the Face ID will not work on an iPhone; it can be caused by Infrared camera, Flood emitter, a Camera short or the dot projector. The Dot projector repair and specifically the JC face ID programer is what this page will look at. Dot projectors can have a few different faults: 1) “Working Normally” this means the dot projector is working and your issue is not related to dot projector this could be infrared camera fault, flood emitter fault or dot projector misalignment. 2) “Anode Disconnect” this likely means the prysm itself is damaged or that the flex is not correctly soldered to the dot projector 3) “NTC / I2C Disconnect” Likely the flex or connector is damaged 4) “Short” there is a short it should be hot maybe the large ic (I have not had this issue before) 5) “FUSING” Fusing is the most common issue and this is what the jc programmer repairs. I currently do not have any photos or videos to share of this other than what I have posted on instagram but I will update this in the near future. https://www.instagram.com/p/CFoiLYYDSx2/ The process: Take the original dot projector test and it should say "fusing" on the programmer. This indicates that you have an issue with the “fuse” eprom. Once you have confirmed you have an issue with the dot projector eprom you can read the data from it and save the data. Write that to the empty JC flex provided with the programer. You can then test the flex in place of the dot projector with all other face id components plugged in there should not be a “unable to activate face id message now” After that split the original dot projector between the glass and the dot projector. Remove the eprom and short the 2 largest pads together. Desolder the dot projector from the original flex tin the new JC flex and solder the dot projector to the new flex. Test the flex on the programer again and it should say “Normal” any other errors please refer to the above list of errors Then the HARD PART! You need to glue the dot projector flex to the glass with UV glue. This may take a very long time as it must have PERFECT alignment otherwise you will have issues with it. Once done, put it into the phone and test it to make take some alignment to get it working perfectly. A Small Disclaimer: I would not say I have had 100% success rate but this is down to how difficult it is to align the dotprojector to the glass and sometimes it's not always the dotprojector at fault it can also be infrared camera, flood emitter ect. But I can confirm this is a working tool and the programmer is not expensive, however you do need to keep buying flexs from them. 2joza4mz80rnupsjrgy4pm759eamjlc iPhone LCD Model 0 35 5236 5211 2020-11-12T23:57:56Z Chrisb 1 5236 wikitext text/x-wiki On iPhone 7 Plus and 8 Plus devices, when using OEM screens, make sure to pair the device's original screen to the one being installed. If you install a different Manufacture's OEM LCD on to an iPhone that is calibrated with another manufacture, you are bound to have touch issues either immediately, are shortly down the road. Using a EEPROM reader and copying screen data from one screen to another does not solve touch issues. EEPROM reader only helps with true tone compatibility. ". If you install an LG 3D touch panel into a Toshiba LCD around 10% won’t work. If you install a Toshiba 3D touch panel into an LG LCD then 60% won’t work. Unfortunately, we don’t have any data for mixing Sharp LCDs or 3D touch panels" "If the iPhone was calibrated for a Toshiba or Sharp LCD and you cross install between these 2 manufacturers there is roughly a 5% chance of bad touch. If the iPhone was originally calibrated for an LG LCD and you cross install with a Toshiba or Sharp LCD then there is a 50% chance of touch problems because LG’s sensitivity range distribution is very different to these 2 manufacturers. Without having the magic calibration box to tell the iPhone you’ve installed a different manufacturer’s LCD you are going to have trouble unless you install an LG LCD. This probably explains why, if you install an LCD and experience touch problems, then install another LCD and it works, you’d automatically assume a bad LCD. However, it is possible you’ve just switched manufacturer and got lucky. If you used the suspected bad LCD in the next repair it would more than likely work with no issues. " "Magic calibration box" == ATS2 or whatever apple use for pairing So, in summary, it is very easy to assume the LCD is faulty because it has touch problems when it is installed in an iPhone. However, there is the possibility that external factors could be causing the issue. It would be prudent to try and swap the LCD on a like for like basis and match the 3 letter code. If you do experience touch problems with a refurbished LCD then before returning it as faulty, try it in your next repair and it may just work. More information on the subject can be found here. https://webuylcds.co.uk/2018/05/15/touch-compatibility-issues-with-iphone-7-7-8-8-screens/#:~:text=There%20are%20three%20companies%20who,LG%2C%20Toshiba%2C%20and%20Sharp {{DISPLAYTITLE:iPhone LCD Model}} [[File:IPhone LCD Model.jpg|alt=|left|800x800px]] [[Category:iPhone]] qg6usbaobbn8gwotn570yums4oznjhu iPhone Locking Policies 0 104 590 339 2020-02-02T11:39:57Z Piernov 10 Category iPhone 590 wikitext text/x-wiki {{DISPLAYTITLE:iPhone Locking Policies}} ==US Carriers== ===Postpaid Device Unlock Policy=== AT&T Phones must be active for 60 days and paid off *1, *2, *3 Verizon Phones must have been active for sixty days. Automatically unlocked. Sprint Phones must have been active for fifty days and paid off. *4 T-Mobile Phones must have been active for fourty days and paid off US Cellular phones are not locked at anytime ===Prepaid Device Unlock Policy=== Cricket *2 and AT&T Prepaid *1 devices are six consecutive months of service. Boost mobile and Virgin Mobile *4 are twelve consecutive months of service. Verizon phones will be unlock eligible after the minimum amount of money spent on service. This amount is located on the packaging of the device. T-Mobile Prepaid and Metro by T-Mobile after six months of service All Tracfone brand require 12 months of active service, but there is inter portability without unlock on some if not all Tracfone brands <nowiki>*</nowiki>1 All AT&T post and prepaid devices will work without unlocking as long as the backbone of the MVNO uses AT&T. <nowiki>*</nowiki>2 Cricket devices cannot be used on another service until unlocked <nowiki>*</nowiki>3 AT&T doesn’t blacklist devices for non payment unless the account is less then 90 days old. <nowiki>*</nowiki>4 Sprint devices cannot be used on another account, Sprint owned prepaid brands, or Sprint MVNOs until they are paid off, device unlock status does not apply. Note that Sprint does this Through the FED. The FED does not always automatically clear once a device is paid off. [[Category:iPhone]] n1dykyj7hphdwwl3f33m8b00phgauw3 iPhone SE (2020) Compatibility 0 512 5174 1130 2020-10-31T19:04:17Z Chrisb 1 5174 wikitext text/x-wiki ==Compatible with iPhone 8== *Front Camera *Rear Camera, needs an updated iOS to function correctly. *Display Assembly with no TrueTone or 3D Touch. It may be possible to transfer serial number for True Tone, but not tested. Also no reports on the pop up message about display replacement. *Charger Port *Power and Volume Flex *Speaker *Taptic Engine *Housing ==Not Compatible with iPhone 8== *Battery has a different connector *Touch ID/Home button function ==Comparison Pictures== [[File:iPhone 8 vs SE 2020 1.jpg|400x400px]] [[File:iPhone 8 vs SE 2020 LB Front.jpg|400x400px]] [[File:iPhone 8 vs SE 2020 LB Back.jpg|400x400px]]<br /> 8ogme6ebvjr1s36fpex1cr4kk97urmd iPhone Touch ID Diagrams 0 536 5744 5467 2021-04-16T16:36:24Z Joesipaq 20 Made a new correct ip6s trace guide 5744 wikitext text/x-wiki ==iPhone 7 and iPhone 7 Plus== [[File:iPhone 7 Touch ID Diagram.jpeg|800x800px]] == iPhone 6 and 6s == Common problem is when the button tears, touch ID works, but no click, To restore home button click, you can jump wires between the indicated components [[File:iPhone 6 Click traces.jpg|left|thumb|iPhone 6 Click traces]] <br /> [[File:iPhone 6s-6sp click wiring.jpg|left|thumb|iPhone 6s Click traces]] <br /> m251s20msau9mhrnnd9dstc6jaffabs macOS 0 127 689 591 2020-02-11T16:37:02Z Chrisb 1 689 wikitext text/x-wiki Apple links to downloadable installers [https://support.apple.com/en-us/HT201372 here]. ==10.15 [[Catalina]]== Newest version 10.15.3 Catalina introduced a split volume system<ref>https://eclecticlight.co/2019/10/08/macos-catalina-boot-volume-layout/</ref>. macOS resides on a read only volume. Data is stored on the name of the volume plus "-data". APFS is mandatory to boot Catalina. The volumes appear as one seamless drive do to hard linking and [[Volume Groups]]. ==10.14 [[Mojave]]== Newest version 10.14.6 Mojave can be cloned or imaged to a [[jHFS+]] volume. It will boot. It will not update. In order to update you will need to follow these steps * Boot to [[Recovery Mode]]. * Open [[Disk Utility]]. * Unmount the target volume. * Click "Edit" then "Convert To APFS..." and confirm the dialog box. * After the conversion is complete (it takes only a few minutes), quit Disk Utility. * Install Mojave. ==10.13 [[High Sierra]]== Newest version 10.13.6 ==10.12 [[Sierra]]== Newest version is 10.12.6 ==10.11 [[El Capitan]]== Newest version is 10.11.6 ==10.10 [[Yosemite]]== Newest version is 10.10.5 ==10.9 [[Mavericks]]== Newest version is 10.9.5 ==10.8 [[Mountain Lion]]== Newest version is 10.8.5 ==10.7 [[Lion]]== Newest version is 10.7.5 ==10.6 [[Snow Leopard]]== Newest version is 10.6.8 ==10.5 [[Leopard]]== Newest version is 10.5.8 ==10.4 [[Tiger]]== Newest version is 10.4.11 ==10.3 [[Panther]]== Newest version is 10.3.9 ==10.2 [[Jaguar]]== Newest version is 10.2.8 ==10.1 [[Puma]]== Newest version is 10.1.5 ==10.0 [[Cheetah]]== Newest version is 10.0.4 [[Category:Mac]] md91qq067mhk6ii6030urdivyb12jhn macOS Missing Partition (APFS) 0 140 592 406 2020-02-02T11:40:24Z Piernov 10 Category Mac 592 wikitext text/x-wiki ==macOS Missing Partition (APFS)== '''APFS, missing macOS partition, replaced with FFFFF-FFFFFFF-FFFFFFFFF''' ''This was a prevalent issue with early macOS High Sierra Upgrades. If High Sierra fails to convert MacOS Extended Journaled (JHFS+) to APFS, the GUID of the macOS Partition will read FFFF-FFFFFFF-FFFFFFF. To fix this, you will have to manually rebuild the GPT. '' The proper GUID of APFS partitions is 7C3457EF-0000-11AA-AA11-00306543ECAC. The default pMBR was replaced with an old-style MBR, probably by the Linux installation, BootCamp, or failed macOS Extended Journaled to AFPS Conversion during macOS Upgrade. '''To get your APFS partition back remove partition disk0s2 and restore it with the proper type:''' * Boot into Recovery, Open in the menubar > Utilities > Terminal * get some details by entering into Terminal: <syntaxhighlight lang="text"> diskutil list #below I assume the disk identifier of the internal disk is disk0 gpt -r show disk0 </syntaxhighlight> * Unmount disk0: <syntaxhighlight lang="text"> diskutil umountDisk disk0 </syntaxhighlight> * Remove and restore the 2nd partition: <syntaxhighlight lang="text"> gpt remove -i 2 disk0 diskutil umountDisk disk0 gpt add -i 2 -b 409640 -s 372637568 -t 7C3457EF-0000-11AA-AA11-00306543ECAC disk0 </syntaxhighlight> * Verify disk and partition: <syntaxhighlight lang="text"> diskutil list diskutil verifyDisk disk0 diskutil verifyVolume disk0s2 </syntaxhighlight> Your Mac should be able to boot despite the MBR. If you had BootCamp installed and want (or have) to restore the pMBR because the MBR is stubborn/blocks the modification of the partition table do the following: * Get all disk details: <syntaxhighlight> diskutil list #below I assume the disk identifier of the internal disk is disk0 gpt -r show disk0 </syntaxhighlight> * Replace the GUID partition table: <syntaxhighlight> diskutil umountDisk disk0 gpt destroy disk0 gpt create -f disk0 </syntaxhighlight> * Re-add all previous partitions visible in the last gpt -r show disk0 output: <syntaxhighlight> gpt add -i 1 -b 40 -s 409600 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B disk0 gpt add -i 2 -b 409640 -s 372637568 -t 7C3457EF-0000-11AA-AA11-00306543ECAC disk0 gpt add -i 3 -b 373047208 -s 262144 -t 426F6F74-0000-11AA-AA11-00306543ECAC disk0 gpt add -i 4 ... gpt add -i 5 ... </syntaxhighlight> * If you get a resource busy error after one of the steps, just unmount disk0 again with: <syntaxhighlight> diskutil umountDisk /dev/disk0 </syntaxhighlight> * Finally verify disk and partitions: <syntaxhighlight> diskutil list diskutil verifyDisk disk0 diskutil verifyVolume disk0s1 diskutil verifyVolume disk0s2 diskutil verifyVolume disk0s3 #disk0s4 & disk0s5 can't be verified with the default macOS tools because the latter is a Linux swap and the former a Linux partition, probably with ext4 </syntaxhighlight> [[Category:Mac]] rastuy75ugm2wk5opnfl7wyzykiw4qx softwareupdate 0 149 593 443 2020-02-02T11:40:35Z Piernov 10 Category Mac 593 wikitext text/x-wiki Software update in Catalina has the ability to download full installers<syntaxhighlight lang="bash"> softwareupdate --fetch-full-installer </syntaxhighlight>Will download the latest ‘Install macOS’ application to this Mac’s <code>/Applications</code> folder. This is extremely useful for many admin tasks.<syntaxhighlight lang="bash"> softwareupdate --fetch-full-installer --full-installer-version 10.14.6 </syntaxhighlight>The <code>--fetch-full-installer</code> flag has a sub-flag: <code>--full-installer-version</code> which allows you to download a specific version. [[Category:Mac]] 2w83z3o1s1x2454cyunqaqtgszcs9ex throttling 0 1898 5605 2021-02-27T04:19:13Z Chrisb 1 Chrisb moved page [[throttling]] to [[Throttling]]: Title case 5605 wikitext text/x-wiki #REDIRECT [[Throttling]] 9karp9yy21zaqagqelm3w01l5ambmpf Talk:820-00165 Pulsing 1 758 1619 1618 2020-09-07T15:00:41Z Piernov 10 1619 wikitext text/x-wiki The pulsing is on PM_SLP_S4 line right? -- [[User:Down1nit|Down1nit]] : The pulsing usually happens on PM_SLP_S4_L up to CPU VCore. -- [[User:Chrisb|Chrisb]] :: Even down to PM_SLP_S5_L, and up to the failing point in the power sequence, including everything inbetween. That can be when a power rail fails to turn on or crashes, when PM_PCH_SYS_PWROK fails to come up, when PCH fails to read soft straps from SPI ROM, when CPU fails to read EFI from SPI ROM, when SMC detects overcurrent condition, etc. -- [[User:Piernov|Piernov]] ([[User talk:Piernov|talk]]) 14:59, 7 September 2020 (UTC) rjpo8w63iqx2lqz87zm51ozkksl83z4 Talk:Beginner Troubleshooting 1 815 1761 2020-09-20T17:54:14Z Chrisb 1 Created blank page 1761 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 Talk:Critical Update Required Troubleshooting 1 1890 5564 2021-02-11T20:36:37Z SMPLLC 366 /* If you are getting this "Critical Update Required" in A1706, A1707 or more TouchBar models. */ new section 5564 wikitext text/x-wiki == If you are getting this "Critical Update Required" in A1706, A1707 or more TouchBar models. == Believe it or not this update would make it seem like the Touchbar is non functional. If you see that the Touchbar is not turning on at all when this update shows up, I suggest you first try this first before trying to replace your Touchbar etc. '''Side Note: Apple will say it is a logic board issue, but in return it actually is not. ''' When we had this issue we disconnected the "Webcam" from the LCD in the Touchbar Models. Once we did this the critical software update went away and the Touchbar turned on and operated normally. WE ARE NOT saying this will solve the problem but we suggest disconnecting the webcam from your LCD and try booting without it. If that does not work, we recommend disconnecting the entire LCD and booting with an external monitor to see if the message goes away. epxh09bcnncz9fy64st10wawh69abk8 Talk:G3 to S3 State for Ivy Bridge Haswell and Broadwell 1 661 1361 2020-06-22T17:00:46Z Chrisb 1 Created page with "SMC_RESET_L above 3V seems to be good." 1361 wikitext text/x-wiki SMC_RESET_L above 3V seems to be good. 10n11ra8m3j56wewcqsxv1upz5nxqc9 Talk:Internet Recovery 1 1437 3178 2020-10-11T01:20:50Z Chrisb 1 Created page with "We should document what the different key combinations do and also what versions of macOS. For example with the BootROM update starting at 10.12.4, the key combos changed bet..." 3178 wikitext text/x-wiki We should document what the different key combinations do and also what versions of macOS. For example with the BootROM update starting at 10.12.4, the key combos changed between booting the latest internet recovery and the recovery that was contemporary with the hardware. bwh73hg3142l9sh6lmaci1uaj4u53wa Talk:M1 MacBooks 1 2263 7034 2023-12-23T17:33:45Z Geraldco 1063 Source of Schematic 7034 wikitext text/x-wiki Where did you get the schematic for PP5V_SW_LCD Schematic from? Are there other schematics available for the M1 A2337 logic board? gi9ajbje7zneaqsbhe06esq8hc78sw4 Talk:Main Page 1 1760 6194 6193 2021-10-20T12:42:48Z Chrisb 1 Reverted edits by [[Special:Contributions/Logiwikied|Logiwikied]] ([[User talk:Logiwikied|talk]]) to last revision by [[User:Chrisb|Chrisb]] 5240 wikitext text/x-wiki Questions, comments, concerns? Login and click “Add topic” above. lic0q80vvdbmxwzqzksg1dc111josts Talk:Malware Removal 1 1422 3130 2020-10-07T19:58:30Z Chrisb 1 Created page with "Since Ka-block is no longer available, let’s find another lightweight ad/malware block tool we can endorse." 3130 wikitext text/x-wiki Since Ka-block is no longer available, let’s find another lightweight ad/malware block tool we can endorse. op08njlzgyw6nx2488o0be9q6rtoadl Talk:SMC 1 1438 3180 2020-10-11T01:29:13Z Chrisb 1 Created page with "Use this page to link to SMC troubleshooting and boot up sequencing." 3180 wikitext text/x-wiki Use this page to link to SMC troubleshooting and boot up sequencing. rojbaqeidjhovsoyk03xci8r52wfc4k Talk:Samsung Diode Mode Measurements 1 2034 6066 2021-09-17T13:24:40Z Alpha Bravo Tech. 538 Samsung S8 SM-G950U Diode Mode Readings 6066 wikitext text/x-wiki [[File:Samsung S8 SM-G950U Diode Mode Readings.pdf|thumb|Samsung S8 SM-G950U Diode Mode Readings]] e0o555qldc0v05ppwvgnry7128rxdcq User:ApsisTech 2 2012 5955 5954 2021-07-25T03:01:55Z ApsisTech 498 5955 wikitext text/x-wiki <nowiki>**</nowiki>JavaScript Web App Developer** *Angular *Ionic *IoT-Arduino 9x46dov4iabhh0mde95mozpfd50bykg User:Bilal Akash 2 2062 6125 6115 2021-09-28T15:14:37Z Chrisb 1 Reverted edits by [[Special:Contributions/Inwerp|Inwerp]] ([[User talk:Inwerp|talk]]) to last revision by [[User:Bilal Akash|Bilal Akash]] 6114 wikitext text/x-wiki https://www.facebook.com/groups/2506307572735836/?ref=share_group_link 07epwm4srii8qzoaa484zsq9c4z1k34 User:Chrisb 2 705 1474 2020-07-24T06:54:20Z Chrisb 1 create user page 1474 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 User:Crumblenaut 2 1917 5645 5642 2021-03-03T04:39:27Z Crumblenaut 317 some bs 5645 wikitext text/x-wiki Yo! My name's Eddie and I'm a co-owner of [https://www.1201.com 1201] [https://www.yelp.com/biz/1201-computer-repair-portland-2?sort_by=date_desc Computer] [https://goo.gl/maps/FtEvfbTtg34Zf7yb7 Repair] and [http://1201it.com/ 1201 IT Solutions] in Portland, Oregon, Cascadia. I'm a defender of forests, a connoisseur of hallucination, a biology nerd and a neuroscience fanatic, psybient music producer and certified fanboy, an advocate for legal (when convenient) psychedelic therapy, a political junkie, an eternal educator and a lifelong learner, and an enthusiastic gum sharer! Gonna be in Portland? [mailto:ed@1201.com Hit me up!] Also check out my [https://bandcamp.com/edhallman Bandcamp Collection] and [https://bandcamp.com/edhallman/wishlist Wishlist] if you're so inclined! Looots of good stuff there. :::D <br /><gallery> File:Crumblenaut.jpg|Me! Oh yes. File:My Happy Place - Daytime.jpg|My happy place in the daytime... File:My Happy Place - Nighttime.jpg|...and the Day Turned to Night </gallery>Listen to [https://www.youtube.com/watch?v=cm2nSOJcbfQ&list=PL60D7B518D8370206 Ott] and [https://www.youtube.com/watch?v=J2WP-55FLNk Shpongle]. gduotwnsej4b82h434m6cka4z43juo9 User:Dellbu 2 723 1534 1533 2020-08-20T02:09:01Z Chrisb 1 1534 wikitext text/x-wiki Hello, my name is Declan! I down energy drinks like a madman. If you need to talk, my Discord is <code>Dell Kubo#4000</code>. The talkpage here otherwise works, though I'm less frequent. On the side, I play video games (or, well, at the moment, it's limited to just ''Team Fortress 2''), and use a Lenovo T420s/16GB of RAM at the moment. I'm also big into amateur radio, and hope sometime to get my Technician's license— unfortunately, the ARRL's closed most of its test sites. On the side, I like to play D&D, but so far I haven't made any campaigns successful. I'm still working on one. Went to University of Hawai'i for a year into Japanese & Computer Engineering, and DJ'd on the side, decided ultimately I was happier with Network Info Systems. Now, we're back in Virginia; I need to get back into DJ-ing. In my spare time, I do amateur electrical engineering, and know basic theory. My soldering is good, but it's been some time, and I'd be down to try micro soldering sometime. I got started in repair in middle-school, alongside fundamentals with electrical engineering through Minecraft; I'm now A+ and Network+ certified, which, while not pertinent to Apple repair, at least gave me some experience to work with. I'd be down for any Apple certifications to pick up, too. I currently work as a technician, helping to fix Apple devices. Well, it's more of an apprentice-ship. Anything aside from a MacBook is more Wild West for me; while I'm more fly-by-the-seat-of-my-pants, phone repair halts that. From what I've seen, you can't make any foolish mistakes that way. On the side, I like to mess with Z80ASM. I know my basic program design, bits of C, Java, tiny bits of C++, [[wikipedia:TempleOS|HolyC]], and anything else. I've done website design and am proficient with HTML/CSS/<s>Not JavaScript I hate JavaScript it's so chaotic</s>, plus wiki-building and virtual machine setup, with ESXi. You name it, I've messed around with it. ituhx346orykmvnmeckloza2d9m2wm9 User:Inwerp 2 1943 7589 6839 2024-07-28T11:20:41Z Inwerp 16 7589 wikitext text/x-wiki [[File:Ferret incorporated.jpg|frameless]] Hello, this is a ferret page. It also backlinks to my [https://www.ripperdoc.de/ Ripperdoc.de Macbook Reparatur service], yes, mostly for SEO but feel free to send me your hardcases or whatever. also Fuck Google Ads if bot is reading. Hi! - ChrisB Howdy! - Inwerp 2svcv4lz68cj90i40nhmsrgfjoklevo User:Leshuq 2 2140 6431 2022-02-18T22:29:11Z Leshuq 657 Created page with "Hi! Name's Alexey. Russian. Contacts: Telegram: @leshuq" 6431 wikitext text/x-wiki Hi! Name's Alexey. Russian. Contacts: Telegram: @leshuq sowkgny23ootwilacsduzqqv4syd3q2 User:MaxShevelev 2 2265 7056 7050 2024-03-05T16:50:59Z MaxShevelev 1008 Blanked the page 7056 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 User:Nemskiller007 2 2003 5922 2021-06-27T14:14:12Z Nemskiller007 476 Created page with "== MacBook Air Retina 13" 2020 - 820-01055 == The MacBook Air Retina 13" 2020 who have its board with number 820-01055 have the T2 Chip on it. I've made a new discovery abou..." 5922 wikitext text/x-wiki == MacBook Air Retina 13" 2020 - 820-01055 == The MacBook Air Retina 13" 2020 who have its board with number 820-01055 have the T2 Chip on it. I've made a new discovery about serialisation. A 820-01055 came to me with a water dammaged, no sign of life. I opened the board and saw that the trackpad drunk all this liquid. A lot of corrosion on the connector, the flex cable was burnt and some chips on the trackpad looked ugly. The MacBook works as long as i unplug the Trackpad/Keyboard flex. I changed the Trackpad with a new one, i bought a new flex cable, the MacBook works but... i can't : Press Q (A for Qwerty keyboard), D, all the Function keys. So i bought a new Keyboard... took everything out of the case and changed it with the new one => Same problem. Asking on the Discord my problem and someone gave me a clue : There is a T2 chip on this model so there must be some serialisation.... So i took off the ST32F103B6 chip form the original Trackpad - WARNING : it's an underfilled chip be carefull. I took off the same chip from the new Trackpad and put the Original ST32F103B6 on the New Trackpad - WARNING : Protect everything around this chip with Kapton tape and be carefull. Then i get a working MacBook Air with working Keyboard and Trackpad. One last thing i wanted to try is the daughter board 820-02005-A. This board get the connection for Keyboard, Keyboard Backlight, and Trackpad link. This board have also two chips for Keystrokes and some others related to keyboard. When i put a new daughter board on this MacBook, i lost the FN keys... === In Conclusion === MacBook Air 13" 2020 (820-01055) have some T2 serialisation on Keyboard and Trackpad : You can change just the Keyboard without issues. You can't just change the Trackpad, nor the daughter board. If you need to change the Trackpad, you need to have with you the original ST32F103B6 chip that came from the original Trackpad. If you need to change the Daughter board, you need to have with you the 4BRT chip that came from the original Daughter board. For the moment i don't know if there is a way to dump some chips in order to reprogramm them more easily because swaping ST32F103B6 is dangerous. eic9r4f3btj80d07n76r09uv9wha1fg User:Piernov 2 1815 5785 5722 2021-05-09T17:01:16Z Piernov 10 Missing SLP_S5#/SLP_S4# 5785 wikitext text/x-wiki ==piernov's FAQ== ===Why INTRUDER# measures 3.0V or lower on the multimeter?=== INTRUDER# has a very weak pull-up (1MΩ). If you touch the probes, skin resistance is enough to pull down the voltage a lot (like less than 1.5V). Even without touching the probes, the internal impedance of the DMM (typically around 10MΩ) will cause it to drop to around 10MΩ*3.3V/(10MΩ+1MΩ) = 3.0V. ===Can I use a different SPI ROM part number?=== Better use the original part number.<br> If you can't get it and you have an Intel platform, use UEFITool to check what part numbers are registered in the VSCC table and use one of these.<br> If you have an AMD platform, I'm not aware of something similar to the VSCC table, but compatibility could still be an issue. Be sure to check operating voltage, size, maximum frequency and dual/quad SPI mode. ===I am missing VCCAXG/VCCGFX/VCCGT (iGPU core voltage), how do I solve it?=== The iGPU core voltage is almost never relevant. It typically only comes up when there's a significant load on the iGPU. It can often be seen spiking a couple of times on the oscilloscope when POSTing. In other words, it's generally normal that it's missing. If you have some kind of issue with the machine, the cause is most likely elsewhere. ===How can I read sensors on >=2015 Macs?/Where can I download HWSensors?=== Latest version of HWSensors is available here as far as I'm aware: https://bitbucket.org/RehabMan/os-x-fakesmc-kozlek/downloads/RehabMan-FakeSMC-2018-0915.zip SourceForge and other websites have older versions with worse support for 2015 and newer machines. ===How can I select a replacement MOSFET if I can't find the original part?=== It depends on the circuit it is in. If it is just used as a power switch, eg. DC-in MOSFETs or MOSFETs turning on/off S0 rails sourced from S5 rails, then you mostly want to pay attention to these parameters: * N-channel/P-channel (must be the same) * Package and pinout (must be the same of course) * Vgs and Vds breakdown voltage (must be same or higher) * Id current rating (must be same or higher) * Rdson resistance (must be same or lower) Vds is a hard requirement but it's rarely a problem, you just have to make sure it's at least 30V. If they are part of a buck converter, they will be switching at a high frequency, so some other parameters are important too (in addition to the ones above): * Ci input capacitance (similar or lower) * Qg total gate charge (similar or lower) * Tdon turn-on delay time (similar or lower) * Tdoff turn-off delay time (similar or lower) * Body diode forward voltage (similar or lower) These are especially critical in multiphase buck converters like CPU VCore and GPU VCore since the MOSFETs are stressed a lot, these buck converters must suddenly deliver dozens of amps when there's a load spike. Even up to a few hundred amps on high-performance desktop parts. Thermal characteristics also play a small role in this so it's better to have a MOSFET with low thermal resistance overall. (this is often dictated by the package, but there are still variations) Additionally, they must have the same part number across all phases in a multiphase buck converter, and preferably come from the same batch. MOSFETs with higher current rating often have a lower Rdson, that's a good thing (less losses when turned on), but they conversely are often slower and harder to drive (higher input capacitance/total gate charge and slower turn-on/off delay times), so you can't got crazy on the current rating because it'll be counterproductive: the MOSFET will be much less efficient when switching and the MOSFET driver will have a hard time driving it. Some MOSFETs (very often the low-side on synchronous buck converters) have a schottky-type body diode, that has a lower voltage drop than a "regular" body diode. (otherwise it'd be less efficient) ===I am missing SLP_S5#/SLP_S4# (PM_SLP_S5_L/PM_SLP_S4_L), what do?=== First thing is to be 100% sure you are using a known good genuine Apple Magsafe of the correct generation and power rating. Using a lower power rated Magsafe than what is required will prevent the board from going to S4 state or higher when battery is dead/removed/discharged. Refer to https://support.apple.com/en-us/HT201700 . Using a non-genuine Magsafe as well as using a Magsafe1 instead of a Magsafe2 can cause the same issue with some boards (most notably 820-00164, 820-00165 and 820-4924 but others can be affected too). In both of these situations, BATLOW# (PM_BATLOW_L) will stay low. Next step, as always, is to do a thorough visual inspection of the board. Liquid/dirt/corrosion on some components are common causes for this problem. For example, on A1466 MacBook Airs, the are near the hinge is often affected, and parts such as J6100, U6100, U6101 (820-00165 only), U1900, U1950, U8005 and U5000 (designators for 820-3437/820-00165 boards) are often found to have corrosion around them. Resistors and probe points can get damaged as well. If there was liquid/dirt/corrosion around the SMC, it is often a good idea to reball it or even replace it. Then, if no corrosion is found or the damage is believed to be fixed already, the next step is to confirm SLP_S5#/SLP_S4# are actually missing and not pulsing. Check when plugging in Magsafe if it pulses twice, or if it pulses every couple of seconds. Note that a pulsing SLP_S5#/SLP_S4# will often not be caught by most multimeters, the pulse is too fast and the refresh/update rates of the multimeters are too slow. As illustrated in the video below, a Brymen BM857s multimeter can catch the pulse, while a B&K Precision 390A cannot. If you are not 100% sure your multimeter is fast enough, confirm with an oscilloscope. <youtube>cMSuF_RdgW0</youtube> * If it is pulsing, refer to this page: [[820-00165_Pulsing]]. The power sequence up to S4 state is good, there is no need to troubleshoot it. The problem is further down. Causes can include shorted power rail, buck converter turning off due to some issue, communication issue with the SPI ROM, overcurrent situation detected by the SMC, etc… Check the rest of the power sequence to see where the pulsing stop by referring to [[Bootup_Signal_Order]]. * If it is ''not'' pulsing, then there is an issue in the power sequence before getting to S4 state. Check the power sequence up to S4 state following the diagram at [[G3_to_S3_State_for_Ivy_Bridge_Haswell_and_Broadwell]]. ecxyqypfuodmbq9y1zcrekpoamcezrr User:Winty 2 2028 6028 6027 2021-08-28T15:02:51Z Winty 519 6028 wikitext text/x-wiki Together, we could do it better! dfw030uhgcxxp0ifd68hmhpzv3nnplu User talk:Alex6337 3 147 428 2020-01-21T15:07:47Z Chrisb 1 Created page with "Alex, Great job on the chart. Do you have previous wiki experience?" 428 wikitext text/x-wiki Alex, Great job on the chart. Do you have previous wiki experience? b4bvwcyqldjfk73h1nk591izuyjh2c5 User talk:Blackbeard 3 1939 5855 5749 2021-05-20T14:00:57Z Chrisb 1 5855 wikitext text/x-wiki == PS5 == '''PS5 HDMI Diode Measurement '''[[File:ps5 hdmi diode reading.png|thumb|PS5 HDMI Diode Measurement.png]] '''PS5 HDMI Trace '''[[File:ps5 hdmi via.png|thumb|PS5 HDMI Trace ]] Hey! Do you want to move the diode mode to the game console diode page and make a new page for game console traces? eizujmlwx2e66xhiwih9z53k187qd9a User talk:Chrisb 3 191 6816 6287 2023-04-25T17:51:22Z LOVEFIRE 944 /* Digging Deeper with Apple Diagnostics (Uncovering the Truth) */ new section 6816 wikitext text/x-wiki <big>'''How can I help you today?'''</big> == Click "Add Topic" to create a new question. == --[[User:Chrisb|Chrisb]] ([[User talk:Chrisb|talk]]) 02:39, 2 February 2020 (UTC) == 820-00165B dead, magsafe with no led on == PP3V42_G3H is 2,9volt instead 3,4 volt. R7006 on PPBUS_G3H is burned. Value is 4,7ohm 1/8w Replaced and back to life. == Buncha Spam added last night. == Oddly, I'm having fried spam right now. Delicious. Yum! I'll be adding spam fighting measures and deleting the existing stuff ASAP. Thanks! Thanks for the page, I forgot about it for a while and it ended up helping me with a couple of units yesterday alone. I'll make sure to contribute :) FINALLY DONE! == iMac 2009 LCD Thermal bypass == Hi, Can I just short the pins as was explained for the HDD thermal bypass? Here are the schematics. Understanding them is beyond my skill level. No pictures uploaded. Sorry. Tried three times. == Digging Deeper with Apple Diagnostics (Uncovering the Truth) == hello, I came across this page on the wiki, https://logi.wiki/index.php/Apple_Hardware_Test_(AHT)_and_Apple_Diagnostics_(AD)_Codes , and there was a line that just hit me in a way I knew the writer understood my level of expertise with knowing computers well. it was ... ''If your device is newer than 2013 or you booting it online from some older devices, there's AD which is much less reliable and kind of helps you to book an appointment in Genius Bar '''instead of showing the real issue.''' Use Apple MRI to gather more information'' We all know that apple diagnostics never shows the real issue, it always 99% of the time shows nothing is wrong when deep down after much testing and trouble shooting and ruling out the hardware is the problem but why doesn't the real code show up?, is it being intentional hidden? (likely), how do we dig deeper to find the real code being thrown if there is even one to find? Ive been screw over by apple for years over many MacBooks and iMacs that had failed hardware and took years to proof it and then apple dropped my case and void my AppleCare without question ... it speaks wonders. so Im looking for ppl who might be able to join me in finding the evidence to proof this. I have don't a lot of digging in apple diagnosics and found a lot of secret keyboard commands (some simple) and some more advanced. If you or anyone on your wiki team can help id be much appreciated one last thing? is there any way to access Apple MRI (Mobile Resource Detector) and how accurate is it really? is it any different then built-in Diagnostics? (my thoughts is if apple wants to hide your code to stop repairs bc they make there hardware at the cheapest level then I doubt they are going to just let it happen) ... pkcc3bk5q8kcpms6rwbicwo0brlbhvv User talk:Hexington 3 2010 5941 2021-07-15T12:02:46Z Chrisb 1 Created page with "Lexington, you wrote "Note: SMD Electrolytics can be substituted for Tantalum polymer". Is that backwards?" 5941 wikitext text/x-wiki Lexington, you wrote "Note: SMD Electrolytics can be substituted for Tantalum polymer". Is that backwards? 551u2at61d0v5fprxy4nn1p4yzm8g4t User talk:Infosquad 3 2251 6995 6994 2023-10-25T00:48:47Z Infosquad 1036 6995 wikitext text/x-wiki Debug ports are implemented in all projects to help engineers in verifications during project development stage. These debug ports may be disabled or "partially disabled" (we will talk bout it later) on mass production boards Technicians could use Debug ports to perform hardware level verifications and even software level verifications in some cases. In this document we will show how to use debug ports on Macbooks and laptops. [[File:debug 1.png]] '''IMAGE1''' Debug port in Macbook Schematics In all schematics we will find many blocks, test points and/or signals defined as "debug" or "dbg" , these will be our primary targets. As we can see on "image 1", we can find many types or debug lines. Following we will describe the most common used. '''UART''' - Serial communication protocol often used to debug projects (one of our best allies and the one we will abort in this topic). This protocol uses just 2 lines, TX and RX, which are used to Transfer data and Receive data respectively. To capture UART data we need a USB to UART converter. A good choice to start working with UART lines is a CH341 programmer. This programmer is a cheap option to programming SPI flash memories (BIOS) and can be also used as USB to UART adapter. '''JTAG''' - JTAG or "Joint Test Action Group" was designed as a way to test boards. More info about [https://wiki.segger.com/Target_Interface_JTAG here] '''SWD''' - Is a modification of JTAG standard that replaces the traditional 5-pin JTAG debug interface by introducing a 2-pin interface with a clock (SWDCLK) and a single bi-directional data pin (SWDIO). More info about [https://wiki.segger.com/Target_Interface_SWD here] '''USB''' - USB ports are well known as debug ways on cellphones and this debug method is also used in laptops. In most cases we need a specific interface (hardware) to enable USB debug. '''MUX PD''' - PD controllers like CD3215/7 are digital data lines multiplexors too. These multiplexors could communicate USB-C ports with specifics components to perform verifications. To allow this, the PD controller need to receive specific commands over USB-C port We are working with all of these debug interfaces and we expect to write more information about it soon. In this occasion we will work with UART interface which is a very usefull and simple interface to implement as board fault finding == Let's talk about UART == '''STEP 1 - Hardware '''<br> There are many USB to UART converters that we can use. They can be fund in pages like Amazon, aliexpress or in electronics hardware stores as USB to UART, USB to TTL or USB to RS232 adapters. These adapters are simple and very cheap. In next image we will show the most common USB to UART adapters that we can buy. NOTE: In "USB to TTL cable" example, we reffer to cables that have a specific converter IC inside the USB conector, is NOT just a cable with some kind os specific pinout. [[File:Compatible devices.jpg|thumb|right|alt=usb to uart compatible devices|Compatible devices]]<br> <br> '''STEP 2 - Wiring '''<br> To connect USB to UART adapter to the damaged board we just need to solder 2 wires. The TX point (transfer data) from board need to be conected to the RX terminal (Receive data) in the USB adapter. Obviously, the another wire we need to conect is GND. The adapter will work with 5V supplied from USB conector. In most of cases, the UART bus will work from “stand by“ stage, so the communication will be active even in damage boards that dont turn on. [[File:Wiring diagram.jpg|thumb|right|alt=UART wiring diagram|Wiring diagram]]<br> In some ca [[File:testpoints.jpg|thumb|Test point in MAcbook A1990 mainboard]] in some cases, is needed to scratch the test point on pcb to solder wire. '''Step 3 - Software''' 1u34vp7k3dxojvjm0jr0696urgbhe06 User talk:Kennedyg 3 1956 5854 5815 2021-05-20T13:56:31Z Chrisb 1 5854 wikitext text/x-wiki == ipad air 2 == Hi guys was just wondering if there was diode readings for the ipad air 2 connectors i cant seem to find them anywhere Sorry, no iPad Air 2 diode mode readings yet! If you happen to get good ones, feel free to post them. Dusten or I can help you - ChrisB. gkfbzqubb37thcznech793ygn0un1vo User talk:LOVEFIRE 3 2225 6815 2023-04-25T17:32:15Z LOVEFIRE 944 /* Uncovering the truth behind Apple Diagnostics */ new section 6815 wikitext text/x-wiki == Uncovering the truth behind Apple Diagnostics == `If your device is newer than 2013 or you booting it online from some older devices, there's AD which is much less reliable and kind of helps you to book an appointment in Genius Bar '''instead of showing the real issue'''. Use Apple MRI to gather more information.` What is Apple MRI? How does one detect the real issue behind apples falsely display diagnostic code that always says nothings is wrong when we both know there is definitely something wrong with the hardware. . . ? b8tn6myhdlsqzew7w72d8yhjz1oag5p User talk:Pedro147 3 2002 5921 5920 2021-06-22T18:37:22Z Inwerp 16 Blanked the page 5921 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 User talk:Ritesh thakur 3 2171 6552 2022-08-05T21:07:53Z Orangera1n 640 /* Your recent edit. */ new section 6552 wikitext text/x-wiki == Your recent edit. == I have undone your edit due to it removing alot of content from the page. [[User:Orangera1n|Orangera1n]] ([[User talk:Orangera1n|talk]]) 17:07, 5 August 2022 (EDT) ge0pnb0uh55fljs07pmo5tshrkrk2li User talk:Universal Solution 3 308 775 2020-03-02T18:30:02Z Chrisb 1 Created page with "Please create talk pages if you want to discuss something. Regarding your question, you have a bad trace on the Audio IC. You need to run jumpers. I am working on a page to..." 775 wikitext text/x-wiki Please create talk pages if you want to discuss something. Regarding your question, you have a bad trace on the Audio IC. You need to run jumpers. I am working on a page to describe that repair. In the meantime search the iPhone repair groups on Facebook for Audio IC repair. There is a lot of information there. Thank you for your questions! 4s4xxqpmtz592r255gdpacgoqtrmeca User talk:Varsi 3 2045 6081 2021-09-18T22:26:53Z Varsi 540 /* iPhone board swap ic list */ new section 6081 wikitext text/x-wiki == iPhone board swap ic list == Can someone make a list of needed iPhone ic chips for full transplant (board swap)? Thanks :) iluf396l0zy545q54sz2lfl2sjzqo0j LogiWiki:About 4 2270 7077 7076 2024-04-04T00:04:17Z CBax 996 /* Collection of Data for AI Training and Inferencing Policy */ 7077 wikitext text/x-wiki This site is dedicated to sharing known good information about logic board repair. Please post only information that is proven. If you find anything incorrect please edit or leave notes so it can be corrected. Feel free to contribute, this is a group effort. You can use the “discussion” or talk pages to discuss changes to the current info or ask questions. === Collection of Data for AI Training and Inferencing Policy === Since LogiWiki content is the result of the dedication and knowledge of highly skilled repair industry leaders, the content on the LogiWiki main site, and other properties generally may not be used for training or inferencing with machine learning or AI. If LogiWiki data becomes part of a training or inferencing data set, or is used by such an application, the company or individual using the data agrees to pay 1% of their annual revenue to the LogiWiki maintainers as a license, for as long as they have and continue to incorporate or store the data and/or its derivatives. Incorporating or storing LogiWiki data for the use of machine learning, AI, large language models, generative models, or other machine learning related tasks is an explicit agreement to pay this license fee. There are no exceptions. cw6alr3wzf6iklbctrkj0fuu35id6z4 File:(2)S8 1 PNG.png 6 2044 6079 2021-09-18T15:42:08Z Alpha Bravo Tech. 538 6079 wikitext text/x-wiki Corrected values tevuv4p612avfar9j6w7kywwt3f227o File:00239-Overall View 1 Edited.jpg 6 224 640 2020-02-06T15:45:47Z Dusten04 30 640 wikitext text/x-wiki 00239-Overall View 1 Edited 3cs3cicpw5cg68xw0stkpu4f40r64dr File:00239 J3300.jpg 6 239 655 2020-02-06T15:58:39Z Dusten04 30 655 wikitext text/x-wiki 00239 J3300 l4y11v9slry8sw7aegj83fhwgz3x2j0 File:00239 J4401.jpg 6 237 653 2020-02-06T15:56:32Z Dusten04 30 653 wikitext text/x-wiki 00239 J4401 ojotmoj5q71vb8w77r6jjz63jibqgdr File:00239 J4402.jpg 6 240 656 2020-02-06T15:59:23Z Dusten04 30 656 wikitext text/x-wiki 00239 J4402 6e6a8de98hhh5x3xi0vk1ttfal3kgc9 File:00239 J4500.jpg 6 232 648 2020-02-06T15:52:16Z Dusten04 30 648 wikitext text/x-wiki 00239 J4500 3m6mufcom3r9i1oxghptjzmykn7exad File:00239 J4501.jpg 6 233 649 2020-02-06T15:52:56Z Dusten04 30 649 wikitext text/x-wiki 00239 J4501 r40oopyvh3t6w3qzh1bgjaedisaw73n File:00239 J4900.jpg 6 226 642 2020-02-06T15:47:17Z Dusten04 30 642 wikitext text/x-wiki 00239 J4900 ntqh41va7fiwaxzxujloxb4pi2jkqqt File:00239 J6200.jpg 6 238 654 2020-02-06T15:57:29Z Dusten04 30 654 wikitext text/x-wiki 00239 J6200 5tdvcmdaxjr15myf6v7gmknby9o8hq9 File:00239 J6410.jpg 6 235 651 2020-02-06T15:54:42Z Dusten04 30 651 wikitext text/x-wiki 00239 J6410 i18vmmqe1sqikez3sl8aez1u8pn89ov File:00239 J6430.jpg 6 236 652 2020-02-06T15:55:35Z Dusten04 30 652 wikitext text/x-wiki 00239 J6430 phkphosuyfcy9o2zcvyqsr6rrxyi3a5 File:00239 J6500.jpg 6 230 646 2020-02-06T15:50:40Z Dusten04 30 646 wikitext text/x-wiki 00239 J6500 oq1iytpny6nqqu5rf69fp8uuhkmzf5o File:00239 J6550.jpg 6 229 645 2020-02-06T15:49:37Z Dusten04 30 645 wikitext text/x-wiki 00239 J6550 qxylp0ptwtqwd7ow4exqo8zw7nxsi6c File:00239 J6600.jpg 6 227 643 2020-02-06T15:48:04Z Dusten04 30 643 wikitext text/x-wiki 00239 J6600 5nufggnlokm5qpt7ezfegar33vqr96d File:00239 J6951.jpg 6 234 650 2020-02-06T15:53:35Z Dusten04 30 650 wikitext text/x-wiki 00239 J6951 0j2eyxdn8s1opzterwc23o4t4cy9wlk File:00239 J8500.jpg 6 241 657 2020-02-06T16:00:10Z Dusten04 30 657 wikitext text/x-wiki 00239 J8500 9a49wjx63wki2sxhp8ssdft2pqk2m5s File:00239 J9600.jpg 6 231 647 2020-02-06T15:51:30Z Dusten04 30 647 wikitext text/x-wiki 00239 J9600 9u61tb02mi3ched2utpomqip17s2egz File:00239 JB500.jpg 6 228 644 2020-02-06T15:48:51Z Dusten04 30 644 wikitext text/x-wiki 00239 JB500 k18o3q0dcb13thojuds21atrmxshcth File:00244 J4801 Edited.jpg 6 456 1032 2020-04-07T18:13:42Z Dusten04 30 1032 wikitext text/x-wiki 00244 J4801 Edited 08499yekrcai969529w49244o3vggs6 File:00244 J6100 Edited.jpg 6 457 1033 2020-04-07T18:14:16Z Dusten04 30 1033 wikitext text/x-wiki 00244 J6100 Edited iwksrphn35enrbhnrq4hm3nyjyp3hsw File:00244 J6750 Edited.jpg 6 455 1031 2020-04-07T18:12:59Z Dusten04 30 1031 wikitext text/x-wiki 00244 J6750 Edited rmdje8ilcwxw5urdujp80shxn877w3r File:00244 J6751 Edited.jpg 6 459 1035 2020-04-07T18:15:55Z Dusten04 30 1035 wikitext text/x-wiki 00244 J6751 Edited ovafrdadxv3ceypxjwr2s2dzfa3d4jm File:00244 J6799 Edited.jpg 6 460 1036 2020-04-07T18:16:56Z Dusten04 30 1036 wikitext text/x-wiki 00244 J6799 Edited kwdkk24u57pu8yssb72a5xjovejlizi File:00244 J8500 Edited.jpg 6 458 1034 2020-04-07T18:15:10Z Dusten04 30 1034 wikitext text/x-wiki 00244 J8500 Edited geqaty9dh4vr4wm6h5qg2be1zqfvc7u File:00244 J9600 Edited.jpg 6 454 1030 2020-04-07T18:12:09Z Dusten04 30 1030 wikitext text/x-wiki 00244 J9600 Edited mvg38giflinqki5vh24src6ma2bayti File:00244 Overall Edited.jpg 6 453 1029 2020-04-07T18:11:35Z Dusten04 30 1029 wikitext text/x-wiki 00244 Overall Edited poprg88kvsq2b5h4qhv7u60lvkiezij File:00281 J3300.jpg 6 256 675 2020-02-06T23:07:00Z Dusten04 30 675 wikitext text/x-wiki 00281 J3300 jt0vdraxeib9rzhz34235sxg1zx6juj File:00281 J4401.jpg 6 254 673 2020-02-06T23:05:45Z Dusten04 30 673 wikitext text/x-wiki 00281 J4401 9hhdxmtjrlrbrztjkzwgb0z9uev2owk File:00281 J4402.jpg 6 257 676 2020-02-06T23:07:37Z Dusten04 30 676 wikitext text/x-wiki 00281 J4402 m96bxtqrkml7itwxizjkf4sh2ehsvz6 File:00281 J4500.jpg 6 251 670 2020-02-06T23:02:54Z Dusten04 30 670 wikitext text/x-wiki 00281 J4500 kkwb2htrcw43345l3dzgmk14754d6u0 File:00281 J4501.jpg 6 250 669 2020-02-06T23:02:10Z Dusten04 30 669 wikitext text/x-wiki 00281 J4501 ju899hadt2t9gw3a2jrq8mm2fe0az9f File:00281 J6100.jpg 6 249 668 2020-02-06T23:01:14Z Dusten04 30 668 wikitext text/x-wiki 00281 J6100 0v4dw3o9klbyftblhdgs9cb8rsj7xoc File:00281 J6200.jpg 6 255 674 2020-02-06T23:06:22Z Dusten04 30 674 wikitext text/x-wiki 00281 J6200 iy5z8frrbaizb5llw03e8yj9f4zeel4 File:00281 J6410.jpg 6 253 672 2020-02-06T23:05:04Z Dusten04 30 672 wikitext text/x-wiki 00281 J6410 pi7kepv16666sh1o01k0qjnaay5hn5q File:00281 J6500.jpg 6 247 666 2020-02-06T22:59:31Z Dusten04 30 666 wikitext text/x-wiki 00281 J6500 s7w991eyli1nwiprpcsukid9joyt7cu File:00281 J6951.jpg 6 252 671 2020-02-06T23:04:17Z Dusten04 30 671 wikitext text/x-wiki 00281 J6951 0c6x54mvelqi6bnzlspi060ybvlr49e File:00281 J8500.jpg 6 258 677 2020-02-06T23:08:20Z Dusten04 30 677 wikitext text/x-wiki 00281 J8500 06pvwth41aok3od8syw6ir0xr488veh File:00281 J9600.jpg 6 248 667 2020-02-06T23:00:24Z Dusten04 30 667 wikitext text/x-wiki 00281 J9600 11rpp2jgo489vo1g948zlls6m2bvfzu File:00281 JB500.jpg 6 246 665 2020-02-06T22:58:43Z Dusten04 30 665 wikitext text/x-wiki 00281 JB500 eakgsowe5co3qinadsk7upzkup16nxq File:00281 recto composite.jpg 6 1692 5042 2020-10-18T04:08:09Z Nobluesky 182 5042 wikitext text/x-wiki 820-00281 composite image gkhv3izhhi2yr2ryj4paytrkx2euuxz File:00281 recto composite v2.jpg 6 1703 5068 2020-10-20T22:32:52Z Nobluesky 182 5068 wikitext text/x-wiki 820-00281 composite image recto 5mwek4f83uudhys4tgyzofv3odlzihy File:00281 recto low res.jpg 6 1693 5043 2020-10-18T04:09:49Z Nobluesky 182 5043 wikitext text/x-wiki 820-00281 low res 3hojtxy4v4j3cfiokgbryo5a0z6n7ws File:00281 verso composite.jpg 6 1694 5044 2020-10-18T04:11:05Z Nobluesky 182 5044 wikitext text/x-wiki 820-00281 verso composite image jinf35z9mlmvlhp13gxv85cp4c7ymjt File:00281 verso composite v2.jpg 6 1704 5069 2020-10-20T22:34:20Z Nobluesky 182 5069 wikitext text/x-wiki 820-00281 composite image verso 7tujyhia0r3g0q4949ajd2zcpjenv5l File:00281 verso low res.jpg 6 1695 5045 2020-10-18T04:11:53Z Nobluesky 182 5045 wikitext text/x-wiki 820-00281 verso low res 8pm3bo7z2tbm5hg4zqs9uh5oytdavrk File:00875 J4801 Edited.jpg 6 433 981 2020-04-04T21:33:35Z Dusten04 30 981 wikitext text/x-wiki 00875 J4801 Edited hiq9x9gmv8zuhl627ha6ax03qhsx9jg File:00875 J4810 Edited.jpg 6 430 978 2020-04-04T21:31:14Z Dusten04 30 978 wikitext text/x-wiki 00875 J4810 Edited si05wq7mrd4xqchoozksgjnja64rdkq File:00875 J6600 Edited.jpg 6 428 976 2020-04-04T21:29:10Z Dusten04 30 976 wikitext text/x-wiki 00875 J6600 Edited g887680tf4t0ypumk9mbfyf7cavrljm File:00875 J6602 Edited.jpg 6 434 982 2020-04-04T21:34:21Z Dusten04 30 982 wikitext text/x-wiki 00875 J6602 Edited 5n84siecjbjdf9oblj08oz64hg9kjvm File:00875 J6603 Edited.jpg 6 429 977 2020-04-04T21:30:31Z Dusten04 30 977 wikitext text/x-wiki 00875 J6603 Edited 3pbnccqur7erg0db9kkaueo6izga2ce File:00875 J6951 Edited.jpg 6 432 980 2020-04-04T21:32:51Z Dusten04 30 980 wikitext text/x-wiki 00875 J6951 Edited fq4ur46qfc9qgfvebts6p2wz3lxjmdw File:00875 J8500 Edited.jpg 6 435 983 2020-04-04T21:35:01Z Dusten04 30 983 wikitext text/x-wiki 00875 J8500 Edited 5kdx7c76x5ja8g1pbd3zb24s1nbdirp File:00875 Overall 1 Edited.jpg 6 426 974 2020-04-04T21:25:41Z Dusten04 30 974 wikitext text/x-wiki 00875 Overall 1 Edited he73xq8t77aa8o2csx4f11sddjzkvwl File:00875 Overall 2 Edited.jpg 6 427 975 2020-04-04T21:27:46Z Dusten04 30 975 wikitext text/x-wiki 00875 Overall 2 Edited 6u8poqoh5wlglud3g03izcvheq4io16 File:00923 recto composite.jpg 6 1711 5087 2020-10-23T02:55:23Z Nobluesky 182 5087 wikitext text/x-wiki 820-00923 composite image recto ngh3mvhum4umh28tdcjm6ze1slytars File:00923 verso composite.jpg 6 1712 5088 2020-10-23T02:55:51Z Nobluesky 182 5088 wikitext text/x-wiki 820-00923 composite image verso jbz7h56vi0pyud1stl4z6b2sfvaetbf File:00928 recto composite.jpg 6 1697 5047 2020-10-18T04:14:00Z Nobluesky 182 5047 wikitext text/x-wiki 820-00928 composite image aayfec1t9nrqopqxh8pdn0agezg8xx1 File:00928 recto low res.jpg 6 1698 5048 2020-10-18T04:14:46Z Nobluesky 182 5048 wikitext text/x-wiki 820-00928 low res tvnxmk2m3f0clmy1uvy1xngh84kmzyz File:00928 verso composite.jpg 6 1699 5049 2020-10-18T04:15:25Z Nobluesky 182 5049 wikitext text/x-wiki 820-00928 verso composite image 22od9zsmepbe56qkbt3n97sahhfgjal File:00928 verso low res.jpg 6 1700 5050 2020-10-18T04:15:55Z Nobluesky 182 5050 wikitext text/x-wiki 820-00928 verso low res dt3605x6mzwjrvs3ho2l25ijsow06i2 File:01521 J6000 Edited.jpg 6 713 1511 2020-08-10T12:33:24Z Dusten04 30 1511 wikitext text/x-wiki 01521 J6000 Edited hcd2drp2va77habd2wjip61vwcfehwn File:01521 J6100 Edited.jpg 6 714 1512 2020-08-10T12:33:55Z Dusten04 30 1512 wikitext text/x-wiki 01521 J6100 Edited 49xluvmf4biw0b46028oe0btoeizbu2 File:01521 J6620 Edited.jpg 6 715 1513 2020-08-10T12:34:29Z Dusten04 30 1513 wikitext text/x-wiki 01521 J6620 Edited 2wn1g71b7m83e62076svvkaax88nmtw File:01527 J6700 Edited.jpg 6 716 1514 2020-08-10T12:35:11Z Dusten04 30 1514 wikitext text/x-wiki 01527 J6700 Edited r0kqb83ji8kon9ocy57e3rlwng7uztf File:11 Pro dot projector pins.jpg 6 1726 5115 2020-10-25T17:57:55Z Joesipaq 20 5115 wikitext text/x-wiki The sensor its self, and where the pins go on the flex 4mfklefjtn6mqol8m9fyzli6hlhb327 File:1 - Unmodded 2010-2011 A1286 LVDS Plug.jpg 6 1903 5619 2021-03-03T00:32:40Z Crumblenaut 317 5619 wikitext text/x-wiki Unmodded 2010-2011 A1286 LVDS Plug itjyzwkf028dpjtdijysmoezhj8bjpy File:1i Giveaway.jpg 6 1977 5869 2021-05-28T05:58:04Z Joesipaq 20 5869 wikitext text/x-wiki 1i HUD Giveaway o67pvn7ypgp6oi2h1vj4gafobcho7tj File:2010 Hard Drive Thermal Sensor Jumper.jpg 6 1911 5632 2021-03-03T01:14:07Z Crumblenaut 317 5632 wikitext text/x-wiki 2010 Hard Drive Thermal Sensor Jumper 781qh4tf9px3gn5fqwr2t7w8xfddf4d File:2015 A1398 gDPU HWmonitor.png 6 701 1462 2020-07-21T21:49:41Z Danandrei96 166 1462 wikitext text/x-wiki HWMonitor screenshot on a fully working 2015 A1398 with a 820-00163 dGPU mainboard. 31wlh08c92kbvc7nv0xsyn24uwa927f File:20220906 163314.png 6 2184 6586 2022-09-06T15:33:50Z Francis 4 6586 wikitext text/x-wiki Macbook Pro 15" Mid 2012 to Early 2013 model number 3d50imjk7hudvub2jn33a93ew15g65j File:20220906 174201.png 6 2185 6587 2022-09-06T15:54:41Z Francis 4 6587 wikitext text/x-wiki Macbook Pro 15" Late 2013 to Mid 2014 1vvg2193hgg87wfbrelkjg0meydj23z File:2 - Unmodded 2010-2011 LVDS vs 2012 LVDS Port.jpg 6 1904 5620 2021-03-03T00:34:14Z Crumblenaut 317 5620 wikitext text/x-wiki Unmodded 2010-2011 LVDS vs 2012 LVDS Port dldmmbnxfxg7ufvt6oevz0nnofga7na File:3.5mm Plug Types.png 6 2123 6364 2022-01-24T22:56:43Z Crumblenaut 317 6364 wikitext text/x-wiki TRS, TRRS, Mini-TOSLINK 3.5mm Plug Types dl5epscn119oacd46raikdmq7hcd2yu File:3435 J4002 Edited.jpg 6 450 1024 2020-04-07T15:00:09Z Dusten04 30 1024 wikitext text/x-wiki 3435 J4002 Edited ew8n7z9om8j50c1jifk4f6nrs4ww02p File:3435 J4800 Edited.jpg 6 444 1018 2020-04-07T14:55:48Z Dusten04 30 1018 wikitext text/x-wiki 3435 J4800 Edited 3ffekaivcm9een9158avckkyxrgypau File:3435 J6000 Edited.jpg 6 448 1022 2020-04-07T14:58:49Z Dusten04 30 1022 wikitext text/x-wiki 3435 J6000 Edited pctau9pvizepsbo3lpxt417kho2649z File:3435 J6100 Edited.jpg 6 447 1021 2020-04-07T14:58:16Z Dusten04 30 1021 wikitext text/x-wiki 3435 J6100 Edited hcz9eq6er7cncv8oe8vd1dk9vf0ae3b File:3435 J6404 Edited.jpg 6 443 1017 2020-04-07T14:55:13Z Dusten04 30 1017 wikitext text/x-wiki 3435 J6404 Edited pd30pqhkndk5mufqm69w1up7e65gcj9 File:3435 J6950 Edited.jpg 6 446 1020 2020-04-07T14:57:32Z Dusten04 30 1020 wikitext text/x-wiki 3435 J6950 Edited hr2mv0azoe4uw9c5uy1cemiky5tictm File:3435 J7000 Edited.jpg 6 449 1023 2020-04-07T14:59:31Z Dusten04 30 1023 wikitext text/x-wiki 3435 J7000 Edited 9w5tk3g3m67e2xssbi221tcrvm7uppl File:3435 J7715 Edited.jpg 6 445 1019 2020-04-07T14:56:50Z Dusten04 30 1019 wikitext text/x-wiki 3435 J7715 Edited 4oblivr8e24nmf6ba8eoh1dcyw8yaqk File:3435 J8300 Edited.jpg 6 442 1016 2020-04-07T14:53:51Z Dusten04 30 1016 wikitext text/x-wiki 3435 J8300 Edited 51spayeikw34iczmfsmtclbo7kpqye6 File:3435 J9500 Edited.jpg 6 451 1025 2020-04-07T15:00:54Z Dusten04 30 1025 wikitext text/x-wiki 3435 J9500 Edited ah2lmpl0nk6vui5ybcaeuibxpmdruz2 File:3435 Overall View 1.jpg 6 441 1015 2020-04-07T14:52:56Z Dusten04 30 1015 wikitext text/x-wiki 3435 Overall View 1 ab1q65hw4qaqnnct2fmegief1wlfvtn File:3 - Unmodded Top Closeup.jpg 6 1905 5621 2021-03-03T00:34:44Z Crumblenaut 317 5621 wikitext text/x-wiki Unmodded Top Closeup 7qjmbomizpjelv4mgk4sx0h9f8b9no5 File:4 - Post-Mod Top Closeup.jpg 6 1906 5622 2021-03-03T00:35:00Z Crumblenaut 317 5622 wikitext text/x-wiki Post-Mod Top Closeup eoa2pctdk1uwxof212qelm0pehge18u File:5 - Post-Mod Bottom Closeup.jpg 6 1907 5623 2021-03-03T00:35:17Z Crumblenaut 317 5623 wikitext text/x-wiki Post-Mod Bottom Closeup l8tag16g2zl6tx8fs322w98nla0pm10 File:6 - Post-Mod Fit in 2012 LVDS Port.jpg 6 1908 5624 2021-03-03T00:35:34Z Crumblenaut 317 5624 wikitext text/x-wiki Post-Mod Fit in 2012 LVDS Port 546hxbktvi01gxy3u96m1cqm6qgnmoa File:7 - Target for Cutting.jpg 6 1909 5625 2021-03-03T00:35:49Z Crumblenaut 317 5625 wikitext text/x-wiki Target for Cutting 6g97n6f8y477saplx675m78y95oa4l5 File:820-001598-A Bottom.jpg 6 1702 5058 5055 2020-10-19T08:57:32Z Satyricon 21 5058 wikitext text/x-wiki 820-01598-A Bottom astno819uw900392cf2bbnagexy4blw File:820-001598-A Top.jpg 6 1701 5057 5054 2020-10-19T08:56:16Z Satyricon 21 5057 wikitext text/x-wiki 820-01598-A Top p34su9dgpruroukod8i5apqy848nngt File:820-00165-ALL SYS PWRGD-PLT RESET L-sequence.pdf 6 785 1694 1680 2020-09-13T19:40:20Z Joesipaq 20 Joesipaq uploaded a new version of [[File:820-00165-ALL SYS PWRGD-PLT RESET L-sequence.pdf]] 1680 wikitext text/x-wiki S0 to Reset State for Ivy Bridge Haswell and Broadwell.pdf hpajz7uyfxlov9lerekrjyozqr630tu File:820-00165 2015 HWmonitor.png 6 699 1457 2020-07-20T19:17:10Z Danandrei96 166 1457 wikitext text/x-wiki HWmonitor screenshot from an 820-00165 with no issues 25bmtg0xolm173w0t3tth28tkngqo8a File:820-00165 2015 IStat menu.png 6 700 1458 2020-07-20T19:18:44Z Danandrei96 166 1458 wikitext text/x-wiki IStat menu sensor readings from an 820-00165 with no issues 8bv0lybq28pupas70pmzppzkn4gkzg3 File:820-00165 Back.jpg 6 71 144 2019-11-12T21:32:58Z Chrisb 1 144 wikitext text/x-wiki 820-00165 Back hbqj9p5rd5yjtfbo8ywaf3z86681bgx File:820-00165 Back Middle.jpg 6 76 149 2019-11-12T21:35:40Z Chrisb 1 149 wikitext text/x-wiki 820-00165 Back Middle deu8tprb49sua3h1nuu0pwkc2e91j4v File:820-00165 Back Right.jpg 6 75 148 2019-11-12T21:35:13Z Chrisb 1 148 wikitext text/x-wiki 820-00165 Back Right a73kgor0cqyaitbi4msynuan7o6vvhw File:820-00165 Front.jpg 6 70 143 2019-11-12T21:32:07Z Chrisb 1 143 wikitext text/x-wiki 820-00165 Front a48yu4rq7h2bf1fymmalszk5b8kgdmm File:820-00165 Front Left.jpg 6 74 147 2019-11-12T21:34:45Z Chrisb 1 147 wikitext text/x-wiki 820-00165 Front Left ewu0ydgnqqgm16bap6mqebre7dvaqgc File:820-00165 Front Middle.jpg 6 73 146 2019-11-12T21:34:20Z Chrisb 1 146 wikitext text/x-wiki 820-00165 Front Middle ltt91q2dsxbblu3t8uu1z095tkjmro6 File:820-00165 Front Right.jpg 6 72 145 2019-11-12T21:33:57Z Chrisb 1 145 wikitext text/x-wiki 820-00165 Front Right kqk4p9y8k04wuacl8flay6j6yd03626 File:820-00165 J3501 Final.jpg 6 646 1338 2020-06-16T17:31:28Z Dusten04 30 1338 wikitext text/x-wiki 820-00165 J3501 Final d5gquh2ik73wzozkk5yjhm9fexj0ak1 File:820-00165 J3700 Final.jpg 6 647 1339 2020-06-16T17:32:29Z Dusten04 30 1339 wikitext text/x-wiki 820-00165 J3700 Final 5glnijp9uzj4rd41das62ri7k3cbhj5 File:820-00165 J4002 Final.jpg 6 648 1340 2020-06-16T17:33:00Z Dusten04 30 1340 wikitext text/x-wiki 820-00165 J4002 Final imchn46fe0v0dmxtysn4mbuqbqcxmwx File:820-00165 J4800 Final.jpg 6 649 1341 2020-06-16T17:33:34Z Dusten04 30 1341 wikitext text/x-wiki 820-00165 J4800 Final 1eow5jixfcmtqmfqrl7e3gvctagb7xk File:820-00165 J6000 FInal.jpg 6 650 1342 2020-06-16T17:34:11Z Dusten04 30 1342 wikitext text/x-wiki 820-00165 J6000 FInal 1zsoh96458uz8wstw5l8v59a2dho1w3 File:820-00165 J6100 FInal.jpg 6 651 1343 2020-06-16T17:34:50Z Dusten04 30 1343 wikitext text/x-wiki 820-00165 J6100 FInal ig8s8k9ibbqdn2b3iqgr9l7yzagnv0b File:820-00165 J6404 Final.jpg 6 652 1344 2020-06-16T17:35:32Z Dusten04 30 1344 wikitext text/x-wiki 820-00165 J6404 Final ic9wclst7sbb6svqcskzmd8wyv6io4n File:820-00165 J6950 Final.jpg 6 653 1345 2020-06-16T17:36:07Z Dusten04 30 1345 wikitext text/x-wiki 820-00165 J6950 Final tr34teequ5l6ty9p3p311v579im7yqk File:820-00165 J7000 Final.jpg 6 654 1346 2020-06-16T17:36:41Z Dusten04 30 1346 wikitext text/x-wiki 820-00165 J7000 Final 2zvadz3mxea0iypiuqp3marb8w51vkm File:820-00165 J7715 FInal.jpg 6 655 1347 2020-06-16T17:37:21Z Dusten04 30 1347 wikitext text/x-wiki 820-00165 J7715 FInal ink6qhg9r3my0oyfrlmj26frybshy89 File:820-00165 J8300 Final.jpg 6 656 1348 2020-06-16T17:37:55Z Dusten04 30 1348 wikitext text/x-wiki 820-00165 J8300 Final dxz9fr5a6junbxghx56zqocz0e9bxyd File:820-00165 J9500 Final.jpg 6 657 1349 2020-06-16T17:38:26Z Dusten04 30 1349 wikitext text/x-wiki 820-00165 J9500 Final 7ygszf4dlo6ci72y40inifuzvbqdi6q File:820-00165 battery throttling.jpg 6 1872 5520 2021-01-21T00:43:08Z Nobluesky 182 5520 wikitext text/x-wiki 820-00165 throttling due to bad battery (same with no battery). reolu44ed7by267efug99zgt6iovf2m File:820-001949 OTP.png 6 2226 6829 2023-05-05T11:06:11Z Inwerp 16 6829 wikitext text/x-wiki 820-001949 OTP 1dkq742ewarr8we9zg6t1jb8h02o5ja File:820-00426 J3501 Edited.jpg 6 662 1363 2020-06-23T21:12:54Z Dusten04 30 1363 wikitext text/x-wiki 820-00426 J3501 Edited 3wao47867rxp61qr2pohea0ub0wpf2s File:820-00426 J3700 Edited.jpg 6 663 1364 2020-06-23T21:16:19Z Dusten04 30 1364 wikitext text/x-wiki 820-00426 J3700 Edited 9i42q77e6fg2lvaxgq6kud6skz4y298 File:820-00426 J4002 Edited.jpg 6 664 1365 2020-06-23T21:16:54Z Dusten04 30 1365 wikitext text/x-wiki 820-00426 J4002 Edited 2b9ydoayaip9mut0pldu29ivzp25fcz File:820-00426 J4801 Edited.jpg 6 665 1366 2020-06-23T21:17:28Z Dusten04 30 1366 wikitext text/x-wiki 820-00426 J4801 Edited 5i22bgq0ph0ioudo50jw9gcjy0ybwrs File:820-00426 J4813 Edited.jpg 6 666 1367 2020-06-23T21:18:02Z Dusten04 30 1367 wikitext text/x-wiki 820-00426 J4813 Edited 34soyw210sqxc9010w4j93d6649zuss File:820-00426 J4915 Edited.jpg 6 667 1368 2020-06-23T21:18:34Z Dusten04 30 1368 wikitext text/x-wiki 820-00426 J4915 Edited 1pcnwd2tjkg0by4qmc6vv9q18m79fd9 File:820-00426 J6060 Edited.jpg 6 668 1369 2020-06-23T21:19:02Z Dusten04 30 1369 wikitext text/x-wiki 820-00426 J6060 Edited 03ojqtn5xry4fcuqvu16irxb4cdoryf File:820-00426 J6100 Edited.jpg 6 669 1370 2020-06-23T21:19:39Z Dusten04 30 1370 wikitext text/x-wiki 820-00426 J6100 Edited 9lv0d08zcm60krlf7ub702gf8gb8qyq File:820-00426 J6601 Edited.jpg 6 670 1371 2020-06-23T21:20:10Z Dusten04 30 1371 wikitext text/x-wiki 820-00426 J6601 Edited 2sg2t1hq3mflw3rtbbwgqycft8hj0uv File:820-00426 J6602 Edited.jpg 6 671 1372 2020-06-23T21:20:42Z Dusten04 30 1372 wikitext text/x-wiki 820-00426 J6602 Edited e2trvq9atlxpm3ht8zgva08pol09upp File:820-00426 J6603 Edited.jpg 6 672 1373 2020-06-23T21:21:18Z Dusten04 30 1373 wikitext text/x-wiki 820-00426 J6603 Edited smwnbni4ne7sbl3utxprivxnalvz2nz File:820-00426 J7000 Edited.jpg 6 673 1374 2020-06-23T21:21:50Z Dusten04 30 1374 wikitext text/x-wiki 820-00426 J7000 Edited ipg53zf5qmfix0r77wgrqf277wdgj7i File:820-00426 J7050 Edited.jpg 6 674 1375 2020-06-23T21:22:17Z Dusten04 30 1375 wikitext text/x-wiki 820-00426 J7050 Edited pel6wihl4ibkdk46jv21kt9ii3914vp File:820-00426 J8300 Edited.jpg 6 675 1376 2020-06-23T21:22:42Z Dusten04 30 1376 wikitext text/x-wiki 820-00426 J8300 Edited 2qcfk74lf0oo5puxnob94n1s50b7dry File:820-00426 J9500 Edited.jpg 6 676 1377 2020-06-23T21:23:07Z Dusten04 30 1377 wikitext text/x-wiki 820-00426 J9500 Edited 8r7qsvrghbtrrqapbrsmdi97eo9gwfa File:820-00426 J9510 Edited.jpg 6 677 1378 2020-06-23T21:23:34Z Dusten04 30 1378 wikitext text/x-wiki 820-00426 J9510 Edited jt15eryhojgk3jqxlkqda6craaexb8z File:820-00840 12s EFI.png 6 1681 5017 2020-10-14T22:57:29Z Chrisb 1 Uploaded own work with UploadWizard 5017 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=820-00840 12s EFI}} |date=2020-10-14 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} [[Category:EFI]] eyaxe1tj4cmhvwzc59a3kb4n3kud4yf File:820-00840 2.4s EFI.png 6 1680 5016 2020-10-14T22:57:29Z Chrisb 1 Uploaded own work with UploadWizard 5016 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=820-00840 2.4s EFI}} |date=2020-10-14 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} [[Category:EFI]] 28ny6pgau90taeaoxsmfx4muewiqcvz File:820-00840 24s EFI.png 6 1682 5018 2020-10-14T22:57:29Z Chrisb 1 Uploaded own work with UploadWizard 5018 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=820-00840 24s EFI}} |date=2020-10-14 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} [[Category:EFI]] 6owtcjkwu7engndzfdn80d1pmkvx3cn File:820-00840 LPC FRAME L B SPI MLB CS L Y 2.4s EFI SMC.png 6 1683 5019 2020-10-14T22:57:29Z Chrisb 1 Uploaded own work with UploadWizard 5019 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=820-00840 LPC FRAME L B SPI MLB CS L Y 2.4s EFI SMC}} |date=2020-10-14 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} [[Category:EFI]] nja22itwnkkgdyinv5soszgso4u7l7q File:820-00840 LPC FRAME L B SPI MLB CS L Y 24s EFI SMC.png 6 1684 5020 2020-10-14T22:57:29Z Chrisb 1 Uploaded own work with UploadWizard 5020 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=820-00840 LPC FRAME L B SPI MLB CS L Y 24s EFI SMC}} |date=2020-10-14 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} [[Category:EFI]] ns8ld6y4s6ksz10aqkuj2wdlctnpi73 File:820-00840 P13.jpg 6 2014 5963 2021-08-03T22:51:39Z Joesipaq 20 5963 wikitext text/x-wiki 820-00840 P13USB32 Diode readings di8mxl1cctngy1du5eu1z1bx2hafygd File:820-00840 SPIROM USEMLB B SPI MLB CS L Y 24s EFI.png 6 1685 5021 2020-10-14T22:57:29Z Chrisb 1 Uploaded own work with UploadWizard 5021 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=820-00840 SPIROM USEMLB B SPI MLB CS L Y 24s EFI}} |date=2020-10-14 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} [[Category:EFI]] mhceusl6pt85d830gqwieub5i1kvygu File:820-01055 Component Placement.pdf 6 594 1242 2020-05-13T14:14:07Z Chrisb 1 1242 wikitext text/x-wiki 820-01055 Component Placement satnyo16sxhf8tfr65eu4drnr1wp3xy File:820-01055 Power On Chart.pdf 6 596 1244 2020-05-13T14:15:53Z Chrisb 1 1244 wikitext text/x-wiki 820-01055 Power On Chart 487lmsbf0xotl8jdmk9cg4c1dgo0dky File:820-01055 Power Sequence.pdf 6 595 1243 2020-05-13T14:15:01Z Chrisb 1 1243 wikitext text/x-wiki 820-01055 Power Sequence g0d0vdyekxuxc7qxoa5nvivn35izm5m File:820-01598 Prometheus Power Sequence Diagram LO2.pdf 6 628 1310 2020-06-08T01:57:22Z Chrisb 1 1310 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 File:820-01598 bottom brd.jpg 6 1707 5077 2020-10-22T16:32:20Z Satyricon 21 5077 wikitext text/x-wiki for board view np97p1nyxqads5at14i6pbjysgu9kvq File:820-01598 top brd.jpg 6 1706 5076 2020-10-22T16:31:16Z Satyricon 21 5076 wikitext text/x-wiki for board view np97p1nyxqads5at14i6pbjysgu9kvq File:820-2828 TP HDD OOB TEMP FB bridge.jpg 6 2264 7041 2024-01-15T10:24:32Z Piernov 10 7041 wikitext text/x-wiki HDD_OOB_TEMP_FB test point bridged to ground plane on 2011 27" 820-2828 rzrseyb20c27gpz215s09jsmiwwr4i2 File:820-2850 bottom.jpg 6 1728 5121 5118 2020-10-26T17:55:46Z Piernov 10 Piernov uploaded a new version of [[File:820-2850 bottom.jpg]] 5118 wikitext text/x-wiki 820-2850 bottom 9zvhze7yycadj8t3tzuwlsr7oo3r64b File:820-2850 top.jpg 6 1727 5120 5117 2020-10-26T17:55:35Z Piernov 10 Piernov uploaded a new version of [[File:820-2850 top.jpg]] 5117 wikitext text/x-wiki 820-2850 top iheh7caegr5kytpt3lokcx54fjpej36 File:820-2936 sensors no battery.jpg 6 2025 6022 2021-08-25T18:36:07Z Piernov 10 6022 wikitext text/x-wiki 820-2936 sensors no battery ku6v7imwkh0l0pw4nuaznmt8qvlnvic File:820-2936 sensors with battery.jpg 6 2026 6023 2021-08-25T18:36:40Z Piernov 10 6023 wikitext text/x-wiki 820-2936 sensors with battery 6nc7a47fayv7ugp3bz4w4nbzhq7enac File:820-3023 bottom.jpg 6 1730 5123 2020-10-26T18:04:07Z Piernov 10 5123 wikitext text/x-wiki 820-3023 bottom rrt1izembxv92ut5lk2w0isftydi3z3 File:820-3023 top.jpg 6 1729 5122 2020-10-26T18:03:51Z Piernov 10 5122 wikitext text/x-wiki 820-3023 top r7bjmahnws22xu17grcqkzohbo81u7x File:820-3115 bottom.jpg 6 1732 5127 2020-10-26T18:08:18Z Piernov 10 5127 wikitext text/x-wiki 820-3115 bottom mpnbc1doky0pvogtiyewzkzfxy6uczx File:820-3115 top.jpg 6 1731 5126 2020-10-26T18:08:06Z Piernov 10 5126 wikitext text/x-wiki 820-3115 top trc7czrqhtad22yaazzecfk7eu1mz5y File:820-3209 bottom.jpg 6 1734 5130 2020-10-26T18:12:31Z Piernov 10 5130 wikitext text/x-wiki 820-3209 bottom m4we6p5tm9aijj78d2fme0w8psdat5d File:820-3209 top.jpg 6 1733 5129 2020-10-26T18:12:20Z Piernov 10 5129 wikitext text/x-wiki 820-3209 top o2c6zd9quvoexdox068jsgusgvu09rm File:820-3437 Beeping SPI CS0 L.jpg 6 863 1946 2020-09-28T09:35:39Z Piernov 10 1946 wikitext text/x-wiki 820-3437 with RAM issue, SPI_CS0_L 8fb6ieszziv3tdwezzotzwcqzzslado File:820-3437 Pulsing CPU VCore.jpg 6 860 1943 2020-09-28T09:32:43Z Piernov 10 1943 wikitext text/x-wiki 820-3437 Pulsing CPU VCore when R6120 is removed, simulating communication issue with SPI ROM causing power cycling. smlolnb3q1122sgssivuxe0jr02i45x File:820-3437 Pulsing PM SLP S5 L.jpg 6 861 1944 2020-09-28T09:33:40Z Piernov 10 1944 wikitext text/x-wiki 820-3437 Pulsing PM_SLP_S5_L when R6120 is removed on a 3437, simulating communication issue with SPI ROM causing power cycling. gt0m2h78m8nfodg3m4ftr24jq8ccgpf File:820-3437 Pulsing SPI CS0 L.jpg 6 862 1945 2020-09-28T09:34:11Z Piernov 10 1945 wikitext text/x-wiki 820-3437 Pulsing SPI_CS0_L when R6120 is removed on a 3437, simulating communication issue with SPI ROM causing power cycling. rvdh91oz6cfm8rlhwbkqwyfckdkeg54 File:820-3476 bottom.jpg 6 1736 5133 2020-10-26T18:17:05Z Piernov 10 5133 wikitext text/x-wiki 820-3476 bottom 1ije5afi5ehb6lvbey0hawz4p44exzb File:820-3476 top.jpg 6 1735 5132 2020-10-26T18:16:52Z Piernov 10 5132 wikitext text/x-wiki 820-3476 top rad2z6nqxr5jrm8xarmk2iqyeh7tuhy File:820-3662 bottom.jpg 6 1740 5139 2020-10-26T18:24:45Z Piernov 10 5139 wikitext text/x-wiki 820-3662 bottom eegrd6gxzluc5d3z2hj4t78w6dxqy9g File:820-3662 top.jpg 6 1739 5138 2020-10-26T18:24:34Z Piernov 10 5138 wikitext text/x-wiki 820-3662 top 337dknz3owfrnlvmfk4xdt6u68i9z47 File:820-3787.jpg 6 2118 6338 2022-01-09T16:21:47Z Inwerp 16 6338 wikitext text/x-wiki Both LP8548 + LP8549 on one page ksj945pjm92wi886doglhor9jy9iaoh File:820-3787 bottom.jpg 6 1738 5136 2020-10-26T18:19:27Z Piernov 10 5136 wikitext text/x-wiki 820-3787 bottom pbyav8f5f5mtmca2yuesu7ln59639c5 File:820-3787 top.jpg 6 1737 5135 2020-10-26T18:19:17Z Piernov 10 5135 wikitext text/x-wiki 820-3787 top frbznorv9mm4528yhyxvzbqrgkjuzg2 File:A1417 battery for A1398 adh pattern 1.jpg 6 2006 5927 2021-07-03T00:11:02Z Augytek 482 5927 wikitext text/x-wiki Adhesive pattern for reference Early 2013 A1398 Macbook Pro, model A1417 battery 3d91gwndkjpyg6u6en5pxwfil1f7j9w File:A1417 battery for A1398 adh pattern 1fixed.jpg 6 2007 5928 2021-07-03T00:22:45Z Augytek 482 5928 wikitext text/x-wiki removed A1417 battery intact adhesive pattern 5ll9yr11mp1dmmeeca0gxjccslmohrf File:A1417 battery for A1398 adh pattern 2.jpg 6 2008 5929 2021-07-03T00:29:39Z Augytek 482 5929 wikitext text/x-wiki Inverse pic of pattern 1 picture ikvjqx2gduo0qt629dli9oskkwspbfx File:A1419 12V Good.png 6 94 174 2019-11-14T21:38:31Z Chrisb 1 User created page with UploadWizard 174 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=A1419 12V Good}} |date=2019-11-14 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} tf0vb9o06d8o7cuh9ldw068cb4jyd7e File:A1419 12V Shutting Down.png 6 88 168 2019-11-14T21:38:29Z Chrisb 1 User created page with UploadWizard 168 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=A1419 12V Shutting Down}} |date=2019-11-14 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} 89hywspems91hufxz3y7423ubo5rpw8 File:A1419 Power Pin 1 Good.png 6 92 172 2019-11-14T21:38:31Z Chrisb 1 User created page with UploadWizard 172 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=A1419 Power Pin 1 Good}} |date=2019-11-14 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} mfu0368rtm27vh44t0wq8u8rtnqndjp File:A1419 Power Pin 1 Shutting Down.png 6 86 166 2019-11-14T21:38:29Z Chrisb 1 User created page with UploadWizard 166 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=A1419 Power Pin 1 Shutting Down}} |date=2019-11-14 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} rlghgps3kggm855j0ab54uzporjcjqd File:A1419 Power Pin 3 Good.png 6 93 173 2019-11-14T21:38:31Z Chrisb 1 User created page with UploadWizard 173 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=A1419 Power Pin 3 Good}} |date=2019-11-14 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} i69qhh4ny6xnmt141ust4sjem950hkp File:A1419 Power Pin 3 Shutting Down.png 6 87 167 2019-11-14T21:38:29Z Chrisb 1 User created page with UploadWizard 167 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=A1419 Power Pin 3 Shutting Down}} |date=2019-11-14 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} ckpm1k7xn7k699neo8ctu3w2jhkzhfb File:A1419 Power Pin 4 Good.png 6 89 169 2019-11-14T21:38:30Z Chrisb 1 User created page with UploadWizard 169 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=A1419 Power Pin 4 Good}} |date=2019-11-14 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} 4jgzyjnusl42qkisuiljo4polj4yupj File:A1419 Power Pin 4 Shutting Down.png 6 83 163 2019-11-14T21:38:28Z Chrisb 1 User created page with UploadWizard 163 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=A1419 Power Pin 4 Shutting Down}} |date=2019-11-14 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} edeghkc62tiyl00um6tyl16g35rzgb0 File:A1419 Power Pin 5 Good.png 6 90 170 2019-11-14T21:38:30Z Chrisb 1 User created page with UploadWizard 170 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=A1419 Power Pin 5 Good}} |date=2019-11-14 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} rfws431curgdkziklrrkiyz95leuaaz File:A1419 Power Pin 5 Shutting Down.png 6 84 164 2019-11-14T21:38:28Z Chrisb 1 User created page with UploadWizard 164 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=A1419 Power Pin 5 Shutting Down}} |date=2019-11-14 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} siqrtsgxe68ou56afido004l087e83q File:A1419 Power Pin 7 Good.png 6 91 171 2019-11-14T21:38:30Z Chrisb 1 User created page with UploadWizard 171 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=A1419 Power Pin 7 Good}} |date=2019-11-14 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} hlfslzdaaremrzpwwtlja8k8c5r3yg6 File:A1419 Power Pin 7 Shutting Down.png 6 85 165 2019-11-14T21:38:28Z Chrisb 1 User created page with UploadWizard 165 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=A1419 Power Pin 7 Shutting Down}} |date=2019-11-14 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} 7c0mgb1gguzq7pybabb3fffl0a0yb2y File:A1494 OEM BOTTOM.jpg 6 1752 5215 2020-11-12T19:08:58Z Inwerp 16 5215 wikitext text/x-wiki Bottom view A1494 kixlbm5wk584kcyrulyyhylu8sle6gm File:A1494 OEM PCB.jpg 6 1753 5216 2020-11-12T19:10:27Z Inwerp 16 5216 wikitext text/x-wiki PCB d4ke8vvy4gorqiu6lku4lmnipce3ty6 File:A1494 OEM TEMP.jpg 6 1755 5221 2020-11-12T19:29:12Z Inwerp 16 5221 wikitext text/x-wiki temperature protection i860c2gqgc8i6h83j6ujkqwg9kds2or File:A1494 OEM TOP.jpg 6 1751 5214 2020-11-12T19:07:39Z Inwerp 16 5214 wikitext text/x-wiki Overview 1r0jtnjmajwj3iih9ssob52ql71mokn File:A1502 Keyboard flex.png 6 756 1607 2020-09-04T14:15:33Z Inwerp 16 1607 wikitext text/x-wiki How to reinstall 6ri1sm7gsvgyufsor9omuvrhhrp2zgx File:A1502 Sleep Sensor 1.png 6 1424 3137 2020-10-08T21:43:11Z Chrisb 1 3137 wikitext text/x-wiki A1502 Sleep Sensor 1 8xn2r9l0idy2yk3te2z7w20ai53mo7c File:A1502 Sleep Sensor 2.png 6 1425 3138 2020-10-08T21:43:45Z Chrisb 1 3138 wikitext text/x-wiki A1502 Sleep Sensor 2 mt5byhfxxwixg5u3isprzdsqbvafjj1 File:A1534 SMC ONOFF Trackpad Test point.jpg 6 678 1387 2020-07-02T15:48:25Z Satyricon 21 1387 wikitext text/x-wiki SMC_ONOFF test point on A1534 Trackpad j53yd1ennea9c05h5s8huz3ifbih7tz File:A1582 OEM BOTTOM.jpg 6 1757 5225 2020-11-12T19:44:06Z Inwerp 16 5225 wikitext text/x-wiki bottom view of a1582 macbook battery rbh0zm4bjv5ldpouzijkjijp0iha7k6 File:A1582 OEM PCB.jpg 6 1758 5226 2020-11-12T19:46:00Z Inwerp 16 5226 wikitext text/x-wiki PCB of a1582 OEM macbook battery gn4zfnrjvb0nsp4kpxq5lvjlkzwkm1x File:A1582 OEM TEMP.jpg 6 1759 5227 2020-11-12T19:49:11Z Inwerp 16 5227 wikitext text/x-wiki Thermal cutoff is present on every cell 90snlbvxrqmnzp0ef2uuy7rl30ete90 File:A1582 OEM TOP.jpg 6 1756 5224 2020-11-12T19:42:23Z Inwerp 16 5224 wikitext text/x-wiki Topview 8ftam37lpgwxmzjt7pcfuhemea828lv File:A1706-1708 Backlight Pinout.jpg 6 621 1284 2020-05-19T13:13:07Z Chrisb 1 1284 wikitext text/x-wiki A1706-1708 Backlight Pinout 4vq1algiauuhcfmgh3h7l18pkjr2asq File:A1706 A1708 Backlight Flex Pinout.jpg 6 624 1289 2020-05-19T13:16:11Z Chrisb 1 1289 wikitext text/x-wiki A1706 A1708 Backlight Flex Pinout n6smszt2c27f3mbebxtx4quyf6zao5k File:A1706 USB-C Sequence.jpg 6 17 5172 5171 2020-10-29T04:57:15Z Drdiff 236 Drdiff reverted [[File:A1706 USB-C Sequence.jpg]] to an old version 18 wikitext text/x-wiki A1707 USB-C Sequence 89i2ij4t4ncfsliipx0dfyt498mu47g File:A1707 Layer 3.jpg 6 150 447 2020-01-31T16:31:51Z Chrisb 1 447 wikitext text/x-wiki layer 3 of A1707 TP area 33shfx8ul781fh392p4rtw6p96b6uwn File:A1707 USB-C Sequence.jpg 6 659 1355 2020-06-18T04:14:23Z Chrisb 1 Chrisb moved page [[File:A1707 USB-C Sequence.jpg]] to [[File:A1706 USB-C Sequence.jpg]] 1355 wikitext text/x-wiki #REDIRECT [[File:A1706 USB-C Sequence.jpg]] s53tjvjrzv5wla905xug7s4us9savpu File:A1707 layer 3.jpg 6 151 448 2020-01-31T16:33:49Z Chrisb 1 448 wikitext text/x-wiki A1707 layer 3 near TP connector qpm16ya3z4wh5movlv5mif9q7lji3b7 File:A1707 scraped TP connector.jpg 6 152 449 2020-01-31T16:34:59Z Chrisb 1 449 wikitext text/x-wiki A1707 scraped TP connector 3nq5c39grs12j5ndz3qmtfarhevt1c2 File:A1707 scraped TP connector zoom.jpg 6 153 450 2020-01-31T16:35:39Z Chrisb 1 450 wikitext text/x-wiki A1707 scraped TP connector zoom rfgsvvgn560meyxa4perbzwyj1bu6kg File:A1708 2016 to 2017 SSD MOD.png 6 1974 5840 2021-05-18T09:09:04Z Inwerp 16 5840 wikitext text/x-wiki This pic describes difference between 00840 and 00875 boards. 99dxaz7bmq19n6xw5dqvr3upenulao3 File:A1708 USB-C port teardown.png 6 1416 3071 2020-10-06T19:47:55Z Chrisb 1 3071 wikitext text/x-wiki A1708 USB-C port teardown ha9m71ojg8z4hyl1nkkbpre3mjmrzo8 File:A1819 recto.jpg 6 1865 5487 2021-01-15T15:04:42Z Nobluesky 182 5487 wikitext text/x-wiki A1819 recto jwwglvgyd3c32tztullk277woq81xh6 File:A1819 recto pcb.jpg 6 1866 5488 2021-01-15T15:05:45Z Nobluesky 182 5488 wikitext text/x-wiki A1819 recto pcb 1ayc5em9g97s5k5dy48ckvg97ekbwd3 File:A1819 verso.jpg 6 1867 5489 2021-01-15T15:06:19Z Nobluesky 182 5489 wikitext text/x-wiki A1819 verso 5gy7bsob2tyxxaqfvgbt6ylry8j0ivp File:A1819 verso pcb.jpg 6 1868 5490 2021-01-15T15:06:58Z Nobluesky 182 5490 wikitext text/x-wiki A1819 verso pcb frbd85x5m4y3galyxjptoeot4dk2p4n File:A1819 verso thermalcouple.jpg 6 1869 5491 2021-01-15T15:08:07Z Nobluesky 182 5491 wikitext text/x-wiki A1819 verso thermalcouple 96xr80s6qd6ee3mag4okrn9rwpatvy6 File:A1993 Power Supply Voltage Test 01.jpg 6 1338 2938 2020-10-04T19:28:53Z Alan.l 19 2938 wikitext text/x-wiki A1993 Power Supply Voltage Test 01 4ln0d8scmvl6e2z3kom392cqpsq92ff File:A1993 Power Supply Voltage Test 02.jpg 6 1339 2939 2020-10-04T19:29:17Z Alan.l 19 2939 wikitext text/x-wiki A1993 Power Supply Voltage Test 02 hax8mimqykwo23952p7xy8fnzbqmmkr File:A2442LidAngle.jpg 6 2236 6909 2023-09-14T12:43:02Z Alex6337 28 6909 wikitext text/x-wiki Lid Angle sensor schematics for A2442 0hsa5ow77fieozdb89tfi0slxq3tk0j File:A2442 820-02098 Diode measurnments.png 6 2167 6542 2022-07-14T08:59:24Z Inwerp 16 6542 wikitext text/x-wiki A2442 820-02098 main PMU diode r9nn4i2ohx7vd12jqn63zjq8nlbphby File:A2442 820-02098 Secondary PMU.jpg 6 2168 6543 2022-07-14T09:00:20Z Inwerp 16 6543 wikitext text/x-wiki A2442 820-02098 Secondary PMU jbqfkpwfgrlivssy6tkrxkq5b4hm7zp File:A2442 TPS62180 ELC180 - SSD corner Side - diode-measurements.png 6 2173 6558 2022-08-12T21:35:56Z IT-Solve 181 6558 wikitext text/x-wiki A2442 TPS62180 ELC180 - SSD corner Side - diode-measurements 9tleuzyt7bh1gtmsp92y8qxgi5a41db File:ALL SYS PWRGD on 820-3332.png 6 205 604 2020-02-02T16:36:35Z Piernov 10 604 wikitext text/x-wiki ALL_SYS_PWRGD on 820-3332 abv4tu935h9joh8ux78i81zq80n0xat File:ALS and IRCAM 13pm dfcloud6(2).jpg 6 2659 7713 2024-12-31T12:43:22Z Dfcloud6 1726 7713 wikitext text/x-wiki ALS and IR-CAM 13pm dfcloud6 8qlrpmow746nvrgn7jf3ifvqcnxt9zt File:ANT POWER KEY SE 2022 final.jpg 6 2664 7719 2024-12-31T12:56:11Z Dfcloud6 1726 7719 wikitext text/x-wiki RF and PWRKEY iphone se 2022 dfcloud6 5xikpqin4g9ulak6800p2mtzz85u09k File:Ambox warning pn.svg 6 2179 6576 2022-08-31T18:04:26Z Chrisb 1 6576 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 File:Apple-DB15-13w3-pinout-diagram-cropped.jpg 6 1864 5485 2021-01-15T13:47:51Z Chrisb 1 5485 wikitext text/x-wiki DB15 to 13W3 pinout stu8qpfpw6jscvb8h209mssdacz5ako File:Apple Diagnostics.png 6 211 618 2020-02-02T18:24:48Z Inwerp 16 618 wikitext text/x-wiki Apple Diagnostics result 0jcla8f51ffhywdk6gm634sjycjzpeq File:Apple M1 Wifi module.png 6 2211 6735 2023-02-12T17:08:59Z Inwerp 16 6735 wikitext text/x-wiki Apple M1 Wifi module a91970xxdrnmpbetphz9h2o6v0ooket File:Apple Memory Guide.pdf 6 1862 5479 2021-01-14T05:21:20Z Chrisb 1 5479 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 File:Audio Jack Schematic (820-2936).png 6 2127 6368 2022-01-25T01:30:32Z Crumblenaut 317 6368 wikitext text/x-wiki Audio Jack Schematic (820-2936) 0vao5hoglgpumf9c9ssbubmwkoqhv83 File:BBOX Media 1.jpg 6 772 1649 2020-09-12T02:51:18Z Eden 191 1649 wikitext text/x-wiki Device in normal mode k8xrygqcop3ckms24c7xkrbbcessfzx File:BBOX Media 2.jpg 6 773 1650 2020-09-12T02:54:10Z Eden 191 1650 wikitext text/x-wiki BBOX online & device booted to DFU m7mk14p8yn0nucyxxzn9obpznwf69ym File:BBOX Media 3.png 6 774 1652 2020-09-12T03:19:43Z Eden 191 1652 wikitext text/x-wiki BBOX Media 3 b8dn6a65a3zh2a7s4vhpvdx50sf1ese File:BBOX Media 4.png 6 775 1653 2020-09-12T03:23:15Z Eden 191 1653 wikitext text/x-wiki BBOX Media 4 q9n2hxiq6kewlatir8hynn5vj6xk4lp File:BBOX Media 5.png 6 776 1654 2020-09-12T03:24:54Z Eden 191 1654 wikitext text/x-wiki BBOX Media 5 r5vzlo2k2igfmj2ixfuci6m484bqe2c File:BBOX Media 6.png 6 777 1655 2020-09-12T03:26:56Z Eden 191 1655 wikitext text/x-wiki BBOX Media 6 qg3qa6qhhcf4guv4ma0h6dg0nsc8h61 File:Backlight Flex Failure.jpg 6 625 1291 2020-05-19T22:59:49Z Joesipaq 20 1291 wikitext text/x-wiki This is what a crack looks like in the flex. This is Flexgate mr9160e369urqn23q7dwvin2awcf1l0 File:Basic Troubleshooting.drawio.png 6 743 1571 2020-08-28T17:32:19Z Chrisb 1 1571 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 File:Battey-connector.jpg 6 15 16 2019-11-06T16:12:30Z Chrisb 1 16 wikitext text/x-wiki Battey-connector 65px8ckigzj23ytu5vadu74xh9cgksp File:Blown Touch Filter.jpg 6 142 416 2020-01-19T06:17:13Z EstebanM 25 416 wikitext text/x-wiki Blown Touch Filter on iPad Pro 12.9 0f9wfcroycj8xzyj5ayavq70drlzdjk File:Booster circuit.jpg 6 2114 6334 2022-01-09T16:00:33Z Inwerp 16 6334 wikitext text/x-wiki lp8545 booster circuit tlbt2lra0lbysp01abakgy8r6qf7j6k File:Boot-on-rEFIt.jpg 6 1946 5800 2021-05-12T12:32:01Z Alex6337 28 5800 wikitext text/x-wiki Booting on rEFIt bootable USB key bq8nvvyngzbs31ycrldz3zifghzbha3 File:CAMERAS 13pm dfcloud6.jpg 6 2660 7714 2024-12-31T12:46:06Z Dfcloud6 1726 7714 wikitext text/x-wiki Cameras diode scale values 13pm dfcloud6 k1k0j4fvns4x1jck6waornlx8sxdscf File:CAMERAS IPHONE SE 2022 final.jpg 6 2663 7718 2024-12-31T12:55:23Z Dfcloud6 1726 7718 wikitext text/x-wiki Cameras diode scale values iphone se 2022 dfcloud6 tw54gc6vag3vrwciourfwle9wtata36 File:CD3215C Chip off Board.jpg 6 712 1507 2020-08-09T14:42:09Z Dusten04 30 1507 wikitext text/x-wiki CD3215C Chip off Board n1uxr05jr9z2x4eq2cvo7fmycc8hdj4 File:CD3215 Single USB-C Side - 5V 0.05A.jpg 6 2175 6560 2022-08-12T21:37:18Z IT-Solve 181 6560 wikitext text/x-wiki CD3215 Single USB-C Side - 5V 0.05A bmdiufpbpgfgqzyr6eknnkasskhp36y File:CD3215 Single USB-C Side Unknown IC - 5V 0.05A.jpg 6 2176 6561 2022-08-12T21:38:31Z IT-Solve 181 6561 wikitext text/x-wiki CD3215 Single USB-C Side Unknown IC - 5V 0.05A 0ply1x68o4gu0pf79xoct7ahuik8rh2 File:CD3215 bottom USB-C - 5V 0.25 - 0.05A.jpg 6 2174 6559 2022-08-12T21:36:49Z IT-Solve 181 6559 wikitext text/x-wiki CD3215 bottom USB-C - 5V 0.25 - 0.05A qpbw2sqdcqormhxya0lejmsuskjqrm8 File:CD3217 Addr.png 6 2249 6961 2023-10-19T13:05:44Z Inwerp 16 6961 wikitext text/x-wiki CD3217 Addr nceyk6ldd3wlrfgb6obehfi17znmzel File:CS pin 820-00165.jpg 6 753 1597 2020-08-30T21:24:54Z Nobluesky 182 1597 wikitext text/x-wiki truncated because no further activity. j63mgbkqdy3jqh8p7lxymdn2pej4vm2 File:CXMhriTlspAPXA6p.jpg 6 2193 6629 2022-09-20T10:31:42Z Alan.l 19 6629 wikitext text/x-wiki USB-C Port 2p6piqtzdtloh3fchg9gizm5x5driun File:Calpe LDO and Bypass.png 6 2241 6919 2023-09-26T11:17:43Z Inwerp 16 6919 wikitext text/x-wiki Calpe LDO and Bypass c0ilivqzabok75nifwfl3hsybsdhaki File:Camera Flex.jpg 6 1941 5769 2021-05-03T18:23:26Z Joesipaq 20 5769 wikitext text/x-wiki Camera side flex t0k5m24ytqf31vhgzaf65mrm82h19iu File:Caution.png 6 2178 6575 2022-08-31T18:00:00Z Chrisb 1 6575 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 File:Cert error example.png 6 2075 6169 2021-10-14T13:36:06Z Francis 4 6169 wikitext text/x-wiki Cert error example 3b8uzyn6ovtcl8e293siri8neyy0tr2 File:Cert invalid example.png 6 2076 6170 2021-10-14T13:36:36Z Francis 4 6170 wikitext text/x-wiki Cert invalid example 0va7v444w74s4sahg26a7nt5ahnfr3v File:Charger IC Threshold on 820-3437.png 6 326 795 2020-03-05T18:00:14Z Piernov 10 795 wikitext text/x-wiki Charger IC Threshold on 820-3437 89s06jn0iqtc86py4qffri1z51210qu File:Charging Port Edited 2.jpg 6 533 1163 2020-05-01T23:48:37Z Dusten04 30 1163 wikitext text/x-wiki Charging Port Edited 2 hvmscxtjjfcz4cf9iz9lqvsmu2u3gv6 File:Charging Port View 1.jpg 6 532 1162 2020-05-01T23:48:08Z Dusten04 30 1162 wikitext text/x-wiki Charging Port View 1 fzi9v6d83i9ww0lnj0o4wlarj5ipjcu File:Classic Mac Tech Info.pdf 6 474 1073 1072 2020-04-19T16:46:56Z Chrisb 1 Chrisb moved page [[File:Classic ac Tech Info.pdf]] to [[File:Classic Mac Tech Info.pdf]] without leaving a redirect 1063 wikitext text/x-wiki Classic Mac Tech Docs r6f0j2yfo797zby6q5t9qvgpb66y83h File:Combined Examples.png 6 2082 6222 2021-11-14T21:06:25Z WGACA 420 6222 wikitext text/x-wiki Example of how HT-A2 looks with and without the lens. prnaynu9ksc0aum8162tg8jlid4379x File:Community-Universe.jpg 6 2144 6439 2022-02-28T11:12:52Z Alex6337 28 6439 wikitext text/x-wiki Community Universe update check 26mhb3l88awk4zbxo1ta5eqo4ol3d3i File:Compatible devices.jpg 6 2252 6975 2023-10-23T23:48:34Z Infosquad 1036 6975 wikitext text/x-wiki usb to uart compatible devices 9q9qcs3y8ztkqvc96rjgig10b1d31hx File:Connector 1 Edited.jpg 6 156 453 2020-02-01T01:57:02Z Dusten04 30 453 wikitext text/x-wiki Connector 1 pl46fdj9j56dj5u1oj1m66kcjn1mimw File:Corrected iPad 6 3.jpg 6 167 477 2020-02-01T03:10:38Z Dusten04 30 477 wikitext text/x-wiki Corrected iPad 6 Connector 3 h11ehtjx9r3wwpkx40aobz1dqt0j0ef File:Craig Federighi tries to troubleshoot M1 backlight.jpg 6 2087 6236 2021-11-16T22:21:07Z Inwerp 16 6236 wikitext text/x-wiki Craig Federighi tries to troubleshoot M1 backlight ddoov5ol6ztonu287gynl5g2y8y3oir File:Critical Update Required.jpg 6 115 247 2019-12-08T16:52:19Z Chrisb 1 247 wikitext text/x-wiki Critical Update Required emhrmt29lo940yo7ibwzjbouv1l1awj File:Crumblenaut.jpg 6 1913 5637 2021-03-03T04:13:01Z Crumblenaut 317 5637 wikitext text/x-wiki Super crumbled at the moment... dzpotzn7upbkwzd5ba5j56v85z6zsb9 File:DALL-E T2.png 6 2245 6930 2023-09-26T21:17:08Z Inwerp 16 6930 wikitext text/x-wiki DALL-E T2 mnd2qh77570qehcwq5544tilw5m1pbz File:DALL·E 2023-10-25 02.17.34 - Photo of a child's drawing depicting a yellow beware sign with the text 'DO NOT REFLOW T2!'. The drawing is attached to a refrigerator with colorful m.png 6 2255 6991 2023-10-25T00:18:06Z Inwerp 16 6991 wikitext text/x-wiki DALL·E 2023-10-25 02.17.34 - Photo of a child's drawing depicting a yellow beware sign with the text 'DO NOT REFLOW T2!'. The drawing is attached to a refrigerator with colorful m c23nwxpbl4s6ohowz7jirjjamng6bf0 File:DC-in MOFET and gates on 820-3437.png 6 325 794 2020-03-05T17:59:49Z Piernov 10 794 wikitext text/x-wiki DC-in MOFET and gates on 820-3437 f7xd4vt8ec3c0zm5uyfly90fpbwns0i File:DFU + ONOFF.jpg 6 2269 7069 2024-03-29T17:09:08Z 2informaticos 1112 7069 wikitext text/x-wiki SOC_FORCE_DFU and PMU_ONOFF_L switches 4qsam84zcfhdrfradla0dqrldmfl99j File:DFU on Sonoma.png 6 2260 7020 2023-11-27T12:28:12Z Inwerp 16 7020 wikitext text/x-wiki DFU on Sonoma r498io511ztdi6pw9sshwkvm7ys1oew File:Debug Led.png 6 424 971 2020-04-04T14:21:09Z Inwerp 16 971 wikitext text/x-wiki You have all PM_SLP rails as well as PP3V3_S5 all together, on most MacBooks this circuit is placed on top of the board which means you can start the diagnostics without even removing it from case. k4iyx08m935jm6snt1l3aff390p4apg File:Deglaze 10 - Armour Etch Wiped 2.jpg 6 1988 5893 2021-06-04T20:18:10Z Crumblenaut 317 5893 wikitext text/x-wiki Deglaze 10 - Armour Etch Wiped 2 27ifdzgzogi6w9yj7yrr8ilii5ntdnp File:Deglaze 11 - Isopropyl 70 Cleaning.jpg 6 1989 5894 2021-06-04T20:18:29Z Crumblenaut 317 5894 wikitext text/x-wiki Deglaze 11 - Isopropyl 70 Cleaning 6zzw085khg89kelg1nz3ztc36ovwlfl File:Deglaze 12 - Edges 1.jpg 6 1990 5895 2021-06-04T20:18:48Z Crumblenaut 317 5895 wikitext text/x-wiki Deglaze 12 - Edges 1 1z9ngnnhnrj2qkxld6yxm9fcuv75dt2 File:Deglaze 13 - Edges 2.jpg 6 1991 5896 2021-06-04T20:19:21Z Crumblenaut 317 5896 wikitext text/x-wiki Deglaze 13 - Edges 2 c1z02ykc2pp1c9s5ebry9d97b1xxj43 File:Deglaze 14 - Screen Finished.jpg 6 1992 5897 2021-06-04T20:19:42Z Crumblenaut 317 5897 wikitext text/x-wiki Deglaze 14 - Screen Finished mbhfw399ojh1htrg3k4boc1tjgtga3i File:Deglaze 2 - Strapped for Protection.jpg 6 1980 5885 2021-06-04T20:14:55Z Crumblenaut 317 5885 wikitext text/x-wiki Deglaze 2 - Strapped for Protection mx3udn4pkaxekzpj3mkrq45khpwjm3k File:Deglaze 3 - Screen Before.jpg 6 1981 5886 2021-06-04T20:15:22Z Crumblenaut 317 5886 wikitext text/x-wiki Deglaze 3 - Screen Before 1uj98t1ov5hzysc9vt3kdispn3ydwhm File:Deglaze 4 - Screen Alcohol.jpg 6 1982 5887 2021-06-04T20:15:46Z Crumblenaut 317 5887 wikitext text/x-wiki Deglaze 4 - Screen Alcohol 5dsj3atimo2zukxge9iwkya8zouyuok File:Deglaze 5 - Prepared Screen.jpg 6 1983 5888 2021-06-04T20:16:08Z Crumblenaut 317 5888 wikitext text/x-wiki Deglaze 5 - Prepared Screen pnciodjbikrixa09kxk84tluoi43e75 File:Deglaze 6 - Armour Etch Application.jpg 6 1984 5889 2021-06-04T20:16:38Z Crumblenaut 317 5889 wikitext text/x-wiki Deglaze 6 - Armour Etch Application e7o6ybskw76cmpl1l3bwiqw289lh0k3 File:Deglaze 7 - Waiting with Armour Etch.jpg 6 1985 5890 2021-06-04T20:16:59Z Crumblenaut 317 5890 wikitext text/x-wiki Deglaze 7 - Waiting with Armour Etch 5za8h1kx852h3z5wr6svpsax4eo3ilz File:Deglaze 8 - Armour Etch Congealing.jpg 6 1986 5891 2021-06-04T20:17:22Z Crumblenaut 317 5891 wikitext text/x-wiki Deglaze 8 - Armour Etch Congealing 12t1vuf3g9xpyt6tpzluffpeie91svh File:Deglaze 9 - Armour Etch Wiped 1.jpg 6 1987 5892 2021-06-04T20:17:47Z Crumblenaut 317 5892 wikitext text/x-wiki Deglaze 9 - Armour Etch Wiped 1 poq7fshsf5uvajtrbs6ezcxmatkq1wu File:Diode7701.png 6 1673 4995 2020-10-11T06:47:17Z Chrisb 1 4995 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 File:Diode Mode Readings Around Southbridge on PS4 Pro NVG-002 BACK.jpg 6 2134 6401 2022-02-07T06:14:28Z Alpha Bravo Tech. 538 6401 wikitext text/x-wiki Diode Mode Readings Around Southbridge on PS4 Pro NVG-002 BACK q4o0b1ps9gu1wgmom0dl5z6cebqxndy File:Diode Mode Readings Around Southbridge on PS4 Pro NVG-002 FRONT.jpg 6 2135 6403 2022-02-07T06:16:01Z Alpha Bravo Tech. 538 6403 wikitext text/x-wiki Diode Mode Readings Around Southbridge on PS4 Pro NVG-002 FRONT ftptjdklqcpq6ogbdvpndh6q8gzc5yu File:EEECODE.jpg 6 2209 6709 2023-01-13T10:11:55Z Alan.l 19 6709 wikitext text/x-wiki EEECODE 1yhtqjqvdr6rdwudtzjmdddsh1mjjl7 File:EEE CODE.jpg 6 2208 6705 2023-01-13T10:07:00Z Alan.l 19 6705 wikitext text/x-wiki eee code 67dmeh4aqo0sxnfr757wxmztsii9233 File:EFI Boot up Diagram.jpg 6 29 30 2019-11-06T16:25:21Z Chrisb 1 30 wikitext text/x-wiki EFI Boot up Diagram hcjzl35do8nks4sg35w5htdwkoqj6jx File:EFI shell.jpg 6 1948 5802 2021-05-12T12:35:26Z Alex6337 28 5802 wikitext text/x-wiki EFI shell prompt sx88lbb3y37pf81apmcujshc76anjbz File:Early-2013 vs 2015 Comparison.jpg 6 626 1296 1294 2020-05-20T14:57:06Z Steve 48 Clarified positioning. 1296 wikitext text/x-wiki Comparison of the batteries from an Early-2013 (top) and a 2015 (bottom) 15" Retina MacBook. 5w3vw2reu5o94b8js4jynl1k6lm3lpj File:Ebay Email Page.png 6 2088 6238 2021-11-19T17:01:50Z Matty 22 6238 wikitext text/x-wiki Ebay Email Page qyq45rgpepx1b8xclp5z2ouvhg58ssl File:Edp pinout.png 6 2224 6809 2023-04-05T22:27:46Z Inwerp 16 6809 wikitext text/x-wiki edp Pinout on A1707/1990/A2141 msz0a9kjye4vfbalx3ifyp8eez0teq3 File:Efi-flasher-USB-content.jpg 6 1945 5799 2021-05-12T12:29:29Z Alex6337 28 5799 wikitext text/x-wiki Content of a USB key to force flash an SMC qjbwzdipoknf48kh7x5h00xyumqm3nf File:FB IMG 1564050051190.jpg 6 108 237 2019-12-05T06:23:43Z Thingalong 18 237 wikitext text/x-wiki iOS kernel panic codes 1 8odtjlyja2im6gbjs8xxq1uiknnzfw2 File:FB IMG 1564050058516.jpg 6 109 238 2019-12-05T06:24:10Z Thingalong 18 238 wikitext text/x-wiki iOS kernel panic codes 2 1262hx47nkuv717u7cj76e27501k6yv File:FB IMG 1564050065579.jpg 6 110 239 2019-12-05T06:24:30Z Thingalong 18 239 wikitext text/x-wiki iOS kernel panic codes 3 b5tkp0vn7p0ttkbcvavt5luopyz0p3i File:FB IMG 1564050071098.jpg 6 111 240 2019-12-05T06:29:43Z Thingalong 18 240 wikitext text/x-wiki iOS kernel panic codes 4 72u67k324fv0hvql575p9u8hc71c1vc File:FPC Measurements.png 6 144 418 2020-01-19T06:21:01Z EstebanM 25 418 wikitext text/x-wiki FPC Measurements sksblp9llhul9gbeqpoeqj2bceteoxw File:Face ID Troubleshooting.jpg 6 32 33 2019-11-06T16:27:13Z Chrisb 1 33 wikitext text/x-wiki Face ID Troubleshooting cibc3gq2f3eff73mhinqjul0084hsvq File:FailedSmart.png 6 2029 6036 2021-09-05T18:50:41Z Inwerp 16 6036 wikitext text/x-wiki example of garbage software showing "caution" on the almost dead HDD drive kjhqlwrmijte3cl4q4fjz3ng60lv8v7 File:Ferret incorporated.jpg 6 1942 5778 2021-05-06T13:49:34Z Inwerp 16 5778 wikitext text/x-wiki Ferret is a friendly animal, threat it like a cat-dog who sleeps 14-20 hours a day. It sleeps for you, your friends so dont wake it. cy4ll3dbcajd2vpftggvx9tsq9ebkk3 File:Find and launch Software & Updates in Ubuntu.jpg 6 2143 6438 2022-02-28T11:11:20Z Alex6337 28 6438 wikitext text/x-wiki Find and launch Software & Updates in Ubuntu n0bc2go3oa8m54zf6itogqa555mlyzh File:Flexgate with microscopy.png 6 1931 5703 2021-03-28T20:56:04Z Inwerp 16 5703 wikitext text/x-wiki Flexgate with microscopy mkwoob70z8dojo9oyjwyydxtmbwdag5 File:G3-S3 Ivy Bridge - Broadwell.dia.gz 6 331 813 808 2020-03-26T22:41:32Z Chrisb 1 Chrisb uploaded a new version of [[File:G3-S3 Ivy Bridge - Broadwell.dia.gz]] 808 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=dia file}} |date=2020-03-25 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} pjxrchs6k2mr2ml6d4ozvxik8ic404u File:G3-S3 Ivy Bridge - Broadwell.png 6 332 812 809 2020-03-26T22:30:51Z Chrisb 1 Chrisb uploaded a new version of [[File:G3-S3 Ivy Bridge - Broadwell.png]] 809 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=boot up diagram}} |date=2020-03-25 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} kiw6cafvqs2mgc5qlpwwr8ki51e1d50 File:G3 - S3 Ivy Bridge - Broadwell.drawio.png 6 337 1551 1550 2020-08-27T22:38:51Z Chrisb 1 Chrisb uploaded a new version of [[File:G3 - S3 Ivy Bridge - Broadwell.drawio.png]] 834 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 File:Galaxy Note 10+ Button Connector.jpg 6 303 766 2020-02-28T21:46:14Z Dusten04 30 766 wikitext text/x-wiki Galaxy Note 10+ Button Connector 4yliee6dzlxd5781l04m7fnt5pe3hhj File:Galaxy Note 10+ Digitizer Connector.jpg 6 302 765 2020-02-28T21:45:12Z Dusten04 30 765 wikitext text/x-wiki Galaxy Note 10+ Digitizer Connector pi6yetz9sllly18q8axm3dx0z751fzo File:Galaxy Note 10+ Dock Connector 1.jpg 6 300 763 2020-02-28T21:42:33Z Dusten04 30 763 wikitext text/x-wiki Galaxy Note 10+ Dock Connector 1 pwk606rnh413aqd941rtcma3fwrjfdc File:Galaxy Note 10+ Dock Connector 2.jpg 6 301 764 2020-02-28T21:43:52Z Dusten04 30 764 wikitext text/x-wiki Galaxy Note 10+ Dock Connector 2 pz3i3p6l2n8l42hwpuqgc8wy7gpcyra File:Galaxy Note 10+ Front Camera.jpg 6 295 758 2020-02-28T21:34:56Z Dusten04 30 758 wikitext text/x-wiki Galaxy Note 10+ Front Camera 915pwsyt918ovdg9z3q2p7vn63dt6ej File:Galaxy Note 10+ OLED.jpg 6 299 762 2020-02-28T21:39:57Z Dusten04 30 762 wikitext text/x-wiki Galaxy Note 10+ OLED l9kfbkitnd6q3w5jqvkt98z30hzlgne File:Galaxy Note 10+ Rear Camera 1.jpg 6 304 767 2020-02-28T21:46:51Z Dusten04 30 767 wikitext text/x-wiki Galaxy Note 10+ Rear Camera 1 cqnoq6nsetsz9p01ibzmbc21mb5ti3a File:Galaxy Note 10+ Rear Camera 2.jpg 6 305 768 2020-02-28T21:48:29Z Dusten04 30 768 wikitext text/x-wiki Galaxy Note 10+ Rear Camera 2 84m3c8bm1nx3zreu64fmf20vnz97uzi File:Galaxy Note 10+ Rear Camera 3.jpg 6 306 769 2020-02-28T21:49:02Z Dusten04 30 769 wikitext text/x-wiki Galaxy Note 10+ Rear Camera 3 0de6y5kw1kejwkiaac830onsbk6zkjf File:General information.png 6 2089 6239 2021-11-19T17:05:30Z Matty 22 6239 wikitext text/x-wiki General information c9wt1391ok4ai5rdegsf5wzetij8d5x File:HDMI Diode Readings.jpeg 6 2198 6652 2022-10-26T20:56:57Z Laup 815 6652 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 File:HDMI IC Diode Readings.jpeg 6 2201 6655 2022-10-26T20:58:33Z Laup 815 6655 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 File:HDMI Standby Voltages.jpeg 6 2199 6653 2022-10-26T20:57:25Z Laup 815 6653 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 File:HDMI Voltages.jpeg 6 2200 6654 2022-10-26T20:58:01Z Laup 815 6654 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 File:Hardcase A2442.png 6 2652 7687 2024-09-02T18:36:36Z Inwerp 16 7687 wikitext text/x-wiki USC fix l6rsbn2vvf1ygf9jwp674jwaobj87g7 File:IDC 50 pin adapter on SCA-2 80 pin 2.5" 37GB HDD.jpg 6 203 597 2020-02-02T12:11:07Z Piernov 10 597 wikitext text/x-wiki IDC 50 pin adapter on SCA-2 80 pin 2.5" 37GB HDD 9mybhs16y80kbi8whognui6jwza3if3 File:IPHONE XR AURICULAR CONECTOR VALUES (7).jpg 6 2669 7725 2024-12-31T13:06:44Z Dfcloud6 1726 7725 wikitext text/x-wiki PWRKEY and receiver diode scale values iphone xr dfcloud6 5er3mq589xd1kihqd7kw0i7de81gxiq File:IPHONE XR BATTERY CONECTOR VALUES (2).jpg 6 2667 7723 2024-12-31T13:03:33Z Dfcloud6 1726 7723 wikitext text/x-wiki RF VBATT and SIM CARD diode scale values iphone xr dfcloud6 q8t6xgd0t34f19o75eapejfm36rorjt File:IPHONE XR CAMERA CONECTOR VALUES (2).jpg 6 2668 7724 2024-12-31T13:05:27Z Dfcloud6 1726 7724 wikitext text/x-wiki FACE ID and F-CAM diode scale values iphone xr dfcloud6 7ergfvaprw0axovaap7adnishizlgcc File:IPHONE XR VIDEO AND TOUCH CONECTOR VALUES (4).jpg 6 2666 7722 2024-12-31T13:00:14Z Dfcloud6 1726 7722 wikitext text/x-wiki LCD and TOUCH choq0uoocdagriobtz2t7set7smhmuq File:IPad 6 Home Button FPC Diode.jpg 6 105 234 2019-12-03T16:29:45Z KevinShort 17 234 wikitext text/x-wiki Diode measurements of the home button FPC connector on the iPad 9.7 6th Gen n6zkx112dllvho86g1f01lf7vlyvadr File:IPad Pro 12.9 2nd Gen WiFi.jpg 6 64 136 2019-11-12T21:23:29Z Chrisb 1 136 wikitext text/x-wiki IPad Pro 12.9 2nd Gen WiFi l21a7ex0iicuntllqyhzow628yj382s File:IPad Pro 12.9 2nd Gen WiFi 2.jpg 6 66 138 2019-11-12T21:25:28Z Chrisb 1 138 wikitext text/x-wiki IPad Pro 12.9 2nd Gen WiFi l21a7ex0iicuntllqyhzow628yj382s File:IPad Pro 12.9 2nd Gen WiFi 3.jpg 6 67 139 2019-11-12T21:26:05Z Chrisb 1 139 wikitext text/x-wiki IPad Pro 12.9 2nd Gen WiFi l21a7ex0iicuntllqyhzow628yj382s File:IPad Pro 12.9 2nd Gen WiFi 4.jpg 6 68 140 2019-11-12T21:26:36Z Chrisb 1 140 wikitext text/x-wiki IPad Pro 12.9 2nd Gen WiFi l21a7ex0iicuntllqyhzow628yj382s File:IPad Pro 12.9 2nd Gen WiFi 5.jpg 6 69 141 2019-11-12T21:27:09Z Chrisb 1 141 wikitext text/x-wiki IPad Pro 12.9 2nd Gen WiFi l21a7ex0iicuntllqyhzow628yj382s File:IPhone-iPad Tristar 3.jpg 6 38 39 2019-11-06T16:29:58Z Chrisb 1 39 wikitext text/x-wiki iPhone/iPad Tristar 3 2t9l4zp1o3ln3y57nrbcktjcht52ukd File:IPhone LCD Model.jpg 6 34 35 2019-11-06T16:27:59Z Chrisb 1 35 wikitext text/x-wiki iPhone LCD Model kfawxfvpw2ajxv7a2jf06hrkigpmd63 File:ISL Edited.jpg 6 645 1334 2020-06-14T17:28:27Z Dusten04 30 1334 wikitext text/x-wiki ISL Edited k6nm18dj1b6volb4g1yr3qhyrov3b8g File:Iconic Book 1.jpg 6 1436 3169 2020-10-11T01:02:57Z Chrisb 1 3169 wikitext text/x-wiki Iconic Book 1 sfkzpdsmli5pjh8ktlyvt9dpzc33sg0 File:Image 2-28-20 at 1.19 PM.jpg 6 750 1579 2020-08-28T17:44:46Z Chrisb 1 1579 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 File:Image 2-28-20 at 1.22 PM.jpg 6 751 1580 2020-08-28T17:44:59Z Chrisb 1 1580 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 File:Imagen.jpg 6 2172 6555 2022-08-11T22:25:18Z Juan carlos donoso gonzalez 523 6555 wikitext text/x-wiki J4511 c9r66fv06sgw2z21ydh8lzoiw3lweuc File:Information icon4.svg 6 2180 6577 2022-08-31T18:06:37Z Chrisb 1 6577 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 File:Intel SR40F.png 6 2163 6530 2022-06-10T21:55:01Z Inwerp 16 6530 wikitext text/x-wiki SR40F suhguky0qgqpyr0w4nsvcvjywll57yf File:Ios kernel panic codes.png 6 107 236 2019-12-05T06:23:16Z Thingalong 18 236 wikitext text/x-wiki iOS kernel panic codes 5 gbum1vhiu3hzrhwyy1iueaiky6kdxzm File:J3300 Edited.jpg 6 717 1515 2020-08-10T12:35:49Z Dusten04 30 1515 wikitext text/x-wiki J3300 Edited 28saebpwym7aan5dxwcn1q5fmu2pcql File:J4900.jpg 6 244 663 2020-02-06T22:56:54Z Dusten04 30 663 wikitext text/x-wiki J4900 4zcoj6du6yz6b1707dtxqctxpnlbu5j File:J6600.jpg 6 245 664 2020-02-06T22:58:00Z Dusten04 30 664 wikitext text/x-wiki J6600 0l2tu2k1xdm1njyu3997epn7a0a9u5u File:J8500 Edited.jpg 6 718 1516 2020-08-10T12:36:16Z Dusten04 30 1516 wikitext text/x-wiki J8500 Edited 7bhdovnwdon9yak1hrt5m1odu3tc230 File:LCD iMac Temp Sensor.png 6 2097 6284 2021-12-05T10:27:47Z Bobcov 604 6284 wikitext text/x-wiki Schematic of the temp sensor of 2009 imac lcd nmhx46skvdt1y95q1uebbplh72ho8or File:LED Return.jpg 6 2115 6335 2022-01-09T16:04:48Z Inwerp 16 6335 wikitext text/x-wiki Led return part 00puqhzn27jexnxl6l751mfmmr8x5xd File:LED Return 2.jpg 6 2116 6336 2022-01-09T16:06:31Z Inwerp 16 6336 wikitext text/x-wiki LP8545 PWM generator nbjkqn1z455s0dpnlingbyhkb5izxut File:LMP A1494 Board.jpg 6 1893 5571 2021-02-15T11:05:06Z Inwerp 16 5571 wikitext text/x-wiki MacBook Pro 13" A1502 2015E Model: LMP A1582 bazvlz3wihgl5m1n7hkcvy37r12f68m File:LMP A1494 Front.jpg 6 1892 5570 2021-02-15T11:01:16Z Inwerp 16 5570 wikitext text/x-wiki Apple MacBook Pro 15 A1398 (Late 2013, Mid 2014) A1494 Battery (Manufacturer: LMP ) h4cqbyv9dl3k2jx7th2j4utixqjwktp File:LP8545 Logic part.jpg 6 2117 6337 2022-01-09T16:11:11Z Inwerp 16 6337 wikitext text/x-wiki This part connects IC to the MCU / PCH / gMUX tanvakyokqtluz8vogok54gae8t8y8y File:LidAngleSensorMBAM2.jpg 6 2237 6910 2023-09-14T12:45:08Z Alex6337 28 6910 wikitext text/x-wiki Lid Angle sensor schematics for M2 MBA 4jyoq31aeobpuddx2ugqsu513edox3a File:LidAnglesensorepair.jpg 6 2238 6911 2023-09-14T12:48:53Z Alex6337 28 6911 wikitext text/x-wiki Claimed to be working angle sensor circuit repair. bk2jsfudgo2ylbks4eusqbpiq196cy9 File:Linux facetimehd error.jpg 6 1900 5608 5607 2021-02-28T14:22:58Z Piernov 10 Piernov uploaded a new version of [[File:Linux facetimehd error.jpg]] 5607 wikitext text/x-wiki Linux facetimehd error laorzhwba9ez5zh5rsvdqboa31uiagk File:Linux facetimehd log.jpg 6 1899 5606 2021-02-28T14:08:50Z Piernov 10 5606 wikitext text/x-wiki Linux facetimehd log 6qhpclw7id22dxk744syssj69ne3e87 File:M1WIFI Traces.png 6 2223 6800 2023-03-23T20:31:21Z Inwerp 16 6800 wikitext text/x-wiki WIFI Footprint of a Macbook Pro 13 2020 820-2020 board 8oj9a4ogijhh61ftnn2l4gscr3kc27r File:M1WifiFootprint.png 6 2222 6799 2023-03-23T20:29:43Z Inwerp 16 6799 wikitext text/x-wiki M1WifiFootprint k5la2rn3v2g9cin17ry1awxdsx74n1z File:M1 WIFI Chip footprint.png 6 2221 6798 2023-03-23T20:29:13Z Inwerp 16 6798 wikitext text/x-wiki M1 WIFI Chip footprint kw5iqei4hzx5e9f39crkh5osey9ybit File:MLASCT.jpg 6 2248 6957 2023-10-06T21:43:55Z Vladislav98759 951 6957 wikitext text/x-wiki Picture of LAS calibration tool iexe628uel1c4huwf3gp2woh1ttnryk File:MacBook-power-up-1.jpg 6 23 24 2019-11-06T16:21:44Z Chrisb 1 24 wikitext text/x-wiki MacBook-power-up-1 ah70g0gn17wyma7j8xa6jvpnjgww3hc File:MacBook-power-up-2.jpg 6 24 25 2019-11-06T16:22:07Z Chrisb 1 25 wikitext text/x-wiki MacBook-power-up-2 hlh8qp34gdeuubq655xrfk668xxyg8x File:MacBook Air 13" 2015-2017.jpg 6 135 377 374 2019-12-19T19:28:08Z Matty 22 Matty uploaded a new version of [[File:MacBook Air 13" 2015-2017.jpg]] 374 wikitext text/x-wiki MacBook Air 13" 2015-17 m2cyegyjsidh929puw7v6u3lhbvyy6b File:MacBook M1 Air 2020 DFU Jumper.png 6 2234 6875 2023-07-03T20:01:34Z Inwerp 16 6875 wikitext text/x-wiki MacBook M1 Air 2020 DFU Jumper 7ovq6sfpxydr66djlrfdh55o01czl97 File:MacBook Pro M1 13 A-Key 2020 Mapping.png 6 2195 6645 2022-10-11T19:38:01Z Inwerp 16 6645 wikitext text/x-wiki MacBook Pro M1 13 A/Key 2020 Mapping 3olscojugfdo4mpc9ti9llcu251ztg0 File:Mac Headphone Jack Revealed (1).jpg 6 2124 6365 2022-01-24T23:35:41Z Crumblenaut 317 6365 wikitext text/x-wiki Headphone Jack - Unoccupied lei7u6masdennznqc3ux0645ovyfl4f File:Mac Headphone Jack Revealed (2).jpg 6 2125 6366 2022-01-24T23:37:05Z Crumblenaut 317 6366 wikitext text/x-wiki Headphone Jack - Occupied hmaih7vr5bod1gzdwwtuumqgq0w18xt File:Mac Headphone Jack Revealed (3).jpg 6 2126 6367 2022-01-24T23:43:42Z Crumblenaut 317 6367 wikitext text/x-wiki Headphone jack populated - ZOOM rmmnmbdi3hzf6v3scs51vrlpgzdnzhw File:Macbook Pinkbars (Flexgate).png 6 2079 6209 2021-11-07T08:43:03Z Inwerp 16 6209 wikitext text/x-wiki Pinkbars Flexgate might be caused by physical damage on flex cable, possibly caused by dust or sand on display edge. c1g5iqn6d9fu1yst5vhn4ovy5b2qtyq File:Macbook Pro-2015-13-A1502-A1582-back.jpg 6 1878 5541 2021-02-03T20:46:16Z Inwerp 16 5541 wikitext text/x-wiki Back side of the board. Note much more advanced design compared to regular knock-offs. Thermal pair is present and balanced charging implemented. Pretty suprised, instead of battery controller it actually uses ARM Microcontroller Atmel samd 10u. hpt3y6p2wll49qwa749m03tjddqtz17 File:Macbook Pro-2015-13-A1502-A1582-front-LMP.jpg 6 1877 5540 2021-02-03T20:39:54Z Inwerp 16 5540 wikitext text/x-wiki Macbook Pro 2015 13 LMP Battery A1582 8hxbfwbniytr1h2r8cgrzfg77cof3ut File:Macbook Pro-2015-13-A1502-A1582-front2.jpg 6 1879 5542 2021-02-03T21:00:23Z Inwerp 16 5542 wikitext text/x-wiki LMP Battery A1582 sticker removed fx4gldikjxqtld5fcn9e9zbi0id3a0u File:Macbook SSD Gen1.png 6 1925 5670 2021-03-16T21:11:16Z Inwerp 16 5670 wikitext text/x-wiki Macbook Air SSD (2010 2011) khcni4gtrbwgq5abvxam9g7g2eil3yo File:Macbook SSD Gen2.png 6 1926 5671 2021-03-16T21:12:48Z Inwerp 16 5671 wikitext text/x-wiki Macbook Pro & Air 2012 2013 rfqld8mhue4qy102mlna02i1215vn94 File:Macbook SSD Gen3 4.png 6 1927 5672 2021-03-16T21:13:57Z Inwerp 16 5672 wikitext text/x-wiki Macbook Pro 2013-2015, Air 2013-2017 SSD Connector ob7x7ziunfkw9ts4cjwtmd84z38t2ls File:Macintosh LCIII Capacitor Placement.jpg 6 1999 5911 2021-06-16T18:05:59Z Matty 22 5911 wikitext text/x-wiki Macintosh LCIII Capacitor Placement 1qe4nfse9pv5g12foevaxh926ye7a02 File:Macintosh LCII Capacitor Placement 01 Corrected 2.jpg 6 2000 5912 2021-06-16T18:09:38Z Matty 22 5912 wikitext text/x-wiki Macintosh LCII Capacitor Placement 01 Corrected 2 2gliclrocelltkuet1bqedst99xjaok File:Macintosh LCII Capacitor Placement 02.jpg 6 1997 5909 2021-06-16T17:40:43Z Matty 22 5909 wikitext text/x-wiki Macintosh LCII Capacitor Placement 02 m9xhxa1o7szou8oz2b8ln042rqws0jg File:Macintosh LC Capacitor Placement 01.jpg 6 1993 5905 2021-06-16T16:25:32Z Matty 22 5905 wikitext text/x-wiki Macintosh LC Capacitor Placement 01 kh9g1n93ukvdb51dkahlvsoiddo0x4h File:Macintosh LC Capacitor Placement 02.jpg 6 1994 5906 2021-06-16T16:27:20Z Matty 22 5906 wikitext text/x-wiki Macintosh LC Capacitor Placement 02 69pqiwixwq9uph9xer8l00to9dl52p3 File:Macintosh Repair and Upgrade Secrets.pdf 6 476 1069 2020-04-19T16:33:44Z Chrisb 1 1069 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 File:Macintosh SE-30 Capacitor Placement.jpg 6 1995 5907 2021-06-16T17:05:18Z Matty 22 5907 wikitext text/x-wiki Macintosh SE/30 Capacitor Placement ccz0e389pd7y4ml5ddrc1qw399gagdc File:Magsafe pinout.png 6 2206 6699 2023-01-08T21:18:40Z Inwerp 16 6699 wikitext text/x-wiki Magsafe pinout 8dokh8qk9cialg2gv9vj74cdi4sywgv File:Magsafe schematics.png 6 2204 6697 2023-01-08T21:17:15Z Inwerp 16 6697 wikitext text/x-wiki Magsafe schematics 1ayoff25s0ejqt71acu1hetrbypppmx File:MosFet Step2.png 6 1676 5001 2020-10-11T18:29:59Z Inwerp 16 5001 wikitext text/x-wiki Step 2 of testing the mosfet. oi75cza3tlwvkiyh48wg51hsjrmktei File:MosFet step 3.png 6 1677 5002 2020-10-11T18:34:24Z Inwerp 16 5002 wikitext text/x-wiki mosfet dischage gate 9kbcmfoo5bm8jv7xocp97v2as603aye File:Mosfet Step1.png 6 1675 5000 2020-10-11T18:26:45Z Inwerp 16 5000 wikitext text/x-wiki Black on drain, red on Source dth8s26r8conv0wxmm0skj52tvl3dp1 File:Mosfet step3 fixed.png 6 1678 5003 2020-10-11T18:55:12Z Inwerp 16 5003 wikitext text/x-wiki Gate discharging arb5hnezfvjnm5xcmc0ohpaqw83qc6w File:My Happy Place - Daytime.jpg 6 1914 5638 2021-03-03T04:13:43Z Crumblenaut 317 5638 wikitext text/x-wiki My Happy Place - Daytime 1zl5i0vcuh4dmhhwn4kspch8s8dsldz File:My Happy Place - Nighttime.jpg 6 1915 5639 2021-03-03T04:14:02Z Crumblenaut 317 5639 wikitext text/x-wiki My Happy Place - Nighttime cxder6hzlmbdu2qy5t37i3j9e918774 File:NAND capacity.jpg 6 2169 6546 2022-07-23T09:34:45Z Pedro147 26 A photo chart of determining NAND sizes based on the brand and part ID printed on the NAND 6546 wikitext text/x-wiki == Summary == A photo chart of determining NAND sizes based on the brand and part ID printed on the NAND aw35lgypp6lkbc25h0v7mgee3u7cmjc File:NFC DCDC S.png 6 1380 3020 2020-10-06T13:57:01Z Dusten04 30 3020 wikitext text/x-wiki NFC DCDC S q2fokedniol8hc4vyfch8npq4qk46i1 File:NbecTDBRsudat45Z2.jpg 6 1870 5500 2021-01-19T17:11:30Z Alan.l 19 5500 wikitext text/x-wiki parts gw5g5fuu04tkfzx068qw1mjyri61cyq File:Nintendo Switch 2 Edited.jpg 6 561 1197 2020-05-06T01:32:26Z Dusten04 30 1197 wikitext text/x-wiki Nintendo Switch 2 Edited hwqnwe5hy195v4cfjxmnj9wj321fbel File:Nintendo Switch 3 Edited cORRECTED.jpg 6 617 1275 2020-05-16T22:32:48Z Dusten04 30 1275 wikitext text/x-wiki Nintendo Switch 3 Edited cORRECTED mh1ci6qxyf2w4gzq5o82friqzhssjle File:Nintendo Switch 4 Edited.jpg 6 563 1199 2020-05-06T01:33:29Z Dusten04 30 1199 wikitext text/x-wiki Nintendo Switch 4 Edited dudmk5wkky25jpkzghyp2i2oztd66e4 File:Nintendo Switch FPC 1 Edited.jpg 6 560 1196 2020-05-06T01:31:55Z Dusten04 30 1196 wikitext text/x-wiki Nintendo Switch FPC 1 Edited 42eio1n1kmu61a1p8k9xe5llw8sjp4n File:Nintendo Switch Lite Battery Edited.jpg 6 551 1184 2020-05-05T19:09:14Z Dusten04 30 1184 wikitext text/x-wiki Nintendo Switch Lite Battery Edited 3ys72u4axysqi2mshx01g1i6tnbtbo1 File:Nintendo Switch Lite FPC 2 Edited.jpg 6 552 1185 2020-05-05T19:09:43Z Dusten04 30 1185 wikitext text/x-wiki Nintendo Switch Lite FPC 2 Edited m1luax863qfxxsr7ytgnsn967rthe9q File:Nintendo Switch Lite FPC 3 Edited.jpg 6 553 1186 2020-05-05T19:10:16Z Dusten04 30 1186 wikitext text/x-wiki Nintendo Switch Lite FPC 3 Edited 0llprblp9tl7lzlbnpa1dvhli7bg18b File:Nintendo Switch Lite FPC 4 Edited.jpg 6 554 1187 2020-05-05T19:10:43Z Dusten04 30 1187 wikitext text/x-wiki Nintendo Switch Lite FPC 4 Edited 79ky7qaij8wkw3tdlouetb6glivzlbt File:Nintendo Switch Lite FPC 5 Edited.jpg 6 555 1188 2020-05-05T19:11:14Z Dusten04 30 1188 wikitext text/x-wiki Nintendo Switch Lite FPC 5 Edited sixralisce17ttj3fe6vqnatyupktim File:Nintendo Switch Lite FPC 6 Edited.jpg 6 556 1189 2020-05-05T19:11:42Z Dusten04 30 1189 wikitext text/x-wiki Nintendo Switch Lite FPC 6 Edited 8rli2tza95o9j2yxlkppw6n6law3sff File:Nintendo Switch Lite FPC 7 Edited.jpg 6 557 1190 2020-05-05T19:12:16Z Dusten04 30 1190 wikitext text/x-wiki Nintendo Switch Lite FPC 7 Edited lrb67vn5apwnlsildv481zcpkf5i0a9 File:Nintendo Switch Lite FPC 8 Edited.jpg 6 558 1191 2020-05-05T19:12:45Z Dusten04 30 1191 wikitext text/x-wiki Nintendo Switch Lite FPC 8 Edited 25p4hsjg9z78cwbti8qedfhp0it4inf File:Nintendo Switch Lite Overall View 1 Edited.jpg 6 550 1183 2020-05-05T19:08:42Z Dusten04 30 1183 wikitext text/x-wiki Nintendo Switch Lite Overall View 1 Edited b2ba3uiyyk26kns03g95kjff3j42dzw File:Not charging pro 11 PP3v3 LDO SHORT.jpg 6 2157 6480 2022-04-19T18:29:05Z Dusten04 30 6480 wikitext text/x-wiki Not charging pro 11 PP3v3 LDO SHORT bd3e5enqmdfotcz2ml6wp3j3dkbdyeq File:Note 10+ Battery.jpg 6 298 761 2020-02-28T21:39:05Z Dusten04 30 761 wikitext text/x-wiki Note 10+ Battery h4y6576wxa6tft0597x2c2q5hs1vv1k File:Note 10+ Overall 1.jpg 6 293 756 2020-02-28T21:33:44Z Dusten04 30 756 wikitext text/x-wiki Note 10+ Overall 1 o8kqzapsbt39kh5vgfsr4qtgsxtk7yx File:Note 10+ Overall 2.jpg 6 294 757 2020-02-28T21:34:19Z Dusten04 30 757 wikitext text/x-wiki Note 10+ Overall 2 gqfhe6txamjh7w7petdpiwk4as158gy File:Note 10+ S Pen.jpg 6 296 759 2020-02-28T21:35:36Z Dusten04 30 759 wikitext text/x-wiki Note 10+ S Pen 9dxcn5e9e0bm43p7ok0c2ry6f14l5de File:Note 10+ Wireless Charger.jpg 6 297 760 2020-02-28T21:36:28Z Dusten04 30 760 wikitext text/x-wiki Note 10+ Wireless Charger 540v7jddlba0k5dajjtc7fmfzv48lje File:Note 9 FPC 1.png 6 685 1403 2020-07-12T13:49:54Z Dusten04 30 1403 wikitext text/x-wiki Note 9 FPC 1 oag974rlq3wbh8inz524jz9dg9puzqm File:Note 9 FPC 2.png 6 686 1404 2020-07-12T13:50:57Z Dusten04 30 1404 wikitext text/x-wiki Note 9 FPC 2 3t47lh0nu39pw643zdilfz6wftg9go0 File:Note 9 FPC 3.png 6 687 1405 2020-07-12T13:51:38Z Dusten04 30 1405 wikitext text/x-wiki Note 9 FPC 3 kn9igbo91hvy329tog22k5vt1abczfe File:Note 9 FPC 5.png 6 689 1407 2020-07-12T13:53:58Z Dusten04 30 1407 wikitext text/x-wiki Note 9 FPC 5 9jku6njum7j63avg98kdm2strjyxmpf File:Note 9 FPC 6.png 6 690 1408 2020-07-12T13:55:28Z Dusten04 30 1408 wikitext text/x-wiki Note 9 FPC 6 e0cii38ps1gup3sokmihexkj9botula File:Note 9 FPC 7.png 6 691 1409 2020-07-12T13:56:05Z Dusten04 30 1409 wikitext text/x-wiki Note 9 FPC 7 tbow62pls6tdpbxmk2jvsy6acao6r1w File:Note 9 FPC 8.png 6 692 1410 2020-07-12T13:56:43Z Dusten04 30 1410 wikitext text/x-wiki Note 9 FPC 8 f857mxus0qy6zm3vxj62ep7bg1imnaj File:Optimize Logic Repair.png 6 1922 5661 2021-03-11T14:41:28Z Chrisb 1 5661 wikitext text/x-wiki Optimize Logic Repair logo j5t98ourey2e4kfwv86mcudk8cja6bd File:Original XS screen.jpg 6 864 1949 2020-09-28T17:25:47Z Joesipaq 20 1949 wikitext text/x-wiki This is an original XS screen pulled form a working iPhone XS e0wziekgciqza7mwuksbq10wxn3ydvx File:Overall 1 Edited.jpg 6 159 468 2020-02-01T02:49:57Z Dusten04 30 468 wikitext text/x-wiki Overall View of FPC a445h2f0d0p3bz6mw0ke0u0elvclyfj File:Overall Edited.jpg 6 155 452 2020-02-01T01:45:43Z Dusten04 30 452 wikitext text/x-wiki iPad 6 FPC Overall View cz6zsq4a3sxzev9yurwnvksj8yv5sjc File:Overall J6100 Edited.jpg 6 431 979 2020-04-04T21:32:00Z Dusten04 30 979 wikitext text/x-wiki Overall J6100 Edited pp8mb2k313mdkflnwp69yaebhx7avr2 File:Overall View 1.jpg 6 242 661 2020-02-06T22:55:29Z Dusten04 30 661 wikitext text/x-wiki Overall View 1 sk4njk5owml9xfnt4ayog74gzi1jv8z File:Overall View 1 Edited.jpg 6 464 1051 2020-04-16T21:07:52Z Dusten04 30 1051 wikitext text/x-wiki Overall View 1 Edited 7c7dbngkark8tv7lvsidkyqrldhble3 File:Overall View 1 Note 9.jpg 6 684 1402 2020-07-12T13:48:59Z Dusten04 30 1402 wikitext text/x-wiki Overall View 1 Note 9 2jk36toto89w5tfkfm0zmg58yc3ryx0 File:Overall View 2.jpg 6 243 662 2020-02-06T22:56:11Z Dusten04 30 662 wikitext text/x-wiki Overall View 2 j0o8nfuiicct4yhatvlz0imjwwsz5zs File:Overall View 2 Edited.jpg 6 225 641 2020-02-06T15:46:30Z Dusten04 30 641 wikitext text/x-wiki Overall View 2 Edited hyr2klotci81injae8drqlbbhab2vcx File:Overall View Back.jpg 6 608 1260 2020-05-15T10:47:50Z Dusten04 30 1260 wikitext text/x-wiki Overall View Back d6022e3b9ewwl4jc4y0ew269ttr02us File:PCH ME Disable Strap.png 6 11 11 2019-11-06T16:09:15Z Chrisb 1 11 wikitext text/x-wiki PCH ME Disable Strap 0jjw9zp7s2sz2nkbyz4b9o5jb7whfyl File:PP5V SW LCD Schematic.png 6 2095 6266 2021-11-27T22:59:15Z Dusten04 30 6266 wikitext text/x-wiki PP5V_SW_LCD Schematic 3ofof1et20x9afuxuf5ftw56vkg2tcg File:PPDCIN G3H resistor to ground and PP3V42 threshold on 820-3437.png 6 327 796 2020-03-05T18:00:35Z Piernov 10 796 wikitext text/x-wiki PPDCIN G3H resistor to ground and PP3V42 threshold on 820-3437 sryy7okdnc46c0voo302jklowto1xl9 File:PS5 SB diode Readings.jpeg 6 2197 6651 2022-10-26T20:56:14Z Laup 815 6651 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 File:PS5 SSD Diode Readings.jpeg 6 2196 6650 2022-10-26T20:55:19Z Laup 815 Diode readings for SSD and surrounding area 6650 wikitext text/x-wiki == Summary == Diode readings for SSD and surrounding area hky7ep41yqiso0ikb74mt955t0pmj8b File:Panic FULL.txt 6 2142 6437 2022-02-25T11:50:04Z PRO-mobile 124 Decryption of frequently encountered panic logs in Russian from me personally. 6437 wikitext text/x-wiki == Summary == Decryption of frequently encountered panic logs in Russian from me personally. 6icybup83dobbmu21wgh51v3d4o8tvy File:Piernov's github.jpg 6 2147 6442 2022-02-28T11:25:09Z Alex6337 28 6442 wikitext text/x-wiki Piernov's github 8h4rpy3arv6yywgxikh3ourebdd0s7a File:Pixel 4 Battery Edited.jpg 6 491 1091 2020-04-19T19:45:58Z Dusten04 30 1091 wikitext text/x-wiki Pixel 4 Battery Edited 8tni7j4car1sj5khg4cvczk32217g7g File:Pixel 4 Bottom MiC Edited.jpg 6 492 1092 2020-04-19T19:46:51Z Dusten04 30 1092 wikitext text/x-wiki Pixel 4 Bottom MiC Edited fcwzwcjdap08sxjjq20bootgwge4bpx File:Pixel 4 Charging Port Edited.jpg 6 488 1088 2020-04-19T19:44:16Z Dusten04 30 1088 wikitext text/x-wiki Pixel 4 Charging Port Edited 0bba71xyyio3tylujy2xgrbhl7kj7we File:Pixel 4 Face ID Edited.jpg 6 486 1086 2020-04-19T19:36:17Z Dusten04 30 1086 wikitext text/x-wiki Pixel 4 Face ID Edited pcepzpgq9lu2vxs8177x2e48y8l8nc5 File:Pixel 4 Flash Mic Edited.jpg 6 481 1081 2020-04-19T19:32:34Z Dusten04 30 1081 wikitext text/x-wiki Pixel 4 Flash Mic Edited ltphvkzfq81p7hy2hb5w7fjovpias5p File:Pixel 4 Front Camera Edited.jpg 6 484 1084 2020-04-19T19:34:45Z Dusten04 30 1084 wikitext text/x-wiki Pixel 4 Front Camera Edited 6hxoutm715os53rkk46jqqepyf6br6g File:Pixel 4 Left Squeeze Edited.jpg 6 490 1090 2020-04-19T19:45:25Z Dusten04 30 1090 wikitext text/x-wiki Pixel 4 Left Squeeze Edited d1afr3d17rjf7gooy3zkrqab9d2hcc1 File:Pixel 4 OLED Edited.jpg 6 489 1089 2020-04-19T19:44:47Z Dusten04 30 1089 wikitext text/x-wiki Pixel 4 OLED Edited awn8xocbwnmhlkdfb9brchgk4q4d6fr File:Pixel 4 Overall View Final.jpg 6 479 1079 2020-04-19T19:30:05Z Dusten04 30 1079 wikitext text/x-wiki Pixel 4 Overall View Final oc6u9947y8hi3do86ko5iym28nc4m64 File:Pixel 4 Power Button Volume Edited.jpg 6 482 1082 2020-04-19T19:33:19Z Dusten04 30 1082 wikitext text/x-wiki Pixel 4 Power Button Volume Edited ttrbzcj6703ip7pbttdip2vcy3bu0eq File:Pixel 4 Proximity Sensor Edited.jpg 6 483 1083 2020-04-19T19:34:01Z Dusten04 30 1083 wikitext text/x-wiki Pixel 4 Proximity Sensor Edited tlfst2wts99foju6ey9mel2ehtkt08v File:Pixel 4 Right Squeeze Edited.jpg 6 487 1087 2020-04-19T19:37:35Z Dusten04 30 1087 wikitext text/x-wiki Pixel 4 Right Squeeze Edited ou572k7tubsldgr2j7ctux8jfxc2xw7 File:Pixel 4 Tele Camera Edited.jpg 6 480 1080 2020-04-19T19:31:39Z Dusten04 30 1080 wikitext text/x-wiki Pixel 4 Tele Camera Edited o2xjcputmixc8wiq1tgdthcy2rcr71c File:Pixel 4 Top SpeakerMic Edited.jpg 6 485 1085 2020-04-19T19:35:34Z Dusten04 30 1085 wikitext text/x-wiki Pixel 4 Top SpeakerMic Edited 3ofn1rvypyxsiw1qxcyj8ppbsjydar4 File:Pixel 4 Wide Camera Edited.jpg 6 493 1093 2020-04-19T19:47:19Z Dusten04 30 1093 wikitext text/x-wiki Pixel 4 Wide Camera Edited mgl55jjuahe9dbq8glju2o5xsiq0oo9 File:Prepared Workspace.jpg 6 1979 5884 2021-06-04T19:59:41Z Crumblenaut 317 5884 wikitext text/x-wiki Prepared Workspace with a cleared surface, paper towels, 99% and 70% isopropyl alcohol, extra gloves, a mask, eye protection, painter's tape, and cotton swabs. 41cbcme42qk5ztgzswq88ljk70iy54c File:RAW SoC Debug log.png 6 2261 7022 2023-11-27T16:19:13Z Inwerp 16 7022 wikitext text/x-wiki RAW SoC Debug log hkvvj7m3qghkd088hha3dvju6qi293u File:RF 13pm dfcloud6.jpg 6 2658 7712 2024-12-31T12:40:03Z Dfcloud6 1726 7712 wikitext text/x-wiki rf 13pm diode scale values dfcloud6 sppvguki7ikt7gvoqa0uxrhtf4ctj8o File:Real vs Fake Amtech flux package.jpg 6 1686 5027 2020-10-17T13:42:49Z Satyricon 21 5027 wikitext text/x-wiki Top Amtech flux is a knock off Bottom Amtech flux is the real one k46dl1g7xy8phsq3vcghovry9k49o3s File:Replacement Filter- Coils.png 6 145 419 2020-01-19T06:22:33Z EstebanM 25 419 wikitext text/x-wiki Replacement Filter-Coils 6vnojhexovc5jodzuta6mcc82lhjo7s File:Reset to EFI POST State for Ivy Bridge Haswell and Broadwell.pdf 6 782 3118 1668 2020-10-07T08:18:37Z Piernov 10 Piernov uploaded a new version of [[File:Reset to EFI POST State for Ivy Bridge Haswell and Broadwell.pdf]] 1668 wikitext text/x-wiki Reset to EFI POST State for Ivy Bridge Haswell and Broadwell auhg51qrtn8lxjcvmr81vi8w1ult7rr File:Rossmann Repair HDD Recovery.pdf 6 1420 3121 3120 2020-10-07T13:43:45Z Chrisb 1 Chrisb uploaded a new version of [[File:Rossmann Repair HDD Recovery.pdf]] 3120 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 File:S3 to S0 State.pdf 6 778 3119 1663 2020-10-07T08:19:24Z Piernov 10 Piernov uploaded a new version of [[File:S3 to S0 State.pdf]] 1663 wikitext text/x-wiki S3 to S0 State 5ko4izgsd50rl5vjstpvsf7vqthszws File:S8 1 PNG.png 6 2037 6069 2021-09-17T13:50:31Z Alpha Bravo Tech. 538 6069 wikitext text/x-wiki Samsung S8 SM-G950U Diode Mode Readings tkzdv68hf7w9v9a3ge8mm50i7g9msqn File:S8 2.png 6 2038 6070 2021-09-17T13:51:44Z Alpha Bravo Tech. 538 6070 wikitext text/x-wiki Samsung S8 SM-G950U Diode Mode Readings tkzdv68hf7w9v9a3ge8mm50i7g9msqn File:S8 3 PNG.png 6 2039 6071 2021-09-17T13:52:19Z Alpha Bravo Tech. 538 6071 wikitext text/x-wiki Samsung S8 SM-G950U Diode Mode Readings tkzdv68hf7w9v9a3ge8mm50i7g9msqn File:S8 4 PNG.png 6 2040 6072 2021-09-17T13:52:54Z Alpha Bravo Tech. 538 6072 wikitext text/x-wiki Samsung S8 SM-G950U Diode Mode Readings tkzdv68hf7w9v9a3ge8mm50i7g9msqn File:S8 5 PNG.png 6 2041 6073 2021-09-17T13:53:32Z Alpha Bravo Tech. 538 6073 wikitext text/x-wiki Samsung S8 SM-G950U Diode Mode Readings tkzdv68hf7w9v9a3ge8mm50i7g9msqn File:S8 6 PNG.png 6 2042 6074 2021-09-17T13:54:26Z Alpha Bravo Tech. 538 6074 wikitext text/x-wiki Samsung S8 SM-G950U Diode Mode Readings tkzdv68hf7w9v9a3ge8mm50i7g9msqn File:S8 7 PNG.png 6 2043 6075 2021-09-17T13:55:10Z Alpha Bravo Tech. 538 6075 wikitext text/x-wiki Samsung S8 SM-G950U Diode Mode Readings tkzdv68hf7w9v9a3ge8mm50i7g9msqn File:S9+Battery Edited.jpg 6 473 1061 2020-04-16T21:19:23Z Dusten04 30 1061 wikitext text/x-wiki S9+Battery Edited pb3xj8ti2i19awkohous7lnzp2ua51e File:S9+Charging Port Edited.jpg 6 472 1059 2020-04-16T21:16:39Z Dusten04 30 1059 wikitext text/x-wiki S9+Charging Port Edited 4dyt0kqs2sew3yjf7ls81sqxiomy1y6 File:S9+Finger Print Scanner Edited.jpg 6 470 1057 2020-04-16T21:14:01Z Dusten04 30 1057 wikitext text/x-wiki S9+Finger Print Scanner Edited qwpb773s2t1r2j05w0li46rpow70hjo File:S9+Front Facing Camera Edited.jpg 6 468 1055 2020-04-16T21:12:02Z Dusten04 30 1055 wikitext text/x-wiki S9+Front Facing Camera Edited bc5dwpooc3lxsv4tx4p1dkvb3krm11m File:S9+Iris Scanner Edited.jpg 6 467 1054 2020-04-16T21:11:11Z Dusten04 30 1054 wikitext text/x-wiki S9+Iris Scanner Edited 30d8ujy0n0ivpqv71me8njufxdojiw5 File:S9+OLED Edited.jpg 6 466 1053 2020-04-16T21:10:22Z Dusten04 30 1053 wikitext text/x-wiki S9+OLED Edited i3900zz3nypa9qovz9urgw1zswdlxtd File:S9+Overall View 2 Edited.jpg 6 465 1052 2020-04-16T21:09:28Z Dusten04 30 1052 wikitext text/x-wiki S9+Overall View 2 Edited tufqthxvxlz6ctf0cxk9axfwucm7iyg File:S9+Prox Sensor Edited.jpg 6 469 1056 2020-04-16T21:12:57Z Dusten04 30 1056 wikitext text/x-wiki S9+Prox Sensor Edited bh6widrycrry01ozne9ju5ug07vqtp0 File:S9+Rear Camera Edited.jpg 6 471 1058 2020-04-16T21:15:59Z Dusten04 30 1058 wikitext text/x-wiki S9+Rear Camera Edited sql5pvt3eqjfnqcq4o2rks7ke5jibjc File:SAMSUNG S8 BACK.jpg 6 2035 6067 2021-09-17T13:39:54Z Alpha Bravo Tech. 538 6067 wikitext text/x-wiki Samsung S8 SM-G950U Diode Mode Readings tkzdv68hf7w9v9a3ge8mm50i7g9msqn File:SAMSUNG S8 FRONT.jpg 6 2036 6068 2021-09-17T13:49:51Z Alpha Bravo Tech. 538 6068 wikitext text/x-wiki Samsung S8 SM-G950U Diode Mode Readings tkzdv68hf7w9v9a3ge8mm50i7g9msqn File:SATA Temp.png 6 1705 5073 2020-10-21T17:07:39Z Inwerp 16 5073 wikitext text/x-wiki Lovely sensor 733dlffkir3uhd0yor4i0au8a31tmxv File:SCSI SCA-2 to IDC-50pin.jpg 6 201 595 2020-02-02T11:54:16Z Piernov 10 595 wikitext text/x-wiki SCSI SCA-2 to IDC-50pin 3w8y10igso9mx2kbeztvjyrq69hr2x7 File:SM-G935A BACK.png 6 2051 6102 2021-09-22T18:21:16Z Alpha Bravo Tech. 538 6102 wikitext text/x-wiki Samsung S7 Edge SM-G935A f662xvccy1nwy1bwkgqocas9j5alg9w File:SM-G935A FRONT.png 6 2050 6101 2021-09-22T18:20:38Z Alpha Bravo Tech. 538 6101 wikitext text/x-wiki Samsung S7 Edge SM-G935A f662xvccy1nwy1bwkgqocas9j5alg9w File:SM-G935A PIC 1.png 6 2052 6103 2021-09-22T18:21:43Z Alpha Bravo Tech. 538 6103 wikitext text/x-wiki Samsung S7 Edge SM-G935A f662xvccy1nwy1bwkgqocas9j5alg9w File:SM-G935A PIC 10.png 6 2061 6112 2021-09-22T18:26:22Z Alpha Bravo Tech. 538 6112 wikitext text/x-wiki Samsung S7 Edge SM-G935A f662xvccy1nwy1bwkgqocas9j5alg9w File:SM-G935A PIC 2.png 6 2053 6104 2021-09-22T18:23:07Z Alpha Bravo Tech. 538 6104 wikitext text/x-wiki Samsung S7 Edge SM-G935A f662xvccy1nwy1bwkgqocas9j5alg9w File:SM-G935A PIC 3.png 6 2054 6105 2021-09-22T18:23:31Z Alpha Bravo Tech. 538 6105 wikitext text/x-wiki Samsung S7 Edge SM-G935A f662xvccy1nwy1bwkgqocas9j5alg9w File:SM-G935A PIC 4.png 6 2055 6106 2021-09-22T18:23:58Z Alpha Bravo Tech. 538 6106 wikitext text/x-wiki Samsung S7 Edge SM-G935A f662xvccy1nwy1bwkgqocas9j5alg9w File:SM-G935A PIC 5.png 6 2056 6107 2021-09-22T18:24:19Z Alpha Bravo Tech. 538 6107 wikitext text/x-wiki Samsung S7 Edge SM-G935A f662xvccy1nwy1bwkgqocas9j5alg9w File:SM-G935A PIC 6.png 6 2057 6108 2021-09-22T18:24:45Z Alpha Bravo Tech. 538 6108 wikitext text/x-wiki Samsung S7 Edge SM-G935A f662xvccy1nwy1bwkgqocas9j5alg9w File:SM-G935A PIC 7.png 6 2058 6109 2021-09-22T18:25:06Z Alpha Bravo Tech. 538 6109 wikitext text/x-wiki Samsung S7 Edge SM-G935A f662xvccy1nwy1bwkgqocas9j5alg9w File:SM-G935A PIC 8.png 6 2059 6110 2021-09-22T18:25:32Z Alpha Bravo Tech. 538 6110 wikitext text/x-wiki Samsung S7 Edge SM-G935A f662xvccy1nwy1bwkgqocas9j5alg9w File:SM-G935A PIC 9.png 6 2060 6111 2021-09-22T18:26:00Z Alpha Bravo Tech. 538 6111 wikitext text/x-wiki Samsung S7 Edge SM-G935A f662xvccy1nwy1bwkgqocas9j5alg9w File:SMCSensor.png 6 2030 6045 2021-09-06T15:31:45Z Muerto 527 6045 wikitext text/x-wiki Issue Summary 9qsrutnpbt2bbbs8ggac9kjwutu0fnn File:SMCSensorRevised.png 6 2032 6047 2021-09-06T15:44:30Z Muerto 527 6047 wikitext text/x-wiki Summary 26p95b46tqi2swic8u1etbclxsyxq5k File:SMC 820-3209-A Crop.jpg 6 627 1299 2020-05-20T23:48:28Z Dusten04 30 1299 wikitext text/x-wiki SMC 820-3209-A Crop 7r0tebw0dbu3a96eplno89fke8jrdhp File:SMC AVREF .png 6 2205 6698 2023-01-08T21:18:02Z Inwerp 16 6698 wikitext text/x-wiki SMC AVREF rwbxh0ro6zqxdd68a9stogabhvmip7w File:SMC Flashing done.jpg 6 1952 5806 2021-05-12T12:42:26Z Alex6337 28 5806 wikitext text/x-wiki SMC Flashing done pg47f29y2476nmtuo1c31mgkpzzaey9 File:SMC ONOFF L POWERPAD BOTTOM.jpg 6 681 1392 2020-07-02T16:36:58Z Satyricon 21 1392 wikitext text/x-wiki SMC ONOFF L POWERPAD BOTTOM bcx1qoozjate0xkqpj9x6q0o77z7xyn File:SMC ONOFF L POWERPAD TOP.jpg 6 680 1391 2020-07-02T16:36:15Z Satyricon 21 1391 wikitext text/x-wiki SMC ONOFF L POWERPAD TOP 9pud45yivhem1mchi50bav42odpqq2r File:SMC ON OFF Keyboard TP.jpg 6 679 1389 2020-07-02T16:10:34Z Satyricon 21 1389 wikitext text/x-wiki SMC ON OFF Keyboard TP qkhvfqs09pw7xszkt19irbex91dqpcy File:SMC Power up.jpg 6 12 13 2019-11-06T16:10:59Z Chrisb 1 13 wikitext text/x-wiki SMC Power up e9dfqavkza4sls1gh8bstvbvbxlmis1 File:SOC FORCE DFU Jumper.jpg 6 2011 5952 2021-07-23T22:21:56Z Crumblenaut 317 5952 wikitext text/x-wiki Long jumper that's been cut after the system booted into DFU mode successfully. qj0yaoadssyjmo2gy2pxl4dlvg9ja7q File:SR17D.png 6 2164 6531 2022-06-10T21:57:34Z Inwerp 16 6531 wikitext text/x-wiki SR17D l4kzibyqshzlspooyv8dq0454zbuvjo File:SR2C4.png 6 2162 6529 2022-06-10T21:52:33Z Inwerp 16 6529 wikitext text/x-wiki SR2C4 Intel PCH cv75ggfuafm9z3ua4ghjcjisa953uc6 File:SR40B.png 6 2165 6532 2022-06-10T22:04:18Z Inwerp 16 6532 wikitext text/x-wiki Intel SR40B PCH 5iudmy11va8zs6gfol1r1fw01nfod9e File:SYSDETECT L.png 6 2152 6464 2022-04-13T11:28:48Z Inwerp 16 6464 wikitext text/x-wiki Battery trigger lpbyn9sufwbw7qyohuzj87gvt2gzbyl File:Samsung S10+ Front Camera Edited.jpg 6 574 1212 2020-05-09T15:22:35Z Dusten04 30 1212 wikitext text/x-wiki Samsung S10+ Front Camera Edited jk78j5qhd717evngvtumj27i4q6sbtb File:Samsung S10+ Headphone Jack Edited.jpg 6 575 1213 2020-05-09T15:23:02Z Dusten04 30 1213 wikitext text/x-wiki Samsung S10+ Headphone Jack Edited o8q2sys5cw45uylgk2bie33hn50mv7p File:Samsung S10+ OLED Edited.jpg 6 573 1211 2020-05-09T15:22:07Z Dusten04 30 1211 wikitext text/x-wiki Samsung S10+ OLED Edited 7t4929ofejdg5agi9fzwu0ur6bal1ue File:Samsung S10 Battery Edited.jpg 6 586 1228 2020-05-10T16:55:19Z Dusten04 30 1228 wikitext text/x-wiki Samsung S10 Battery Edited 5ebpmy6depc4knusywr1u5y9a62d9r2 File:Samsung S10 Charging Port Edited.jpg 6 585 1227 2020-05-10T16:54:39Z Dusten04 30 1227 wikitext text/x-wiki Samsung S10 Charging Port Edited gbkzxlporul6x423jl6otutw9owb5ct File:Samsung S10 Front Camera.jpg 6 587 1229 2020-05-10T16:55:47Z Dusten04 30 1229 wikitext text/x-wiki Samsung S10 Front Camera qavpfcpzv2ey3wz388pca426s7o3676 File:Samsung S10 Headphone Jack Edited.jpg 6 588 1230 2020-05-10T16:56:20Z Dusten04 30 1230 wikitext text/x-wiki Samsung S10 Headphone Jack Edited ankdqffwnpn405g989imzaz1cqni52u File:Samsung S10 Left Rear Camera Edited.jpg 6 589 1231 2020-05-10T16:56:51Z Dusten04 30 1231 wikitext text/x-wiki Samsung S10 Left Rear Camera Edited pqea1z9slm0dc3v745h74hdo386ndop File:Samsung S10 OLED Edited.jpg 6 584 1226 2020-05-10T16:54:09Z Dusten04 30 1226 wikitext text/x-wiki Samsung S10 OLED Edited aycwpfrkwqdr9v5x4o7ykt4hemmqo74 File:Samsung S10 Right Rear Camera Edited.jpg 6 590 1232 2020-05-10T16:57:27Z Dusten04 30 1232 wikitext text/x-wiki Samsung S10 Right Rear Camera Edited qklboddtrgdzjxeg9z0n2tccd05276p File:Samsung S10e 12mp Camera Edited.jpg 6 579 1220 2020-05-09T19:18:47Z Dusten04 30 1220 wikitext text/x-wiki Samsung S10e 12mp Camera Edited 3ndjetsalse3t4kyos3f0cu9gzslxiw File:Samsung S10e 16MP Camera Edited.jpg 6 580 1221 2020-05-09T19:19:17Z Dusten04 30 1221 wikitext text/x-wiki Samsung S10e 16MP Camera Edited bowzsdhc99my8oxgcuz582gn0ys8asa File:Samsung S10e Front Camera.jpg 6 581 1222 2020-05-09T19:19:47Z Dusten04 30 1222 wikitext text/x-wiki Samsung S10e Front Camera 0cu7yjzy7q6g33z6xu8dwkz7eas4uj7 File:Samsung S10e Headphone Jack Edited.jpg 6 582 1223 2020-05-09T19:20:20Z Dusten04 30 1223 wikitext text/x-wiki Samsung S10e Headphone Jack Edited 79j6sqluofs8npfkuzd975hp7dq4yli File:Samsung S10e OLED Edited.jpg 6 578 1219 2020-05-09T19:18:03Z Dusten04 30 1219 wikitext text/x-wiki Samsung S10e OLED Edited ecpciamat292jl4l23qdv5ti0jcxat0 File:Samsung S10e Power Button Edited.jpg 6 583 1224 2020-05-09T19:21:30Z Dusten04 30 1224 wikitext text/x-wiki Samsung S10e Power Button Edited 22q9vpb3w7shuk7xn3xadwbhk8d8ltp File:Samsung S20 Ultra Battery Edited.jpg 6 600 1251 2020-05-14T01:43:24Z Dusten04 30 1251 wikitext text/x-wiki Samsung S20 Ultra Battery Edited cs9bk6j4sg4pqelxxsqg6ct3cutufed File:Samsung S20 Ultra Charging Port 2 Edited.jpg 6 604 1255 2020-05-14T01:48:11Z Dusten04 30 1255 wikitext text/x-wiki Samsung S20 Ultra Charging Port 2 Edited kdpxvpwz5cc4ewdofc8914jkidu5czx File:Samsung S20 Ultra Charging Port Edited.jpg 6 603 1254 2020-05-14T01:47:13Z Dusten04 30 1254 wikitext text/x-wiki Samsung S20 Ultra Charging Port Edited ez44ay9kvtc0u7ayjf0p5wcleb9za99 File:Samsung S20 Ultra Edited OLED.jpg 6 602 1253 2020-05-14T01:46:24Z Dusten04 30 1253 wikitext text/x-wiki Samsung S20 Ultra Edited OLED m4lzbqugi11ftoqp665dvds32vcxe7u File:Samsung S20 Ultra Front Camera Edited.jpg 6 605 1256 2020-05-14T01:48:57Z Dusten04 30 1256 wikitext text/x-wiki Samsung S20 Ultra Front Camera Edited sj0xltkac5oalelccd2steedeeq07wg File:Samsung S20 Ultra Overall.jpg 6 599 1250 2020-05-14T01:41:43Z Dusten04 30 1250 wikitext text/x-wiki Samsung S20 Ultra Overall mh2tk7emvkzac9fwttu6z9kg1hy5hac File:Samsung S20 Ultra Power Button.jpg 6 601 1252 2020-05-14T01:45:03Z Dusten04 30 1252 wikitext text/x-wiki Samsung S20 Ultra Power Button az4okxr5t6ujcra4ulvewgh3d2lvk7e File:Samsung S20 Ultra Rear Camera 2 Edited.jpg 6 610 1262 2020-05-15T10:49:46Z Dusten04 30 1262 wikitext text/x-wiki Samsung S20 Ultra Rear Camera 2 Edited mf9xgrw1ds0tygpos9w9exsqoa3oj88 File:Samsung S20 Ultra Rear Camera 3 Edited.jpg 6 611 1263 2020-05-15T10:50:27Z Dusten04 30 1263 wikitext text/x-wiki Samsung S20 Ultra Rear Camera 3 Edited 79fqztqnq3yxobwi4vix0nv8qs5ha17 File:Samsung S20 Ultra Rear Camera 4 Edited.jpg 6 612 1264 2020-05-15T10:51:03Z Dusten04 30 1264 wikitext text/x-wiki Samsung S20 Ultra Rear Camera 4 Edited mcjhibbep98cjexo0g9au9dx7lipn1o File:Samsung S20 Ultra Rear Camera Edited.jpg 6 609 1261 2020-05-15T10:49:15Z Dusten04 30 1261 wikitext text/x-wiki Samsung S20 Ultra Rear Camera Edited e0e2k7u3s48f0l2zxa0wt4lxxv7nfdf File:Samsung S20 Ultra Side Sensor Edited.jpg 6 614 1266 2020-05-15T10:52:23Z Dusten04 30 1266 wikitext text/x-wiki Samsung S20 Ultra Side Sensor Edited s7p2pbslnidub2vsrjef7j3ez7kkzja File:Samsung S20 Ultra Wireless Edited.jpg 6 613 1265 2020-05-15T10:51:38Z Dusten04 30 1265 wikitext text/x-wiki Samsung S20 Ultra Wireless Edited 6fiymak93u7egzt6go2vzhac2ef57pl File:Samsung S7 Edge SM-G935A.pdf 6 2049 6098 2021-09-22T18:02:00Z Alpha Bravo Tech. 538 6098 wikitext text/x-wiki Samsung S7 Edge SM-G935A f662xvccy1nwy1bwkgqocas9j5alg9w File:Samsung S8 SM-G950U Diode Mode Readings.pdf 6 2033 6090 6065 2021-09-21T13:59:40Z Alpha Bravo Tech. 538 Alpha Bravo Tech. uploaded a new version of [[File:Samsung S8 SM-G950U Diode Mode Readings.pdf]] 6065 wikitext text/x-wiki Samsung S8 SM-G950U Diode Mode Readings tkzdv68hf7w9v9a3ge8mm50i7g9msqn File:Samsung S8 SM-G950U diode mode readingsV2.pdf 6 2048 6091 2021-09-21T14:06:21Z Alpha Bravo Tech. 538 6091 wikitext text/x-wiki Samsung S8 SM-G950U diode mode readings v2 gr58pjl9rqj9br4z8xphbrd5w64wa1q File:Save in "home".jpg 6 2149 6444 2022-02-28T11:28:15Z Alex6337 28 6444 wikitext text/x-wiki Save in "home" 7zcj0wzu7tqhvbtiipxpsyqtkth3tdm File:Scissors A2179 Bottom.jpg 6 1714 5091 2020-10-23T08:38:17Z Satyricon 21 5091 wikitext text/x-wiki bottom view 1qjvvhhaei21tdz26u5vb901646ci9a File:Scissors A2179 Top.jpg 6 1713 5090 2020-10-23T08:37:21Z Satyricon 21 5090 wikitext text/x-wiki top view coaxy6e016jnozhma4hbkfl5s4v3vns File:Screen Shot 2021-08-04 at 4.57.13 PM.png 6 2015 5965 2021-08-04T14:00:38Z ProMoe 502 5965 wikitext text/x-wiki A 13" 2015 at minimal usage. 2.7 i5, 8GB, 128GB Sitting on 1026 battery cycles. gz7j4z4yo5rqmcuoolpeaozorvsdza7 File:Screen Shot 2021-08-04 at 5.40.47 PM.png 6 2016 5971 2021-08-04T14:42:34Z ProMoe 502 5971 wikitext text/x-wiki n oh2rif7evp5obgx16x2w2t6pjpreh7u File:Screenshot 2021-09-29 17-35-15.png 6 2077 6191 2021-10-20T10:37:40Z Hpibmx 555 6191 wikitext text/x-wiki iPad 8 touch 1/2 dgmxvmtrv2yitsjqrup5mpztpn5y44t File:Screenshot 2021-09-29 17-37-09.png 6 2078 6192 2021-10-20T10:38:36Z Hpibmx 555 6192 wikitext text/x-wiki Finger tp9y7feebypeiwe1bi3k3w5wea5i9em File:Shiny Search 1.png 6 818 1862 1861 2020-09-27T20:11:08Z Chrisb 1 1862 wikitext text/x-wiki Visible to group [[Visible to group::Shiny]] not [[Visible to::whitelist]] dlm1s7c5595rdy1cdyze7owo3cccnoc File:Shiny Search 2.png 6 819 1860 1859 2020-09-27T20:10:30Z Chrisb 1 1860 wikitext text/x-wiki Shiny Search 2 Visible to group [[Visible to group::Shiny]] not [[Visible to::whitelist]] 7a233apbxu1jhxwfnz2izc9n2t8ix82 File:Smasung S20 Ultra Sensor Edited.jpg 6 615 1267 2020-05-15T10:52:56Z Dusten04 30 1267 wikitext text/x-wiki Smasung S20 Ultra Sensor Edited l9idjja6uxmb4ir2ga43da5h93adqrw File:Smc-crystal-circuit.jpg 6 13 14 2019-11-06T16:11:27Z Chrisb 1 14 wikitext text/x-wiki Smc-crystal-circuit lvsu95xyyg6rboicol3u5dd9wy3vnzn File:Smc-reset-circuit.jpg 6 14 15 2019-11-06T16:12:04Z Chrisb 1 15 wikitext text/x-wiki Smc-reset-circuit fcq525zvu4m62odq9abqgkx6maadfm3 File:Steam Deck 512GB Diode Readings.png 6 2191 6627 2022-09-19T14:00:03Z Kroman 522 6627 wikitext text/x-wiki Diode readings of the Steam Deck USB charging port using the USB-C breakout board from OSS Team. n66yyfj8tvxeydo68ovqccw4nljgjf0 File:Successful Boot EFI 1.jpg 6 26 27 2019-11-06T16:23:32Z Chrisb 1 27 wikitext text/x-wiki Successful Boot EFI 1 85ewwsb1ei6wta150epy9muiql3dr1j File:Successful Boot EFI 2.jpg 6 27 28 2019-11-06T16:24:02Z Chrisb 1 28 wikitext text/x-wiki Successful Boot EFI 2 1cxq2qywal8jwa942m85q95u1bz58tz File:Switch Lite Charging Port 1 Edited.jpg 6 559 1192 2020-05-05T19:13:17Z Dusten04 30 1192 wikitext text/x-wiki Switch Lite Charging Port 1 Edited 0rqutejsgp146an027srvgjp5u3co1l File:Switch P13USB Edited.jpg 6 593 1240 2020-05-12T23:23:14Z Dusten04 30 1240 wikitext text/x-wiki Switch P13USB Edited k9ouqob1xqsyirgep3fc4q8untpdi3c File:T2 PMIC 001700 early revision.png 6 2137 6412 2022-02-09T12:20:24Z Inwerp 16 6412 wikitext text/x-wiki T2 PMIC 001700 early revision jd0kiuqrmj2l448emz6esks9h6s268o File:T2 PMIC 001700 revision 2.png 6 2138 6413 2022-02-09T12:25:07Z Inwerp 16 6413 wikitext text/x-wiki T2 PMIC 001700 revision 2 35w78loh9g9rn8znrkxpndymfrl30o4 File:T2 RAM Pinout.jpg 6 2259 7014 2023-11-03T16:18:05Z Inwerp 16 7014 wikitext text/x-wiki credits to @leshuq / @lisochenko 8ln7orudflbj648ndjqcrgs1q0deyua File:T2 Ram balls.png 6 2243 6924 2023-09-26T12:08:05Z Inwerp 16 6924 wikitext text/x-wiki T2 Ram balls 7cpp0xvimwzqdexraf04q9mpcxj559w File:T2 WiFi IC Replacement.jpg 6 1885 5555 2021-02-08T00:14:41Z EstebanM 25 5555 wikitext text/x-wiki Replace WiFI iC, BT Serial Flash, WiFi EEPROM oo0430s3ydv9a7xt38qyozpoheylwz7 File:TCON Backlight VOUT.png 6 1976 5858 2021-05-20T14:11:51Z Inwerp 16 5858 wikitext text/x-wiki TCON Backlight VOUT testpoint 5sk2o9m9hzjxc4080aar0101e3q671b File:TCON Backlight communication.png 6 1975 5857 2021-05-20T14:11:03Z Inwerp 16 5857 wikitext text/x-wiki TCON Backlight SDA / SLC lines p1invyk2gcpuo21gryvpa5xw6ib5rsj File:TCON Testpoints.png 6 2085 6231 2021-11-16T08:52:22Z Inwerp 16 6231 wikitext text/x-wiki There are many testpoints behind wide flex cable including feedback 92688m9tgq8d2bcrbyesii2ru7x36zy File:TempComparator.png 6 719 1518 2020-08-12T19:20:49Z Inwerp 16 1518 wikitext text/x-wiki HDD Temp circuit 7ri0o7d8quqvjro1p3lt2c2kslbp96v File:Temp sensor processing for imac 2009.png 6 2098 6285 2021-12-05T10:29:16Z Bobcov 604 6285 wikitext text/x-wiki temperature sensor circuits rvwjr3cyc11r47cw79ci5anqyuo5byt File:The Dead Mac Scrolls 1992.pdf 6 477 1070 2020-04-19T16:34:26Z Chrisb 1 1070 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 File:Top Amtech flux is a knock off. The bottom is genuine..jpg 6 1687 5028 2020-10-17T13:44:43Z Satyricon 21 5028 wikitext text/x-wiki Top Amtech flux is a knock off. The bottom is genuine. 6xmm8e46u8l1s0j8v58jhrj3c2pqm9v File:Touchbar controller board.png 6 710 1501 2020-08-09T12:58:52Z Inwerp 16 1501 wikitext text/x-wiki easilly destroyed by waterdamage k9bi3jctgw8y37r8xc304atgdta8amw File:USB-C pinout.png 6 811 1731 2020-09-14T14:25:42Z Satyricon 21 1731 wikitext text/x-wiki USB-C pinout 3s18ul6n6xul0y77gs2o1f557swelgq File:USPS Help 01.png 6 1352 2986 2020-10-05T19:21:41Z Matty 22 2986 wikitext text/x-wiki USPS Help 01 27xk2opfpoiawzbu9ab6s5hwjkse5l0 File:USPS Help 02.png 6 1353 2989 2020-10-05T19:25:31Z Matty 22 2989 wikitext text/x-wiki USPS Help 02 d4ydxef9cq9ultamszkpvjtdzf8qipo File:USPS Help 03.png 6 1354 2991 2020-10-05T19:28:39Z Matty 22 2991 wikitext text/x-wiki USPS Help 03 4vw746on7b4gvhcpj2urr5rmwjc4tfv File:USPS Help 04.png 6 1355 2992 2020-10-05T19:29:34Z Matty 22 2992 wikitext text/x-wiki USPS Help 04 o9sldh4vlttk3w5rt1gxf5koyp99u61 File:USPS Help 05.png 6 1356 2993 2020-10-05T19:33:53Z Matty 22 2993 wikitext text/x-wiki USPS Help 05 93zjyjt7s2ffyu7teun48oyl6ypwoki File:USPS Help 06.png 6 1357 2994 2020-10-05T19:36:06Z Matty 22 2994 wikitext text/x-wiki USPS Help 06 tle8zgja4ksanoyngsfvi539bicdq0k File:USPS Help 07.png 6 1358 2995 2020-10-05T19:37:04Z Matty 22 2995 wikitext text/x-wiki USPS Help 07 1s49qexlcffhi5ceve4r161nf8fiarb File:USPS Help 08.png 6 1359 2996 2020-10-05T19:39:00Z Matty 22 2996 wikitext text/x-wiki USPS Help 08 rstd61q3egk6hdbzu3tv0uiq0hfj1tf File:USPS Help 09.png 6 1360 2997 2020-10-05T19:41:02Z Matty 22 2997 wikitext text/x-wiki USPS Help 09 iicqntjj00rsjh5kn8bfkfgl6g8m6e8 File:USPS Help 10.png 6 1361 2998 2020-10-05T19:42:16Z Matty 22 2998 wikitext text/x-wiki USPS Help 10 b35e430osakozi4s8bwdkky6ahnq3aq File:USPS Help 11.png 6 1362 2999 2020-10-05T19:45:38Z Matty 22 2999 wikitext text/x-wiki USPS Help 11 suy08bf96qgar596jug2r86nhlib8bo File:USPS Help 12.png 6 1363 3000 2020-10-05T19:49:39Z Matty 22 3000 wikitext text/x-wiki USPS Help 12 flnna5o3aqghqrsb3rtzxhmxiuuwdd0 File:USPS Help 13.png 6 1364 3001 2020-10-05T19:50:19Z Matty 22 3001 wikitext text/x-wiki USPS Help 13 o6l0d4j80rb6vavliys8mtblmp36l70 File:USPS Help 14.png 6 1365 3002 2020-10-05T19:51:30Z Matty 22 3002 wikitext text/x-wiki USPS Help 14 6e474ktqrw2e9f137nxw13eywefo4or File:USPS Help 15.png 6 1366 3003 2020-10-05T19:52:14Z Matty 22 3003 wikitext text/x-wiki USPS Help 15 nrpm6qh0d7h1faivgoduqgdtwjvy2q4 File:VIDEO Y TOUCH SE 2022.jpg 6 2662 7717 2024-12-31T12:54:17Z Dfcloud6 1726 7717 wikitext text/x-wiki LCD and TOUCH-ID diode scale values iphone se 2022 dfcloud6 plq4fmsqm2qw7oujp0oag6stfcui3z9 File:WIFFI.png 6 1331 2911 2020-10-02T15:19:59Z Hunmax 201 2911 wikitext text/x-wiki iPhone X intel Logic Board gc5jue8rllq7zxpkyvg88as5efr9edx File:What to look for.png 6 143 417 2020-01-19T06:18:56Z EstebanM 25 417 wikitext text/x-wiki What to look for qs1wwqh6rrc0b2c7hgsgy1i2atcfx4t File:WiFi Error.jpg 6 1883 5553 2021-02-07T23:52:34Z EstebanM 25 5553 wikitext text/x-wiki Error in System Information if ROM chips are not transferred. nx2k57th1x78831wbe32vzaxxeasfne File:WiFi Replacement.jpg 6 1882 5552 2021-02-07T23:46:18Z EstebanM 25 5552 wikitext text/x-wiki WiFi IC U3700 Replacement 0ugrm7xfkrkuwj6k0oyl2gvbsk55jsc File:Wifi Pinout.png 6 2212 6736 2023-02-12T17:09:45Z Inwerp 16 6736 wikitext text/x-wiki Wifi Pinout 35tnpiqqc567ao0lvst1g93pur2nwxg File:Wiring diagram.jpg 6 2253 6976 2023-10-23T23:49:43Z Infosquad 1036 6976 wikitext text/x-wiki UART wiring diagram j9g7jhlu3h2w7zijl3fetnvrixs9g8s File:Working tcon Testcable (Intel only).png 6 2086 6233 2021-11-16T12:42:04Z Inwerp 16 6233 wikitext text/x-wiki Working tcon Testcable (Intel only) ebcozzw2rts6ycf1m0lv8eite4qnnlp File:a1347 power supply 01.jpg 6 1335 2933 2020-10-04T19:17:19Z Alan.l 19 2933 wikitext text/x-wiki a1347 power supply 01 f1f0u7va2pj69n84jj4eo0soa6bqtve File:a1347 power supply 02.jpg 6 1336 2934 2020-10-04T19:19:02Z Alan.l 19 2934 wikitext text/x-wiki a1347 power supply 02 4rlvdtb9wlad6zbqgxm683o6qwnxexa File:als iphone 13 dfcloud6.jpg 6 2671 7728 2024-12-31T13:38:09Z Dfcloud6 1726 7728 wikitext text/x-wiki Als IR-CAM TORCH and SIM CARD diode scale values iphone 13 dfcloud6 35fvpprqdlvn2azcpckboywn14l9z62 File:anode cap removal.png 6 2018 5984 2021-08-05T02:03:49Z Nobluesky 182 5984 wikitext text/x-wiki anode cap removal 8zvjuqwqdsgpn3o5w7qf3t1taru1o6w File:apple-iphone-11pro nand.png 6 2202 6664 2022-11-03T09:57:51Z Ninos22 819 6664 wikitext text/x-wiki 11 Pro/ProMax NAND readings 01cnktqzw1rc6x6l9ytyvnaj349ifa5 File:backlightflexcable.jpg 6 2215 6751 2023-02-14T14:19:06Z Alan.l 19 6751 wikitext text/x-wiki backlightflexcable o17olbqwq7jnj4nlgbhruku08s0csip File:backlightflexcable2.png 6 2216 6754 2023-02-14T14:21:05Z Alan.l 19 6754 wikitext text/x-wiki backlightflexcable2 bji15k7pax2v70n372q0n0goi6co1ez File:backlightflexcable3.jpg 6 2217 6757 2023-02-14T22:49:56Z Alan.l 19 6757 wikitext text/x-wiki backlightflexcable3 h73homf2qll2tpt53sj9orxtyma8djt File:balls cut.png 6 2244 6925 2023-09-26T12:09:51Z Inwerp 16 6925 wikitext text/x-wiki balls cut a3ac8tfkio5n0wu20jtdmr3bmc1n8au File:batlow l to 3v3 s5.png 6 2139 6427 2022-02-18T18:06:36Z Inwerp 16 6427 wikitext text/x-wiki How to start 15" MacBook Pro with Start with 65w charger and no battery hg7lq9g8im7mwqrfo88p4rvji158gmw File:calibration2.jpg 6 1709 5083 2020-10-22T21:15:52Z Alan.l 19 5083 wikitext text/x-wiki calibration2 ca6qqbog7q6n46cls2qt38jcxm9tzk1 File:cameras iphone 13 dfcloud6.jpg 6 2674 7731 2024-12-31T13:42:19Z Dfcloud6 1726 7731 wikitext text/x-wiki cameras diode scale values iphone 13 k6mx1oqb40iuhglrh4mkv5pakyrnbk9 File:charge fpc 13pm dfcloud6.jpg 6 2657 7711 2024-12-31T12:37:28Z Dfcloud6 1726 7711 wikitext text/x-wiki Charging dock diode scale values dfcloud6 4zqvp6gkctsu2d3t6gtmq22c7qola2x File:content-installer.jpg 6 1953 5809 2021-05-12T13:00:38Z Alex6337 28 5809 wikitext text/x-wiki Content of MacOS Mojave installer package 2cum2g6q8w4qv0rlr8zitv6676440d2 File:crt monitor details 1.jpg 6 2019 5985 2021-08-05T02:04:59Z Nobluesky 182 5985 wikitext text/x-wiki crt monitor details 1 6ux5klq436qtuhojrn11vkqdwjj3zel File:crt monitor details 2.jpg 6 2020 5986 2021-08-05T02:05:23Z Nobluesky 182 5986 wikitext text/x-wiki crt monitor details 2 9fdcfpxs4r3zspq2ozfb09qs0rtqenl File:crt tv details 1.jpg 6 2021 5987 2021-08-05T02:05:44Z Nobluesky 182 5987 wikitext text/x-wiki crt tv details 1 sjtrrfx8yrp171tv6j87yx6jipy7sxa File:crt tv details 2.png 6 2022 5988 2021-08-05T02:06:10Z Nobluesky 182 5988 wikitext text/x-wiki crt tv details 2 kwlm24cyoprlhlvoar3xc9rui7beu81 File:crt tv details 3.jpg 6 2023 5989 2021-08-05T02:06:29Z Nobluesky 182 5989 wikitext text/x-wiki crt tv details 3 guwo4tzi3cplczvp0xebhw6p0yuxw5u File:debug 1.png 6 2250 6963 2023-10-22T16:32:09Z Infosquad 1036 6963 wikitext text/x-wiki debug aliases block in Apple Macbook schematics kchjvv3oczgeq53ztpctntn3aborhb8 File:dock iphone 13 dfcloud6.jpg 6 2673 7730 2024-12-31T13:41:09Z Dfcloud6 1726 7730 wikitext text/x-wiki Charging dock diode scale values iphone 13 tkoe6ux5dmprtpc1ecjwzc487rf4wmp File:factory calibrated colour.jpg 6 1708 5082 2020-10-22T21:10:01Z Alan.l 19 5082 wikitext text/x-wiki factory calibrated colour h01zimebiaftuavvtvoif7ya5yj7y2l File:firmwarepkg.jpg 6 1954 5810 2021-05-12T13:02:22Z Alex6337 28 5810 wikitext text/x-wiki Firmware.pkg location in InstallESD.dmg a5uh6iz1yltu0z445e8m51npedi5ne2 File:funfact3.png 6 722 1525 2020-08-12T20:07:34Z Inwerp 16 1525 wikitext text/x-wiki fun fact abouth the hdd temp sensor mq6okp6b6mo5sdtgis8pdge2i93ltmh File:game console small parts list as of Jan 21st 2022.xlsx 6 2122 6361 2022-01-21T19:18:41Z Alpha Bravo Tech. 538 List of game console parts and components. Provided by http://repairlegion.com 6361 wikitext text/x-wiki == Summary == List of game console parts and components. Provided by http://repairlegion.com 3znibfc7vjtig2fy38jh3embi5krm2i File:goldfoilxs.png 6 1887 5560 2021-02-10T05:18:31Z PaladinJax 199 5560 wikitext text/x-wiki gold foil iphone xs 47q3gpcmk2zvyptz9dul0dmtzawo6zm File:hddboy.png 6 2161 6527 2022-06-10T19:55:20Z Inwerp 16 6527 wikitext text/x-wiki This image describes the process of QA analysis iitpqxv02whzlybm68ypzl2498v2c25 File:header.jpg 6 1417 3111 3106 2020-10-06T22:07:44Z Chrisb 1 Chrisb uploaded a new version of [[File:header.jpg]] 3075 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 File:iMac EDP.png 6 2232 6869 2023-06-21T12:42:46Z Inwerp 16 6869 wikitext text/x-wiki iMac EDP connector pinout oaywh4yllnuw3r7gg0bdb0bn8o8eexa File:iPHONE XR DOCK CONECTOR VALUES.jpg 6 2665 7721 2024-12-31T12:59:26Z Dfcloud6 1726 7721 wikitext text/x-wiki Charging dock diode scale values iphone xr dfcloud6 bujsxga6lt5kieln67r3judoc2x3wxo File:iPadLaminatedOrientation.jpg 6 1817 5342 2020-12-18T23:14:40Z PaladinJax 199 5342 wikitext text/x-wiki iPad Laminated Display Orientation gp1iqtnougsessdt03f8zeh1pt3l691 File:iPad 10.2 Connector 4 Edited.jpg 6 268 703 2020-02-17T20:54:59Z Dusten04 30 703 wikitext text/x-wiki iPad 10.2 Connector 4 Edited t2bocu8w5d0pfl6423a5l01xf9o0hp8 File:iPad 10.2 Digi Connector 2 Edited.jpg 6 266 701 2020-02-17T20:53:42Z Dusten04 30 701 wikitext text/x-wiki iPad 10.2 Digi Connector 2 Edited qdrikf37xep6f8ocjhjwshecn4l7fb4 File:iPad 10.2 Digitizer Connector 1 Edited.jpg 6 265 700 2020-02-17T20:53:03Z Dusten04 30 700 wikitext text/x-wiki iPad 10.2 Digitizer Connector 1 Edited ke1f1gthpyl46rdxaq64ryjv2ggauqh File:iPad 10.2 Home button connector Edited.jpg 6 269 704 2020-02-17T20:55:36Z Dusten04 30 704 wikitext text/x-wiki iPad 10.2 Home button connector Edited a71i5xz0d49tjvt5oqyddzsz6pih9xg File:iPad 10.2 LCD Connector Edited.jpg 6 267 702 2020-02-17T20:54:18Z Dusten04 30 702 wikitext text/x-wiki iPad 10.2 LCD Connector Edited gcxltsk37ljyyf297gycnfzd1vmm1fk File:iPad 10.2 Overall View 1 Edited.jpg 6 264 699 2020-02-17T20:52:02Z Dusten04 30 699 wikitext text/x-wiki iPad 10.2 Overall View 1 Edited hgupu0cp31llp2pfjlnfardhy99095k File:iPad 10.2 SIM Connector Edited.jpg 6 270 705 2020-02-17T20:56:38Z Dusten04 30 705 wikitext text/x-wiki iPad 10.2 SIM Connector Edited gb7pkwpct4496zuqje7702wlyolj3t1 File:iPad 5 Charging Port Edited.jpg 6 549 1181 2020-05-05T00:45:50Z Dusten04 30 1181 wikitext text/x-wiki iPad 5 Charging Port Edited kmroj7e1imx4l08eh0d1qdnjylx5kw2 File:iPad 5 Digitizer 1 Edited.jpg 6 539 1170 2020-05-05T00:36:47Z Dusten04 30 1170 wikitext text/x-wiki iPad 5 Digitizer 1 Edited 26917xls8yz748whqp4u9bbc7crxkte File:iPad 5 Digitizer 2 Edited.jpg 6 540 1171 2020-05-05T00:37:19Z Dusten04 30 1171 wikitext text/x-wiki iPad 5 Digitizer 2 Edited hebqcv4rmwqvyne00rhib992470kbai File:iPad 5 Front Camera Edited.jpg 6 546 1177 2020-05-05T00:40:52Z Dusten04 30 1177 wikitext text/x-wiki iPad 5 Front Camera Edited n4dsgcrrjrfd188itlnxrb93mp1dcmb File:iPad 5 Headphone Jack Edited.jpg 6 547 1178 2020-05-05T00:41:34Z Dusten04 30 1178 wikitext text/x-wiki iPad 5 Headphone Jack Edited eiztfe66nhgdyi9thkvv6k6cmkfm7o0 File:iPad 5 Home Button Edited.jpg 6 542 1173 2020-05-05T00:38:17Z Dusten04 30 1173 wikitext text/x-wiki iPad 5 Home Button Edited fc7assyhotzo5z0wqclq5hi87mxx7ft File:iPad 5 LCD Edited.jpg 6 543 1174 2020-05-05T00:38:52Z Dusten04 30 1174 wikitext text/x-wiki iPad 5 LCD Edited h60w3nmrxdfxo0v1ka2pdablvaci23r File:iPad 5 Mic Edited.jpg 6 548 1179 2020-05-05T00:42:15Z Dusten04 30 1179 wikitext text/x-wiki iPad 5 Mic Edited ffdzcx86v76rlmc3o9g5ay9vkfhm4uh File:iPad 5 Overall View Edited.jpg 6 538 1169 2020-05-05T00:36:17Z Dusten04 30 1169 wikitext text/x-wiki iPad 5 Overall View Edited 1abceam2q1d6hm5yj1etq2wg8qnd41i File:iPad 5 Power Button edited.jpg 6 544 1175 2020-05-05T00:39:30Z Dusten04 30 1175 wikitext text/x-wiki iPad 5 Power Button edited h16wucnq7zqlwqp97mjgmt7o9gy8sy3 File:iPad 5 Rear Camera Edited.jpg 6 545 1176 2020-05-05T00:40:24Z Dusten04 30 1176 wikitext text/x-wiki iPad 5 Rear Camera Edited gqhvw9u2epakx6nt3s3vvx0kpgtn0bq File:iPad 5 SIM.jpg 6 541 1172 2020-05-05T00:37:51Z Dusten04 30 1172 wikitext text/x-wiki iPad 5 SIM 4j25fnk7glduqsqr35jbylnjy56y6ny File:iPad 6 Connector 2 Edited.jpg 6 157 454 2020-02-01T02:11:48Z Dusten04 30 454 wikitext text/x-wiki iPad 6 Connector 2 4hy0ty764u9l39uv9q1xq2d4mrgi5ft File:iPad Air 3 Final DM.jpg 6 704 1466 2020-07-22T12:10:17Z Dusten04 30 1466 wikitext text/x-wiki iPad Air 3 Final DM kngvmykpot8jxaxyz26zaozyo6kilfs File:iPad Air 3 Final FPC 1 and 2.jpg 6 703 1465 2020-07-22T12:09:43Z Dusten04 30 1465 wikitext text/x-wiki iPad Air 3 Final FPC 1 and 2 dkpwjg62rwlt5e0aso9wd43qs3ag99z File:iPad Air 3 Front Camera.jpg 6 1347 2966 2020-10-05T13:38:28Z Dusten04 30 2966 wikitext text/x-wiki iPad Air 3 Front Camera shykdlv6q6xqh8z7rzrcrsv1nbw8s43 File:iPad Air 3 Headphone Jack.jpg 6 1346 2965 2020-10-05T13:37:52Z Dusten04 30 2965 wikitext text/x-wiki iPad Air 3 Headphone Jack diiu3ek71ok2ck785jtyerpm71lrhfy File:iPad Air 3 Power Button.jpg 6 1348 2967 2020-10-05T13:39:17Z Dusten04 30 2967 wikitext text/x-wiki iPad Air 3 Power Button f6hfmy1p27pz4rjozfsjhltfi1u5w9h File:iPad Air 3 Top Mic.jpg 6 1349 2968 2020-10-05T13:39:50Z Dusten04 30 2968 wikitext text/x-wiki iPad Air 3 Top Mic qu8rmf4vbaayrh7csm5gikcze9uhczs File:iPad Air Flex Cables.jpg 6 768 1638 2020-09-12T02:19:33Z Joesipaq 20 1638 wikitext text/x-wiki iPad Air original flex cables ipcma888p6de4vng6abcokf7ykzq4ex File:iPad Air Homebutton.jpg 6 767 1637 2020-09-12T02:18:34Z Joesipaq 20 1637 wikitext text/x-wiki iPad Air homebutton Original ohqeqbgo3a6rfc98eiaht4x36std443 File:iPad Air digi Alignment.jpg 6 769 1639 2020-09-12T02:20:33Z Joesipaq 20 1639 wikitext text/x-wiki Alignment marks on iPad Air original digitizer 2s0l08x4t18qsuih2j19qh9c8wkme2t File:iPad Air silk screening.jpg 6 770 1640 2020-09-12T02:21:19Z Joesipaq 20 1640 wikitext text/x-wiki iPad Air original silk screening h3mnff0wvnh7uwlsvrb0uturj2oqqxa File:iPad Mini 4 Battery Edited.jpg 6 567 1204 2020-05-07T00:12:22Z Dusten04 30 1204 wikitext text/x-wiki iPad Mini 4 Battery Edited 7611gb5n7n7izsmmznfwnjkzq4ecix6 File:iPad Mini 4 Digi Edited.jpg 6 566 1203 2020-05-07T00:10:16Z Dusten04 30 1203 wikitext text/x-wiki iPad Mini 4 Digi Edited egagzxwuhy6qfzt1lhfdnf410gs0zp0 File:iPad Mini 4 Front Camera Edited.jpg 6 571 1208 2020-05-07T00:16:44Z Dusten04 30 1208 wikitext text/x-wiki iPad Mini 4 Front Camera Edited n6zattistgvywef2v0v1nm25egff845 File:iPad Mini 4 Headphone Jack Edited.jpg 6 572 1209 2020-05-07T00:18:39Z Dusten04 30 1209 wikitext text/x-wiki iPad Mini 4 Headphone Jack Edited 5dnni16ac5pahib4mghvly21gxvjj66 File:iPad Mini 4 LCD Edited.jpg 6 565 1202 2020-05-07T00:08:53Z Dusten04 30 1202 wikitext text/x-wiki iPad Mini 4 LCD Edited b5kjrckessmgp70e2qfds93tudx55ww File:iPad Mini 4 Overall View Edited.jpg 6 564 1201 2020-05-07T00:05:19Z Dusten04 30 1201 wikitext text/x-wiki iPad Mini 4 Overall View Edited n6fr2bjrjzlhbju0c8leiokbuieuwvz File:iPad Mini 4 Power Button Edited.jpg 6 570 1207 2020-05-07T00:15:07Z Dusten04 30 1207 wikitext text/x-wiki iPad Mini 4 Power Button Edited hsfs9j1ddz14hwijsc1kns1b05dyett File:iPad Mini 4 Volume Mic Edited.jpg 6 568 1205 2020-05-07T00:12:50Z Dusten04 30 1205 wikitext text/x-wiki iPad Mini 4 Volume Mic Edited 9dmgykhrfv3hzv7hv4djkzh98527tzo File:iPad Mini 5 4G Antenna Edited.jpg 6 1832 5431 2021-01-05T02:27:47Z Dusten04 30 5431 wikitext text/x-wiki iPad Mini 5 4G Antenna Edited skbh2h70no2szkow243itl2cjmxmzel File:iPad Mini 5 Battery Connector.jpg 6 1831 5430 2021-01-05T02:26:58Z Dusten04 30 5430 wikitext text/x-wiki iPad Mini 5 Battery Connector qoreqzy395h2dt5dk7bu1hjccx68vj9 File:iPad Mini 5 Charging Port Edited.jpg 6 1833 5432 2021-01-05T02:28:18Z Dusten04 30 5432 wikitext text/x-wiki iPad Mini 5 Charging Port Edited 8jl6uez7zlwx6m4vzx453sow9lhmflg File:iPad Mini 5 Connector 2 Edited.jpg 6 1829 5428 2021-01-05T02:25:55Z Dusten04 30 5428 wikitext text/x-wiki iPad Mini 5 Connector 2 Edited s79baf2dxtg8xrl0h1bj58uhgidiwu7 File:iPad Mini 5 Connector 3 Edited.jpg 6 1830 5429 2021-01-05T02:26:28Z Dusten04 30 5429 wikitext text/x-wiki iPad Mini 5 Connector 3 Edited 11z4pndtthf1f5y0dhvo0xr4vw405dt File:iPad Mini 5 Front Camera Edited.jpg 6 1834 5433 2021-01-05T02:28:54Z Dusten04 30 5433 wikitext text/x-wiki iPad Mini 5 Front Camera Edited m4uaxn8b4h179ywpfbnocngg3zg9rr8 File:iPad Mini 5 Front Mic Edited.jpg 6 1835 5434 2021-01-05T02:29:43Z Dusten04 30 5434 wikitext text/x-wiki iPad Mini 5 Front Mic Edited gbhvvcha875l7d2mgr5beckgvgqe8kj File:iPad Mini 5 Headphone Jack Edited.jpg 6 1836 5435 2021-01-05T02:31:40Z Dusten04 30 5435 wikitext text/x-wiki iPad Mini 5 Headphone Jack Edited 5jp1pf02szsfndc38w6vb7ebs5jhxdz File:iPad Mini 5 Overall Edited.jpg 6 1827 5426 2021-01-05T02:24:22Z Dusten04 30 5426 wikitext text/x-wiki iPad Mini 5 Overall Edited johh1tr6a1mekr3eo6kbhc4us14u0yi File:iPad Mini 5 Power Button Edited.jpg 6 1837 5436 2021-01-05T02:32:37Z Dusten04 30 5436 wikitext text/x-wiki iPad Mini 5 Power Button Edited 5xl9cfp9jrk86mrcdcrbkt9mxqzkry5 File:iPad Mini 5 Rear Camera Edited.jpg 6 1838 5437 2021-01-05T02:33:12Z Dusten04 30 5437 wikitext text/x-wiki iPad Mini 5 Rear Camera Edited f9kks47bif07jl0igmmjs4qbi9u5hwx File:iPad Mini Rear Camera Edited.jpg 6 569 1206 2020-05-07T00:13:17Z Dusten04 30 1206 wikitext text/x-wiki iPad Mini Rear Camera Edited 1v2nw2hfyptkfedojxb56mf2rd7s3w6 File:iPad Pro105 Connector 1 Edited.jpg 6 160 469 2020-02-01T02:54:37Z Dusten04 30 469 wikitext text/x-wiki iPad Pro 10.5 Connector 1 cuufigoniu6298z62j99030sf5a6yxl File:iPad Pro105 Connector 2 Edited.jpg 6 161 470 2020-02-01T02:56:27Z Dusten04 30 470 wikitext text/x-wiki iPad Pro 10.5 Connector 2 d5yrq8q7h1tujyyt6xtyzeeclmrx8u6 File:iPad Pro105 Connector 3 Edited.jpg 6 162 471 2020-02-01T02:57:42Z Dusten04 30 471 wikitext text/x-wiki iPad Pro 10.5 Connector 3 dkqb79e6qjoo1jb1k5jcfq810xew0to File:iPad Pro105 Connector 4 Edited.jpg 6 163 472 2020-02-01T02:58:59Z Dusten04 30 472 wikitext text/x-wiki iPad Pro 10.5 Connector 4 id93l93vs7gkgwp3np6tmqxz7ih5ol2 File:iPad Pro 105 Charging Port Edited.jpg 6 577 1217 2020-05-09T15:25:59Z Dusten04 30 1217 wikitext text/x-wiki iPad Pro 105 Charging Port Edited rd7ib9se17ut55eln1vhj3w74gkwtf0 File:iPad Pro 11" 3rd Gen WiFi.jpg 6 128 357 2019-12-19T16:00:41Z Matty 22 357 wikitext text/x-wiki iPad Pro 11" 3rd Gen WiFi beypviij5etu4kbsg9wqs8a2qrqrrdk File:iPad Pro 11" 3rd Gen WiFi Logic Board (Fulll).jpg 6 132 362 2019-12-19T16:14:26Z Matty 22 362 wikitext text/x-wiki iPad Pro 11" 3rd Gen WiFi Logic Board (Fulll) asoidb7p13h9gcqk59wbptgmini4si4 File:iPad Pro 11" 3rd Gen WiFi Logic Board (Screen Connectors).jpg 6 133 363 2019-12-19T16:16:04Z Matty 22 363 wikitext text/x-wiki iPad Pro 11" 3rd Gen WiFi Logic Board (Screen Connectors) iu0e0uourtao5ragwikzclf0o5znckp File:iPad Pro 11" 3rd Gen WiFi Logic Board (Top, Speaker Section).jpg 6 134 364 2019-12-19T16:17:43Z Matty 22 364 wikitext text/x-wiki iPad Pro 11" 3rd Gen WiFi Logic Board (Top, Speaker Section) 852sm7cikzxv7x3aclf41dq2t9y6ufo File:iPad Pro 11" 3rd Gen WiFi Screen (Camera & IR Sensors).jpg 6 130 359 2019-12-19T16:06:09Z Matty 22 359 wikitext text/x-wiki iPad Pro 11" 3rd Gen WiFi (Camera & IR Sensors) am6bvspwfbwk48bn6ojjvtbw48udyqt File:iPad Pro 11" 3rd Gen WiFi Screen Cables.jpg 6 129 358 2019-12-19T16:02:35Z Matty 22 358 wikitext text/x-wiki iPad Pro 11" 3rd Gen WiFi Screen Cables 9z79mi2d9lnr78zt38douo5jlodjw9p File:iPad Pro 11 Board Only.jpg 6 2159 6482 2022-04-19T18:39:08Z Dusten04 30 6482 wikitext text/x-wiki iPad Pro 11 Board Only bqr7vip98t1jvpzboq2n9py443926ij File:iPad Pro 11 Display on offreal.jpg 6 2155 6478 2022-04-19T18:24:30Z Dusten04 30 6478 wikitext text/x-wiki iPad Turned on, showing display turned on and off obqm93nya68ezfhtsa0kkmyizu20m5x File:iPad Pro 11 Drained Battery.jpg 6 2156 6479 2022-04-19T18:27:53Z Dusten04 30 6479 wikitext text/x-wiki iPad Pro 11 Drained Battery oet5vnwylg54r2yjrty6f78p1whkubt File:iPad Pro 11 FPC 10 Edited.jpg 6 507 1118 2020-04-23T23:36:44Z Dusten04 30 1118 wikitext text/x-wiki iPad Pro 11 FPC 10 Edited s580rkbvfdqzc1mkzuk9cqo4djan9of File:iPad Pro 11 FPC 11 Edited.jpg 6 508 1119 2020-04-23T23:37:15Z Dusten04 30 1119 wikitext text/x-wiki iPad Pro 11 FPC 11 Edited 791vtwwvk42r5o0mgw03ubhroqxd4h4 File:iPad Pro 11 FPC 12 Edited.jpg 6 509 1120 2020-04-23T23:37:46Z Dusten04 30 1120 wikitext text/x-wiki iPad Pro 11 FPC 12 Edited 76etk38wijybgw9fgx36jgqb5ribwmq File:iPad Pro 11 FPC 13 Edited.jpg 6 510 1121 2020-04-23T23:38:22Z Dusten04 30 1121 wikitext text/x-wiki iPad Pro 11 FPC 13 Edited qtsu6x7qaeuiqafii7jd8p5o5fnnf54 File:iPad Pro 11 FPC 14 Edited.jpg 6 511 1122 2020-04-23T23:38:53Z Dusten04 30 1122 wikitext text/x-wiki iPad Pro 11 FPC 14 Edited ejg0z3b3klira9ad83tyoczemliayjf File:iPad Pro 11 FPC 1 Edited.jpg 6 498 1109 2020-04-23T23:30:40Z Dusten04 30 1109 wikitext text/x-wiki iPad Pro 11 FPC 1 Edited tcf90aam7jpr1c8okkn8nejbfdluwvd File:iPad Pro 11 FPC 2 Edited.jpg 6 499 1110 2020-04-23T23:31:32Z Dusten04 30 1110 wikitext text/x-wiki iPad Pro 11 FPC 2 Edited kdztq88jxxown2u79agqscwn36z95vb File:iPad Pro 11 FPC 3 Edited.jpg 6 500 1111 2020-04-23T23:32:06Z Dusten04 30 1111 wikitext text/x-wiki iPad Pro 11 FPC 3 Edited ewtp3p17bdvsc049i9871wzeup2wzsu File:iPad Pro 11 FPC 4 Edited.jpg 6 501 1112 2020-04-23T23:32:44Z Dusten04 30 1112 wikitext text/x-wiki iPad Pro 11 FPC 4 Edited lyhz5bvmwi8nogrwhrv6py5pj45ftr8 File:iPad Pro 11 FPC 5 Edited.jpg 6 502 1113 2020-04-23T23:33:39Z Dusten04 30 1113 wikitext text/x-wiki iPad Pro 11 FPC 5 Edited trvntgkagnw0gi8w6kxzhb4rmmvpjob File:iPad Pro 11 FPC 6 Edited.jpg 6 503 1114 2020-04-23T23:34:18Z Dusten04 30 1114 wikitext text/x-wiki iPad Pro 11 FPC 6 Edited 9yeh5jm41lnolvhm3npie7kzaty4tw3 File:iPad Pro 11 FPC 7 Edited.jpg 6 504 1115 2020-04-23T23:34:59Z Dusten04 30 1115 wikitext text/x-wiki iPad Pro 11 FPC 7 Edited gb3v5r1pxtxhlc8no51topmwzbodqgg File:iPad Pro 11 FPC 8 Edited.jpg 6 505 1116 2020-04-23T23:35:37Z Dusten04 30 1116 wikitext text/x-wiki iPad Pro 11 FPC 8 Edited hntjapueejzic3gk0xd3yld9yrmt6fx File:iPad Pro 11 FPC 9 Edited.jpg 6 506 1117 2020-04-23T23:36:11Z Dusten04 30 1117 wikitext text/x-wiki iPad Pro 11 FPC 9 Edited 0d7gqsisteaf9dcecatp24ql003p1ok File:iPad Pro 11 Overall View Edited.jpg 6 497 1108 2020-04-23T23:29:42Z Dusten04 30 1108 wikitext text/x-wiki iPad Pro 11 Overall View Edited jhtsfv4odlktg3xfgv0lutfm6pc3ubm File:iPad Pro 12.9 1stG Backlight.jpg 6 462 1048 2020-04-15T00:24:01Z Dusten04 30 1048 wikitext text/x-wiki iPad Pro 12.9 1stG Backlight muqyrchz1m2u7wvp2c3r4mmxoc0zr5m File:iPad Pro 12.9 1st Gen Connector 1.jpg 6 215 628 2020-02-03T23:12:21Z Dusten04 30 628 wikitext text/x-wiki iPad Pro 12.9 1st Gen Connector 1 pnzq8jjgr5c71nnauylv4ix04onlb8e File:iPad Pro 12.9 1st Gen Connector 2.jpg 6 216 629 2020-02-03T23:13:13Z Dusten04 30 629 wikitext text/x-wiki iPad Pro 12.9 1st Gen Connector 2 fe079fx035c502h11f4udi20ndyrvh2 File:iPad Pro 12.9 1st Gen Connector 3.jpg 6 217 630 2020-02-03T23:13:48Z Dusten04 30 630 wikitext text/x-wiki iPad Pro 12.9 1st Gen Connector 3 6xo1w5o9p1k99agzy5zl1awvwq6gojx File:iPad Pro 12.9 1st Gen Connector 4.jpg 6 218 631 2020-02-03T23:14:45Z Dusten04 30 631 wikitext text/x-wiki iPad Pro 12.9 1st Gen Connector 4 f7hibkkyf8vo7fr8zwpr7mn964j5tzf File:iPad Pro 12.9 1st Gen Connector 5.jpg 6 219 632 2020-02-03T23:15:48Z Dusten04 30 632 wikitext text/x-wiki iPad Pro 12.9 1st Gen Connector 5 az5ehpqo48qbec661cqq0x8yxgq9qg7 File:iPad Pro 12.9 1st Gen Connector 6.jpg 6 220 633 2020-02-03T23:16:32Z Dusten04 30 633 wikitext text/x-wiki iPad Pro 12.9 1st Gen Connector 6 jk4i81691wslnsd1yhx8rw0p2ab9nya File:iPad Pro 12.9 1st Gen Connector 7.jpg 6 221 634 2020-02-03T23:17:13Z Dusten04 30 634 wikitext text/x-wiki iPad Pro 12.9 1st Gen Connector 7 qfig1x11460lo8j6ssn4nafd9cqcl4n File:iPad Pro 12.9 1st Gen Connector 8.jpg 6 222 635 2020-02-03T23:17:51Z Dusten04 30 635 wikitext text/x-wiki iPad Pro 12.9 1st Gen Connector 8 sj470lzmozfu1guvfcuv3vmjqixaop0 File:iPad Pro 12.9 1st Gen Overall 1.jpg 6 213 626 2020-02-03T23:10:46Z Dusten04 30 626 wikitext text/x-wiki iPad Pro 12.9 1st Gen Overall 1 l0voe8hxuc67hwvy6e50x8ky6fgprby File:iPad Pro 12.9 1st Gen Overall 2.jpg 6 214 627 2020-02-03T23:11:40Z Dusten04 30 627 wikitext text/x-wiki iPad Pro 12.9 1st Gen Overall 2 liz6i3qp6f4t8k3cuh9wfsn30jplj9f File:iPad Pro 12.9 2nd Gen Connector 1 Edited.jpg 6 259 690 2020-02-12T15:20:30Z Dusten04 30 690 wikitext text/x-wiki iPad Pro 12.9 2nd Gen Connector 1 Edited 2tmcwpc05eeuq2p3bejawq8m7hqt9ik File:iPad Pro 12.9 2nd Gen Connector 2 .jpg 6 260 691 2020-02-12T15:25:25Z Dusten04 30 691 wikitext text/x-wiki iPad Pro 12.9 2nd Gen Connector 2 915p27wehtpmz8ldnwsh7gme1cas56t File:iPad Pro 12.9 3rd Gen Connector 3.jpg 6 169 479 2020-02-01T03:13:26Z Dusten04 30 479 wikitext text/x-wiki iPad Pro 12.9 3rd Gen Connector 3 hpew1og2xfr6upsb9pczjfe9n2eyhlh File:iPad Pro 12.9 3rd Gen Connector 4.jpg 6 170 480 2020-02-01T03:14:06Z Dusten04 30 480 wikitext text/x-wiki iPad Pro 12.9 3rd Gen Connector 4 5ue01uj1ihql5xcydbc57yw7mycb9bv File:iPad Pro 1293 Connector 1 Water.jpg 6 166 476 2020-02-01T03:08:11Z Dusten04 30 476 wikitext text/x-wiki iPad Pro 12.9 3rd Gen Connector 1 svddqrdklm63iry6a8itige5zbgxi8r File:iPad Pro 1293 Connector 2 Water-2.jpg 6 168 478 2020-02-01T03:12:50Z Dusten04 30 478 wikitext text/x-wiki iPad Pro 12.9 3rd Gen Connector 2 1ljr8u1p3prgr43es5csqcw4yvxgg8k File:iPad Pro 1293 Overall.jpg 6 165 475 2020-02-01T03:06:38Z Dusten04 30 475 wikitext text/x-wiki iPad Pro 12.9 3rd Gen Overall View njau2tlauelhho7cu3g0htsqsvxd76k File:iPad Pro 129 1stG Tristar.jpg 6 463 1049 2020-04-15T00:24:46Z Dusten04 30 1049 wikitext text/x-wiki iPad Pro 129 1stG Tristar 3ikhc5e4k6id7q5o6ufn7612ksxridz File:iPad Pro 129 4th Gen C10 Edited.jpg 6 1850 5455 2021-01-06T04:48:07Z Dusten04 30 5455 wikitext text/x-wiki iPad Pro 129 4th Gen C10 Edited drd41yfg5fwkxhngxmw2cprujdzg1vo File:iPad Pro 129 4th Gen C11 Edited.jpg 6 1851 5456 2021-01-06T04:48:31Z Dusten04 30 5456 wikitext text/x-wiki iPad Pro 129 4th Gen C11 Edited fwydqjyxqj4oz0odlktakn6noj110g0 File:iPad Pro 129 4th Gen C12 Edited.jpg 6 1852 5457 2021-01-06T04:48:54Z Dusten04 30 5457 wikitext text/x-wiki iPad Pro 129 4th Gen C12 Edited 6um8hw1wjh20o7hb1phhx8gp996k2sh File:iPad Pro 129 4th Gen C13 Edited.jpg 6 1853 5458 2021-01-06T04:49:18Z Dusten04 30 5458 wikitext text/x-wiki iPad Pro 129 4th Gen C13 Edited cqh4ntvr8jm4mxalrxy4xr5i4w7a5z8 File:iPad Pro 129 4th Gen C14 Edited.jpg 6 1854 5459 2021-01-06T04:49:44Z Dusten04 30 5459 wikitext text/x-wiki iPad Pro 129 4th Gen C14 Edited o1vergewt1xslat90oiqjjt5yoky7jr File:iPad Pro 129 4th Gen C15 Edited.jpg 6 1855 5460 2021-01-06T04:50:20Z Dusten04 30 5460 wikitext text/x-wiki iPad Pro 129 4th Gen C15 Edited 5sta54wt06pf15jc9z0s6egxn9sjvhx File:iPad Pro 129 4th Gen C16 Edited.jpg 6 1856 5461 2021-01-06T04:50:46Z Dusten04 30 5461 wikitext text/x-wiki iPad Pro 129 4th Gen C16 Edited 4nvr9isx208pkv4xi9zx8hlv7r8opdl File:iPad Pro 129 4th Gen C17 Edited.jpg 6 1857 5462 2021-01-06T04:51:09Z Dusten04 30 5462 wikitext text/x-wiki iPad Pro 129 4th Gen C17 Edited rem2bft8ycgauk6hspbve0wo5qshu4k File:iPad Pro 129 4th Gen C18 Edited.jpg 6 1858 5463 2021-01-06T04:51:33Z Dusten04 30 5463 wikitext text/x-wiki iPad Pro 129 4th Gen C18 Edited 4z1yyx9gfaywqmsmk7r4tes0iip58er File:iPad Pro 129 4th Gen C1 Edited.jpg 6 1841 5446 2021-01-06T04:42:54Z Dusten04 30 5446 wikitext text/x-wiki iPad Pro 129 4th Gen C1 Edited b08z8g8374dshed1a6thscoxuca9umo File:iPad Pro 129 4th Gen C2 Edited.jpg 6 1842 5447 2021-01-06T04:43:16Z Dusten04 30 5447 wikitext text/x-wiki iPad Pro 129 4th Gen C2 Edited a4wcfdvpwkez7qmv1aahexdk5p14qo4 File:iPad Pro 129 4th Gen C3 Edited.jpg 6 1843 5448 2021-01-06T04:43:48Z Dusten04 30 5448 wikitext text/x-wiki iPad Pro 129 4th Gen C3 Edited irf53swqhkiabjigb0qqqbzceaf86dn File:iPad Pro 129 4th Gen C4 Edited.jpg 6 1844 5449 2021-01-06T04:44:11Z Dusten04 30 5449 wikitext text/x-wiki iPad Pro 129 4th Gen C4 Edited 1wm1q7hpn44rb0rjpsv3mpc9am54gg3 File:iPad Pro 129 4th Gen C5 Edited.jpg 6 1845 5450 2021-01-06T04:44:35Z Dusten04 30 5450 wikitext text/x-wiki iPad Pro 129 4th Gen C5 Edited scd3jdvp76l1zc9bnjiax2x2kv11a0x File:iPad Pro 129 4th Gen C6 Edited.jpg 6 1846 5451 2021-01-06T04:45:57Z Dusten04 30 5451 wikitext text/x-wiki iPad Pro 129 4th Gen C6 Edited tap4ff4gicor7mml8ddgwo2lytaw70n File:iPad Pro 129 4th Gen C7 Edited.jpg 6 1847 5452 2021-01-06T04:46:24Z Dusten04 30 5452 wikitext text/x-wiki iPad Pro 129 4th Gen C7 Edited i3k6l6wmzg07xuqqx1xfctjlcj66b0w File:iPad Pro 129 4th Gen C8 Edited.jpg 6 1848 5453 2021-01-06T04:46:47Z Dusten04 30 5453 wikitext text/x-wiki iPad Pro 129 4th Gen C8 Edited 2kgyhmtsc4sg0ap6fx6pam1o48fk1ix File:iPad Pro 129 4th Gen C9 Edited.jpg 6 1849 5454 2021-01-06T04:47:23Z Dusten04 30 5454 wikitext text/x-wiki iPad Pro 129 4th Gen C9 Edited sgcyab6oerixwthh3gkwdptemqvbepl File:iPad Pro 129 4th Gen Charging Port Edited.jpg 6 1840 5445 2021-01-06T04:42:25Z Dusten04 30 5445 wikitext text/x-wiki iPad Pro 129 4th Gen Charging Port Edited trijlf10x3n9855pete2n5mesv4hr0m File:iPad Pro 129 4th Overall View Edited.jpg 6 1839 5444 2021-01-06T04:41:56Z Dusten04 30 5444 wikitext text/x-wiki iPad Pro 129 4th Overall View Edited makjgargwo587wsvu6k6trw09ebr8i0 File:iPad WiFi Chip List.png 6 591 1234 2020-05-10T20:16:02Z PRT Group 137 1234 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 File:iPad mini 5 Connector 1 Edited.jpg 6 1828 5427 2021-01-05T02:25:19Z Dusten04 30 5427 wikitext text/x-wiki iPad mini 5 Connector 1 Edited 8wo5fdkkqhbcktgq9460jdgyaakqulr File:iPhone 11 Connector 1.jpg 6 173 484 2020-02-01T03:20:24Z Dusten04 30 484 wikitext text/x-wiki iPhone 11 Connector 1 lck2jp1k1ecz8ebtjkmm4njl5uvp47m File:iPhone 11 Connector 10.jpg 6 183 507 505 2020-02-01T06:41:09Z Chrisb 1 Chrisb moved page [[File:iPhone 11 Connector 10 REAL.jpg]] to [[File:iPhone 11 Connector 10.jpg]] 495 wikitext text/x-wiki iPhone 11 Connector 10 REAL kllc70skptqoxor792x8mjhzw3wrd3g File:iPhone 11 Connector 10 REAL.jpg 6 188 508 2020-02-01T06:41:09Z Chrisb 1 Chrisb moved page [[File:iPhone 11 Connector 10 REAL.jpg]] to [[File:iPhone 11 Connector 10.jpg]] 508 wikitext text/x-wiki #REDIRECT [[File:iPhone 11 Connector 10.jpg]] hzucn7ytkxxbpdmff59nq0hr0z3uzer File:iPhone 11 Connector 11.jpg 6 182 506 494 2020-02-01T06:40:53Z Chrisb 1 Chrisb moved page [[File:iPhone 11 Connector 10.jpg]] to [[File:iPhone 11 Connector 11.jpg]] without leaving a redirect 494 wikitext text/x-wiki iPhone 11 Connector 10 2qrjh6vtuzl1l81g372jcciydeu9eyd File:iPhone 11 Connector 12.jpg 6 184 496 2020-02-01T03:29:12Z Dusten04 30 496 wikitext text/x-wiki iPhone 11 Connector 12 78vmsgyaso2e4ox43af43ycfn80ho2f File:iPhone 11 Connector 13.jpg 6 185 497 2020-02-01T03:29:59Z Dusten04 30 497 wikitext text/x-wiki iPhone 11 Connector 13 aoypztn5voxa8fi72q4ur1mlva9xoz8 File:iPhone 11 Connector 14.jpg 6 186 498 2020-02-01T03:30:40Z Dusten04 30 498 wikitext text/x-wiki iPhone 11 Connector 14 lg4e8zlarepg8wqlu13yxwvy4sur70f File:iPhone 11 Connector 15.jpg 6 187 499 2020-02-01T03:31:22Z Dusten04 30 499 wikitext text/x-wiki iPhone 11 Connector 15 kc9d0qlf55i2nqw10famd1rc2kloujr File:iPhone 11 Connector 2.jpg 6 174 485 2020-02-01T03:21:09Z Dusten04 30 485 wikitext text/x-wiki iPhone 11 Connector 2 ph9zhgrdfobigbx9l23e3wjt8f72h7p File:iPhone 11 Connector 3.jpg 6 175 486 2020-02-01T03:21:47Z Dusten04 30 486 wikitext text/x-wiki iPhone 11 Connector 3 j9029p36umac13vyzi8869fso34fsfb File:iPhone 11 Connector 4.jpg 6 176 488 2020-02-01T03:22:35Z Dusten04 30 488 wikitext text/x-wiki iPhone 11 Connector 4 7pr3x2fal85k0k8wlz5gyjyfeprm44x File:iPhone 11 Connector 5.jpg 6 177 489 2020-02-01T03:23:24Z Dusten04 30 489 wikitext text/x-wiki iPhone 11 Connector 5 sm7zx4p99bjz1ag4qlg6jjid8zm8ofr File:iPhone 11 Connector 6.jpg 6 178 490 2020-02-01T03:23:55Z Dusten04 30 490 wikitext text/x-wiki iPhone 11 Connector 6 s20p4sqhtgjuad01j1zrj3c9oo6p5gn File:iPhone 11 Connector 7.jpg 6 179 491 2020-02-01T03:24:35Z Dusten04 30 491 wikitext text/x-wiki iPhone 11 Connector 7 atelhp0sag0hf8y44sajfz2srcen7ju File:iPhone 11 Connector 8.jpg 6 180 492 2020-02-01T03:25:23Z Dusten04 30 492 wikitext text/x-wiki iPhone 11 Connector 8 o7g7iqfuj7w1axjhzmoms32sb6wg6v6 File:iPhone 11 Connector 9.jpg 6 181 493 2020-02-01T03:25:55Z Dusten04 30 493 wikitext text/x-wiki iPhone 11 Connector 9 hw151l1mzfn793lgw1qu24pd6pzbg2f File:iPhone 11 Overall View 1.jpg 6 171 482 2020-02-01T03:17:41Z Dusten04 30 482 wikitext text/x-wiki iPhone 11 Overall View 1 eir9wcj2vnn0v0ap6in0oq8g5zdpxgi File:iPhone 11 Overall View 2.jpg 6 172 483 2020-02-01T03:18:46Z Dusten04 30 483 wikitext text/x-wiki iPhone 11 Overall View 2 trc7k9v7w4dprahukyaoes69xv0tt1k File:iPhone 11 Pro FPC 10 Final.jpg 6 320 788 2020-03-04T22:35:21Z Dusten04 30 788 wikitext text/x-wiki iPhone 11 Pro FPC 10 Final 38fy6z2aaivgnq1pahpsk9iqfg7oa7h File:iPhone 11 Pro FPC 11 Final.jpg 6 321 789 2020-03-04T22:36:05Z Dusten04 30 789 wikitext text/x-wiki iPhone 11 Pro FPC 11 Final jffgd4tl0aar53555l2hj58qqmw6ihs File:iPhone 11 Pro FPC 12 Final.jpg 6 322 790 2020-03-04T22:36:38Z Dusten04 30 790 wikitext text/x-wiki iPhone 11 Pro FPC 12 Final fm7132c4n15x6ged0tc054dvyj1tgpx File:iPhone 11 Pro FPC 13 Final.jpg 6 323 791 2020-03-04T22:37:04Z Dusten04 30 791 wikitext text/x-wiki iPhone 11 Pro FPC 13 Final o5sfu1clb00mcfu1wedw9wq5cq8t6s6 File:iPhone 11 Pro FPC 14 Final.jpg 6 324 792 2020-03-04T22:37:32Z Dusten04 30 792 wikitext text/x-wiki iPhone 11 Pro FPC 14 Final cd5xcct647ln9h1rqgn8arq0miaid3q File:iPhone 11 Pro FPC 1 Final.jpg 6 311 779 2020-03-04T22:31:03Z Dusten04 30 779 wikitext text/x-wiki iPhone 11 Pro FPC 1 Final qg9x5pkowlmwwvgyuoyvhmdn3jwbqfo File:iPhone 11 Pro FPC 2 Final.jpg 6 312 780 2020-03-04T22:31:33Z Dusten04 30 780 wikitext text/x-wiki iPhone 11 Pro FPC 2 Final gnd5skh6n2eimlspgkgn0c4m8skipxp File:iPhone 11 Pro FPC 3 Final.jpg 6 313 781 2020-03-04T22:32:04Z Dusten04 30 781 wikitext text/x-wiki iPhone 11 Pro FPC 3 Final 1pu544ulq06ly7s6qcl6b86bu8wp3nw File:iPhone 11 Pro FPC 4 Final.jpg 6 314 782 2020-03-04T22:32:32Z Dusten04 30 782 wikitext text/x-wiki iPhone 11 Pro FPC 4 Final d2is2abfg5owsakeon6y4s0bnfvhfre File:iPhone 11 Pro FPC 5 Final.jpg 6 315 783 2020-03-04T22:33:05Z Dusten04 30 783 wikitext text/x-wiki iPhone 11 Pro FPC 5 Final 04x2tgcbfsc1upatf0uzi032nhkbjho File:iPhone 11 Pro FPC 6 Final.jpg 6 316 784 2020-03-04T22:33:34Z Dusten04 30 784 wikitext text/x-wiki iPhone 11 Pro FPC 6 Final i4tcnmfn177stu3ybmpqar8alkkk0fo File:iPhone 11 Pro FPC 7 Final.jpg 6 317 785 2020-03-04T22:34:00Z Dusten04 30 785 wikitext text/x-wiki iPhone 11 Pro FPC 7 Final 110aigqvmugqvxvv484b26p0urbuydo File:iPhone 11 Pro FPC 8 Final.jpg 6 318 786 2020-03-04T22:34:26Z Dusten04 30 786 wikitext text/x-wiki iPhone 11 Pro FPC 8 Final b1j976to5j5kg7zn3oxqop5inhfejrp File:iPhone 11 Pro FPC 9 Final.jpg 6 319 787 2020-03-04T22:34:54Z Dusten04 30 787 wikitext text/x-wiki iPhone 11 Pro FPC 9 Final nbykfuiv4wyuze5vn1t04vn392znyps File:iPhone 11 Pro Overall 1 Final.jpg 6 309 777 2020-03-04T22:30:01Z Dusten04 30 777 wikitext text/x-wiki iPhone 11 Pro Overall 1 Final edke0eq3bslinhjaenwhhyldf7pcqjy File:iPhone 11 Pro Overall 2 Final.jpg 6 310 778 2020-03-04T22:30:36Z Dusten04 30 778 wikitext text/x-wiki iPhone 11 Pro Overall 2 Final rq2b8ukfrtig3w6ebkm0l5ra0o8cb3s File:iPhone 11 Smart Case 01.jpg 6 272 712 2020-02-18T21:46:17Z Xorxfon 8 User created page with UploadWizard 712 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=Back of the case.}} |date=2020-02-18 16:56:43 |source={{own}} |author=[[User:Xorxfon|Xorxfon]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} [[Category:Smart Case]] 2n5l7xbgcnf1povilamzqaoaxl3kd8d File:iPhone 11 Smart Case 02.jpg 6 274 714 2020-02-18T21:46:17Z Xorxfon 8 User created page with UploadWizard 714 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=Under the felt inside the case}} |date=2020-02-18 16:57:35 |source={{own}} |author=[[User:Xorxfon|Xorxfon]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} [[Category:Smart Case]] r2zptokoq95o4ggoulvolmf7kd1xh9e File:iPhone 11 Smart Case 03.jpg 6 273 713 2020-02-18T21:46:17Z Xorxfon 8 User created page with UploadWizard 713 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=Without the cover}} |date=2020-02-18 16:57:26 |source={{own}} |author=[[User:Xorxfon|Xorxfon]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} [[Category:Smart Case]] a40ob6ueeun6wtpgba2yg1385az6ypn File:iPhone 11 Smart Case 04.jpg 6 275 715 2020-02-18T21:46:19Z Xorxfon 8 User created page with UploadWizard 715 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=Close up of the battery compartment}} |date=2020-02-18 16:58:25 |source={{own}} |author=[[User:Xorxfon|Xorxfon]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} [[Category:Smart Case]] 3y7pnuuaawr845xz1tjngi2w0gszgk3 File:iPhone 11 Smart Case 05.jpg 6 276 716 2020-02-18T21:46:19Z Xorxfon 8 User created page with UploadWizard 716 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=Close up of the battery charge/discharge circuit.}} |date=2020-02-18 16:59:01 |source={{own}} |author=[[User:Xorxfon|Xorxfon]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} [[Category:Smart Case]] og33bn20048ijn2kv5btmnmg5kf9xe7 File:iPhone 11 Smart Case 06.jpg 6 278 718 2020-02-18T22:20:51Z Xorxfon 8 User created page with UploadWizard 718 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=Top screws out}} |date=2020-02-18 17:20:47 |source={{own}} |author=[[User:Xorxfon|Xorxfon]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} ialy8khvd0xsqqroijkf3yue3i3bejo File:iPhone 11 Smart Case 07.jpg 6 277 717 2020-02-18T22:20:51Z Xorxfon 8 User created page with UploadWizard 717 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=Cables unplugged}} |date=2020-02-18 17:21:25 |source={{own}} |author=[[User:Xorxfon|Xorxfon]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} hyu648l601jvxstxw6u54rdza9f2oid File:iPhone 11 Smart Case 08.jpg 6 279 719 2020-02-18T22:20:51Z Xorxfon 8 User created page with UploadWizard 719 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=Cables unplugged 2nd angle}} |date=2020-02-18 17:22:01 |source={{own}} |author=[[User:Xorxfon|Xorxfon]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} enoq51f0zjk3okal8rmvooyic9l2txd File:iPhone 11 Smart Case 09.jpg 6 280 720 2020-02-18T22:20:52Z Xorxfon 8 User created page with UploadWizard 720 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=Charge/Discharge Circuit 01}} |date=2020-02-18 17:24:03 |source={{own}} |author=[[User:Xorxfon|Xorxfon]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} pfsj7y7p70terx2mg9fbvua0th5yrtx File:iPhone 11 Smart Case 10.jpg 6 282 722 2020-02-18T22:20:52Z Xorxfon 8 User created page with UploadWizard 722 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=Charge/Discharge Circuit 02}} |date=2020-02-18 17:24:26 |source={{own}} |author=[[User:Xorxfon|Xorxfon]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} era8x43pakqz1vfmqw792xrecharz30 File:iPhone 11 Smart Case 11.jpg 6 281 721 2020-02-18T22:20:52Z Xorxfon 8 User created page with UploadWizard 721 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=Male lightning connector front}} |date=2020-02-18 17:24:37 |source={{own}} |author=[[User:Xorxfon|Xorxfon]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} 1nw5gyfiejbjedbvcss60mbnwddc875 File:iPhone 11 Smart Case 12.jpg 6 283 723 2020-02-18T22:20:53Z Xorxfon 8 User created page with UploadWizard 723 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=Male lightning connector back}} |date=2020-02-18 17:24:50 |source={{own}} |author=[[User:Xorxfon|Xorxfon]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} pyt5gpslnloujaqfxbxywlmzh1mqmzn File:iPhone 11 Smart Case 13.jpg 6 285 725 2020-02-18T22:20:53Z Xorxfon 8 User created page with UploadWizard 725 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=Charge/Discharge Circuit 03}} |date=2020-02-18 17:35:40 |source={{own}} |author=[[User:Xorxfon|Xorxfon]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} 71w89l7pw82pp3ps12181p42sxsk1tw File:iPhone 11 Smart Case 14.jpg 6 284 724 2020-02-18T22:20:53Z Xorxfon 8 User created page with UploadWizard 724 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=Charge/Discharge Circuit 04}} |date=2020-02-18 17:35:25 |source={{own}} |author=[[User:Xorxfon|Xorxfon]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} dvz0uf2z9o0p746jhepzktfdm5l6wi7 File:iPhone 11 Smart Case 15.jpg 6 286 726 2020-02-18T22:20:54Z Xorxfon 8 User created page with UploadWizard 726 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=Screw pattern}} |date=2020-02-18 17:25:45 |source={{own}} |author=[[User:Xorxfon|Xorxfon]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} feygvp016bdgb1t4zvzwzi9asu6fdu4 File:iPhone 11 Smart Case 16.png 6 288 732 2020-02-18T23:27:29Z Chrisb 1 User created page with UploadWizard 732 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=iPhone 11 Smart Case 16}} |date=2020-02-18 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} g49m8yhkfrefwqepc3phuidmpu03dyz File:iPhone 11 Smart Case 17.png 6 290 734 2020-02-18T23:27:29Z Chrisb 1 User created page with UploadWizard 734 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=iPhone 11 Smart Case 16}} |date=2020-02-18 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} g49m8yhkfrefwqepc3phuidmpu03dyz File:iPhone 11 Smart Case 18.png 6 289 733 2020-02-18T23:27:29Z Chrisb 1 User created page with UploadWizard 733 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=iPhone 11 Smart Case 16}} |date=2020-02-18 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} g49m8yhkfrefwqepc3phuidmpu03dyz File:iPhone 11 Smart Case 19.png 6 291 735 2020-02-18T23:27:30Z Chrisb 1 User created page with UploadWizard 735 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=iPhone 11 Smart Case 16}} |date=2020-02-18 |source={{own}} |author=[[User:Chrisb|Chrisb]] |permission= |other versions= }} =={{int:license-header}}== {{self|cc-by-sa-4.0}} g49m8yhkfrefwqepc3phuidmpu03dyz File:iPhone 12 Pro FPC 10.png 6 1719 5097 2020-10-23T15:04:00Z Dusten04 30 5097 wikitext text/x-wiki iPhone 12 Pro FPC 10 a97mgscmudrc523j365tq103dwym40h File:iPhone 12 Pro FPC 11.png 6 1720 5098 2020-10-23T15:04:32Z Dusten04 30 5098 wikitext text/x-wiki iPhone 12 Pro FPC 11 krkahq416e2e1tdwi2s2blzig5vqtq8 File:iPhone 12 Pro FPC 12.png 6 1721 5099 2020-10-23T15:05:01Z Dusten04 30 5099 wikitext text/x-wiki iPhone 12 Pro FPC 12 k6d857ruk8c6qnzwxqgu8rxd7v28alq File:iPhone 12 Pro FPC 13 and 14.png 6 1722 5100 2020-10-23T15:06:36Z Dusten04 30 5100 wikitext text/x-wiki iPhone 12 Pro FPC 13 and 14 89lfj4lfxa5xg1it4y09hvw75oknv1g File:iPhone 12 Pro FPC 15 and 16.png 6 1723 5101 2020-10-23T15:07:35Z Dusten04 30 5101 wikitext text/x-wiki iPhone 12 Pro FPC 15 and 16 5k6bz8aukwdxry8yv86epkmsljtnb07 File:iPhone 12 Pro FPC 1 and 2.png 6 1715 5093 2020-10-23T15:01:32Z Dusten04 30 5093 wikitext text/x-wiki iPhone 12 Pro FPC 1 and 2 t1ytc3knt32snfr5201l90svf2w5lhg File:iPhone 12 Pro FPC 3, 4 and 5.png 6 1716 5094 2020-10-23T15:02:19Z Dusten04 30 5094 wikitext text/x-wiki iPhone 12 Pro FPC 3, 4 and 5 41tvldwx4g3j34jw2olzq8by1e0d09c File:iPhone 12 Pro FPC 6, 7 and 8.png 6 1717 5095 2020-10-23T15:02:56Z Dusten04 30 5095 wikitext text/x-wiki iPhone 12 Pro FPC 6, 7 and 8 5s0rseay7cwgm5mueq1k0fmtwf2bnv2 File:iPhone 12 Pro FPC 9.png 6 1718 5096 2020-10-23T15:03:25Z Dusten04 30 5096 wikitext text/x-wiki iPhone 12 Pro FPC 9 h7dg6p4ldg47t30q0lsbrnwuxj6jg4w File:iPhone 12 Pro Max Charging Port.webp 6 2013 5960 2021-07-28T20:06:58Z Dusten04 30 5960 wikitext text/x-wiki iPhone 12 Pro Max Charging Port mrvo6p8ainkcezk98iy4lgk5jrek8vo File:iPhone 14 Charging Port.jpg 6 2187 6615 2022-09-16T22:57:52Z Dusten04 30 6615 wikitext text/x-wiki iPhone 14 Charging Port d4gbtjezsxd9b4shsrsx07i2zgexefa File:iPhone 14 Pro Max Battery Connector.jpg 6 2186 6614 2022-09-16T22:56:06Z Dusten04 30 6614 wikitext text/x-wiki iPhone 14 Pro Max Battery Connector fwg4lz3xnodgxpf551phalx4h6lx8n6 File:iPhone 14 Pro Max Display Connector.jpg 6 2188 6616 2022-09-16T22:58:34Z Dusten04 30 6616 wikitext text/x-wiki iPhone 14 Pro Max Display Connector 7yaw07vrh9uykw19hrzrke84cgo9tne File:iPhone 14 Pro Max Power Button Connector.jpg 6 2189 6617 2022-09-16T22:59:14Z Dusten04 30 6617 wikitext text/x-wiki iPhone 14 Pro Max Power Button Connector f7slpp4bicmztm82rzsunlrm1pwikrs File:iPhone 6 Click traces.jpg 6 1860 5466 2021-01-08T11:04:07Z Satyricon 21 5466 wikitext text/x-wiki iPhone 6 Click traces (via GSM hosting) ncb3fw56t4whxzjwti0e5jneu6r64ar File:iPhone 6 charge IC(U1401) diode readings.jpg 6 1957 5816 2021-05-14T21:59:37Z Tim 169 5816 wikitext text/x-wiki iPhone 6 charge IC(U1401) diode readings 4i8lssy0bvuc6ful7ffrr5gz4eejw2m File:iPhone 6s-6sp click wiring.jpg 6 1936 5743 2021-04-16T16:35:07Z Joesipaq 20 5743 wikitext text/x-wiki iPhone 6s / 6s Plus Click traces dwu5rnr5d4jh916g6glsc7tu1c32tbw File:iPhone 6s Click traces.jpg 6 1859 5465 2021-01-08T11:02:25Z Satyricon 21 5465 wikitext text/x-wiki iPhone 6s Click traces tg7398zd5szihr8vb73jqbjwyfvg6r1 File:iPhone 7 Touch ID Diagram.jpeg 6 537 1167 2020-05-04T15:33:48Z Chrisb 1 1167 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 File:iPhone 8 vs SE 2020 1.jpg 6 513 1126 2020-04-26T15:03:05Z Chrisb 1 1126 wikitext text/x-wiki iPhone 8 vs iPhone SE (2020) open comparison snruo2sdr5j7n75rcu883yms21i1hpa File:iPhone 8 vs SE 2020 LB Back.jpg 6 514 1127 2020-04-26T15:04:39Z Chrisb 1 1127 wikitext text/x-wiki iPhones 8 vs iPhone SE 2020 back of logic board comparison qk8e2ezrqzndzq5vvvkz276di4837ly File:iPhone 8 vs SE 2020 LB Front.jpg 6 515 1128 2020-04-26T15:05:53Z Chrisb 1 1128 wikitext text/x-wiki iPhones 8 vs iPhone SE 2020 front of logic board comparison c8azca5frxovgkn96i3yit5u0kbwoob File:iPhone SE Battery Edited.jpg 6 518 1138 2020-04-29T01:13:32Z Dusten04 30 1138 wikitext text/x-wiki iPhone SE Battery Edited mz52t4r4aolsiu2suhw0vzgnricc2nq File:iPhone SE Cellular Antenna Edited.jpg 6 519 1139 2020-04-29T01:14:07Z Dusten04 30 1139 wikitext text/x-wiki iPhone SE Cellular Antenna Edited 27ruk57f435j3p06ky88mn5eak1x9es File:iPhone SE Charging Port Edited.jpg 6 520 1140 2020-04-29T01:14:48Z Dusten04 30 1140 wikitext text/x-wiki iPhone SE Charging Port Edited 0hk43ywm0x4qbxd4vvydbeo1o1432gu File:iPhone SE Front Camera Edited.jpg 6 521 1141 2020-04-29T01:15:27Z Dusten04 30 1141 wikitext text/x-wiki iPhone SE Front Camera Edited dh0fkt8fyt3vgo7taoiveo3ln9bjqg1 File:iPhone SE Home Button Edited.jpg 6 522 1142 2020-04-29T01:16:03Z Dusten04 30 1142 wikitext text/x-wiki iPhone SE Home Button Edited t57a7vl2kk121rtspeji1qj6nr8zo73 File:iPhone SE Overall View Edited.jpg 6 517 1137 2020-04-29T01:12:48Z Dusten04 30 1137 wikitext text/x-wiki iPhone SE Overall View Edited i5b892n69qqb4akjkvp1dgul86mobcj File:iPhone SE Power Button Edited.jpg 6 523 1143 2020-04-29T01:17:01Z Dusten04 30 1143 wikitext text/x-wiki iPhone SE Power Button Edited 0clqko0wza4blnxafxip72ts0f7n1rh File:iPhone SE Rear Camera Edited.jpg 6 524 1144 2020-04-29T01:17:47Z Dusten04 30 1144 wikitext text/x-wiki iPhone SE Rear Camera Edited cs8ad5wqq04baix0nexaptpdaszz2ks File:iPhone SE Wifi Edited.jpg 6 525 1145 2020-04-29T01:18:23Z Dusten04 30 1145 wikitext text/x-wiki iPhone SE Wifi Edited 1se7ypqy2k3sr2gpqhc2qgvr7di6y9b File:iPhone SE Wireless Edited.jpg 6 526 1146 2020-04-29T01:19:07Z Dusten04 30 1146 wikitext text/x-wiki iPhone SE Wireless Edited r5r202su5qy5sn58jbghrq3n8lrqvq3 File:iPhone X BBCPU.png 6 1385 3025 2020-10-06T14:00:31Z Dusten04 30 3025 wikitext text/x-wiki iPhone X BBCPU h0swwrqhncw8bofqksq5hiimgionbj9 File:iPhone X BBPMU.png 6 1367 3007 2020-10-06T13:39:37Z Dusten04 30 3007 wikitext text/x-wiki iPhone X BBPMU ghd7qi19wllsil13to7zjdqvm04827m File:iPhone X CPU diode readings.jpg 6 1958 5817 2021-05-14T22:38:04Z Tim 169 5817 wikitext text/x-wiki iPhone X CPU diode readings bvtsgna3w6gih3lglr8past2xv7g7gw File:iPhone X Dot projector & Infrared Camera diode readings.jpg 6 1959 5818 2021-05-14T22:39:55Z Tim 169 5818 wikitext text/x-wiki iPhone X Dot projector & Infrared Camera diode readings aqk2k10sq1jgirtxnfncspnt5psxm27 File:iPhone X ET.png 6 1369 3009 2020-10-06T13:41:35Z Dusten04 30 3009 wikitext text/x-wiki iPhone X ET eavw0p72kukunhnrhx539u9qf7ch6dv File:iPhone X GLNA.png 6 1370 3010 2020-10-06T13:42:22Z Dusten04 30 3010 wikitext text/x-wiki iPhone X GLNA dcjca2aoewcgeq2ergukczxdkx2poe1 File:iPhone X GNSS.png 6 1371 3011 2020-10-06T13:43:44Z Dusten04 30 3011 wikitext text/x-wiki iPhone X GNSS a7sl62bwx6rnzuf83adft78auy257sd File:iPhone X GPLAT.png 6 1372 3012 2020-10-06T13:44:35Z Dusten04 30 3012 wikitext text/x-wiki iPhone X GPLAT 14tlqvxx2h8wsyf9ik6n13a4uhejiep File:iPhone X GPOUAT.png 6 1373 3013 2020-10-06T13:45:32Z Dusten04 30 3013 wikitext text/x-wiki iPhone X GPOUAT q2m65qli7v23evnvasoesh7vci1ng0r File:iPhone X GSMPA.png 6 1374 3014 2020-10-06T13:46:07Z Dusten04 30 3014 wikitext text/x-wiki iPhone X GSMPA czde8ds8la0qyjf9zf5xi9cd10see6f File:iPhone X Intel DSM.png 6 1368 3008 2020-10-06T13:40:39Z Dusten04 30 3008 wikitext text/x-wiki iPhone X Intel DSM nzbc8c9u574ypeb2dghu31rr2wxr32h File:iPhone X LATCP.png 6 1375 3015 2020-10-06T13:46:45Z Dusten04 30 3015 wikitext text/x-wiki iPhone X LATCP t602ayuk8eojdkdv5rc17whq8t02n2l File:iPhone X LBPA.png 6 1377 3017 2020-10-06T13:49:35Z Dusten04 30 3017 wikitext text/x-wiki iPhone X LBPA pbzywsl9lmoqps8xaz4lyaftfbnjoyp File:iPhone X LPLN.png 6 1376 3016 2020-10-06T13:49:05Z Dusten04 30 3016 wikitext text/x-wiki iPhone X LPLN e08qi0cn6zas7dwhas4m0stue1comkw File:iPhone X MHBLN.png 6 1378 3018 2020-10-06T13:51:38Z Dusten04 30 3018 wikitext text/x-wiki iPhone X MHBLN 3o2ale7r1qmo8cvldkmwhczsn5ohnao File:iPhone X MHPA.png 6 1379 3019 2020-10-06T13:56:27Z Dusten04 30 3019 wikitext text/x-wiki iPhone X MHPA r50poumfv841uijaamiel1hc6dxvsdg File:iPhone X NAND.png 6 1386 3026 2020-10-06T14:01:58Z Dusten04 30 3026 wikitext text/x-wiki iPhone X NAND q44ugicj15o83ywb6jxt1nzipvuv5r9 File:iPhone X NFC.png 6 1381 3021 2020-10-06T13:57:36Z Dusten04 30 3021 wikitext text/x-wiki iPhone X NFC kvsyks399ljdv0kd8srbyz6wzfzuvg5 File:iPhone X NFC IC diode readings.jpg 6 1970 5830 2021-05-14T23:42:38Z Tim 169 Uploaded a work by GLONWYMAN from G-LON with UploadWizard 5830 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=iPhone X NFC IC and sandwich diode mode readings}} |date=2021-05-14 |source=G-LON |author=GLONWYMAN |permission= |other versions= }} =={{int:license-header}}== {{subst:uwl}} s7lixyben2x55pl1kzc0v7u23ryhll3 File:iPhone X PMIC.png 6 1387 3027 2020-10-06T14:03:09Z Dusten04 30 3027 wikitext text/x-wiki iPhone X PMIC ncwdwapoyvu8mfodsp8dvfml4b20xgy File:iPhone X Power IC diode readings.jpg 6 1972 5832 2021-05-14T23:42:38Z Tim 169 Uploaded a work by GLONWYMAN from G-LON with UploadWizard 5832 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=iPhone X Power IC (PMU) (U2700) diode mode readings}} |date=2021-05-14 |source=G-LON |author=GLONWYMAN |permission= |other versions= }} =={{int:license-header}}== {{subst:uwl}} d7bhxjcreaem1dycdcji4x8sf0383x6 File:iPhone X Q3350.png 6 1382 3022 2020-10-06T13:58:16Z Dusten04 30 3022 wikitext text/x-wiki iPhone X Q3350 lazljnt5efsk4k26hsg3hnz9rpymfl2 File:iPhone X Quad P.png 6 1383 3023 2020-10-06T13:58:55Z Dusten04 30 3023 wikitext text/x-wiki iPhone X Quad P hcgdbwk9636xg1ylrpi83cfkily573n File:iPhone X TDDPA.png 6 1384 3024 2020-10-06T13:59:46Z Dusten04 30 3024 wikitext text/x-wiki iPhone X TDDPA 2gew047ngqmz8sgues71jy6tlbs0244 File:iPhone X U3100.png 6 1388 3028 2020-10-06T14:04:03Z Dusten04 30 3028 wikitext text/x-wiki iPhone X U3100 qkf0ypwqhla7cquz6mk3xq9jdqgdxmm File:iPhone X U3300.png 6 1389 3029 2020-10-06T14:04:48Z Dusten04 30 3029 wikitext text/x-wiki iPhone X U3300 6ix1sh8fvzjsm0y9631qh3zw5wb6i83 File:iPhone X U3400.png 6 1390 3030 2020-10-06T14:05:34Z Dusten04 30 3030 wikitext text/x-wiki iPhone X U3400 ld8wfmwzn3ccyl91clfeqcqhnbls03y File:iPhone X U3600.png 6 1391 3031 2020-10-06T14:06:07Z Dusten04 30 3031 wikitext text/x-wiki iPhone X U3600 qkvbtnd89cykze6sjqgukw7013lj6zd File:iPhone X U3620.png 6 1392 3032 2020-10-06T14:06:50Z Dusten04 30 3032 wikitext text/x-wiki iPhone X U3620 evd3k6gvno3efursutmu50jn9009h2q File:iPhone X U3700.png 6 1393 3033 2020-10-06T14:07:36Z Dusten04 30 3033 wikitext text/x-wiki iPhone X U3700 f0cr0a1q3u5z2oryt0mbzjhjhg6d5zw File:iPhone X U4100.png 6 1394 3034 2020-10-06T14:08:21Z Dusten04 30 3034 wikitext text/x-wiki iPhone X U4100 nzi3a7rrkz19tjl73ddpgy43p9xklvi File:iPhone X U4120.png 6 1395 3035 2020-10-06T14:08:56Z Dusten04 30 3035 wikitext text/x-wiki iPhone X U4120 0o3uotl8kfqwx2tjne8loeommk80l0x File:iPhone X U4400.png 6 1396 3036 2020-10-06T14:09:43Z Dusten04 30 3036 wikitext text/x-wiki iPhone X U4400 i602tha7cphojr2u85qkkn5s53uz7ku File:iPhone X U4700.png 6 1397 3037 2020-10-06T14:10:17Z Dusten04 30 3037 wikitext text/x-wiki iPhone X U4700 j5qft9d7wrn0y5wc9uizqhxfvxl5nme File:iPhone X U4900.png 6 1398 3038 2020-10-06T14:10:49Z Dusten04 30 3038 wikitext text/x-wiki iPhone X U4900 hehqrbjakn87o0fpgb1t9xc1k9kjgei File:iPhone X U5000.png 6 1399 3039 2020-10-06T14:11:21Z Dusten04 30 3039 wikitext text/x-wiki iPhone X U5000 6cexrz4bw832w8aqsb4qf4lu7phglke File:iPhone X U5100.png 6 1400 3040 2020-10-06T14:12:00Z Dusten04 30 3040 wikitext text/x-wiki iPhone X U5100 gi8rk9zn1ackof2fzfqck79fkfgni6x File:iPhone X U5530.png 6 1401 3041 2020-10-06T14:12:44Z Dusten04 30 3041 wikitext text/x-wiki iPhone X U5530 n0hewew5ky5w9w3v0pxhvhisghmsmmu File:iPhone X U5600.png 6 1402 3042 2020-10-06T14:13:16Z Dusten04 30 3042 wikitext text/x-wiki iPhone X U5600 jdav0b8bfxiqupvnc69q08c75sx82jt File:iPhone X U6200.png 6 1403 3043 2020-10-06T14:14:01Z Dusten04 30 3043 wikitext text/x-wiki iPhone X U6200 tdrjhpi1a6u6p9av5xfsqb3l40trhco File:iPhone X U6300.png 6 1404 3044 2020-10-06T14:14:42Z Dusten04 30 3044 wikitext text/x-wiki iPhone X U6300 3cjvkr91iztw0me88vy7vki6j07owvc File:iPhone X UATCP.png 6 1405 3045 2020-10-06T14:15:22Z Dusten04 30 3045 wikitext text/x-wiki iPhone X UATCP 3b1b4w014c6p5qa30zlzg2nrjhsenb7 File:iPhone X XCVR1.png 6 1406 3046 2020-10-06T14:18:13Z Dusten04 30 3046 wikitext text/x-wiki iPhone X XCVR1 7f0gbqwzllpf4h0hth9qt0gkhnn6jkt File:iPhone X XCVRO.png 6 1407 3047 2020-10-06T14:18:54Z Dusten04 30 3047 wikitext text/x-wiki iPhone X XCVRO qcxlf7srco0yu7to36rncu4e186dsmc File:iPhone X battery connector and charging IC diode readings.jpg 6 1963 5822 2021-05-14T23:42:37Z Tim 169 Uploaded a work by GLONWYMAN from G-LON with UploadWizard 5822 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=iPhone X battery connector (J3200) and charging IC (Tigris) diode mode readings}} |date=2021-05-14 |source=G-LON |author=GLONWYMAN |permission= |other versions= }} =={{int:license-header}}== {{subst:uwl}} odu2n9oxu6ncp6iqke9ego0rhkvcb6b File:iPhone X bottom sandwich (Intel) diode readings.jpg 6 1961 5821 2021-05-14T23:42:37Z Tim 169 Uploaded a work by GLONWYMAN from G-LON with UploadWizard 5821 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=iPhone X bottom sandwich (Intel) diode mode readings}} |date=2021-05-14 |source=G-LON |author=GLONWYMAN |permission= |other versions= }} =={{int:license-header}}== {{subst:uwl}} ow05dit6jnocxwmutv8v0x92jqh6eej File:iPhone X bottom sandwich (Qualcomm) diode readings.jpg 6 1962 5823 2021-05-14T23:42:37Z Tim 169 Uploaded a work by GLONWYMAN from G-LON with UploadWizard 5823 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=iPhone X bottom sandwich (Qualcomm) diode mode readings}} |date=2021-05-14 |source=G-LON |author=GLONWYMAN |permission= |other versions= }} =={{int:license-header}}== {{subst:uwl}} nkoc4avhrwcqsi840lat8131xd2el8z File:iPhone X display connector diode readings.jpg 6 1969 5828 2021-05-14T23:42:38Z Tim 169 Uploaded a work by GLONWYMAN from G-LON with UploadWizard 5828 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=iPhone X display connector (J5700) diode mode readings}} |date=2021-05-14 |source=G-LON |author=GLONWYMAN |permission= |other versions= }} =={{int:license-header}}== {{subst:uwl}} b34kzaj80tzzwy3ne9ll2txizjry8uu File:iPhone X fron camera connector diode readings.jpg 6 1966 5826 2021-05-14T23:42:38Z Tim 169 Uploaded a work by GLONWYMAN from G-LON with UploadWizard 5826 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=iPhone X front camera (J4200) connectors diode mode readings}} |date=2021-05-14 |source=G-LON |author=GLONWYMAN |permission= |other versions= }} =={{int:license-header}}== {{subst:uwl}} lr7n8cuj30z5lq2hs9r6p3pe0nvrjgu File:iPhone X power button connector diode readings.jpg 6 1965 5825 2021-05-14T23:42:38Z Tim 169 Uploaded a work by GLONWYMAN from G-LON with UploadWizard 5825 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=iPhone X power button, strobe and MIC2 flex cable connector (J4300) diode mode readings}} |date=2021-05-14 |source=G-LON |author=GLONWYMAN |permission= |other versions= }} =={{int:license-header}}== {{subst:uwl}} fghkcw83omt7uey7dgvff0tqpocnppq File:iPhone X rear camera connectors diode readings.jpg 6 1964 5824 2021-05-14T23:42:38Z Tim 169 Uploaded a work by GLONWYMAN from G-LON with UploadWizard 5824 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=iPhone X rear camera connectors (J3900,J4000) diode mode radings}} |date=2021-05-14 |source=G-LON |author=GLONWYMAN |permission= |other versions= }} =={{int:license-header}}== {{subst:uwl}} cygf03m5bou3zndmftqmr4uo02j3fwu File:iPhone X sandwich top diode readings.jpg 6 1960 5819 2021-05-14T22:41:49Z Tim 169 5819 wikitext text/x-wiki iPhone X sandwich top diode readings n43gihhjy1hb1lsy66qywj81c0308cr File:iPhone X sensor IC diode readings.jpg 6 1973 5833 2021-05-14T23:42:39Z Tim 169 Uploaded a work by GLONWYMAN from G-LON with UploadWizard 5833 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=iPhone X sensor IC (U3600 Gyro, U3620 Phosphorus) diode mode readings}} |date=2021-05-14 |source=G-LON |author=GLONWYMAN |permission= |other versions= }} =={{int:license-header}}== {{subst:uwl}} 6ne785q6mhcj8b0pzbufeyu0d9evfwq File:iPhone X speaker connector diode readings.jpg 6 1967 5827 2021-05-14T23:42:38Z Tim 169 Uploaded a work by GLONWYMAN from G-LON with UploadWizard 5827 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=iPhone X speaker, MIC3, ALS and proximity sensor (Rosaline) connector (J4600) diode mode readings}} |date=2021-05-14 |source=G-LON |author=GLONWYMAN |permission= |other versions= }} =={{int:license-header}}== {{subst:uwl}} o8slvgbyikzyvqk390qp8el225huufo File:iPhone X top board comparison (Qualcomm & intel).jpg 6 1971 5831 2021-05-14T23:42:38Z Tim 169 Uploaded a work by GLONWYMAN from G-LON with UploadWizard 5831 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=iPhone X Qualcomm & Intel top BB board comparison}} |date=2021-05-14 |source=G-LON |author=GLONWYMAN |permission= |other versions= }} =={{int:license-header}}== {{subst:uwl}} tda8sfayp9xsx923gyrwvmogg5w80j8 File:iPhone X touch connector diode readings.jpg 6 1968 5829 2021-05-14T23:42:38Z Tim 169 Uploaded a work by GLONWYMAN from G-LON with UploadWizard 5829 wikitext text/x-wiki =={{int:filedesc}}== {{Information |description={{en|1=iPhone X touch connector (J5800) diode mode readings}} |date=2021-05-14 |source=G-LON |author=GLONWYMAN |permission= |other versions= }} =={{int:license-header}}== {{subst:uwl}} 5mwnacdfv74nxdlq8l3zcdznqe08bqk File:imac 21 2019 recto.jpg 6 1932 5724 2021-04-08T22:18:13Z Nobluesky 182 5724 wikitext text/x-wiki 820-01237 recto dvkzg9co1ua7m72p7fxtsu8vdve2xbn File:imac 21 2019 verso.jpg 6 1933 5725 2021-04-08T22:18:47Z Nobluesky 182 5725 wikitext text/x-wiki 820-01237 verso njn6nno9hluehoosxisjqllw0vd5z94 File:image.png 6 1419 3083 2020-10-06T21:39:41Z Inwerp 16 3083 wikitext text/x-wiki USB-C powerup hqkfxn9fqtsn6sl572qc0khrxnx9lzf File:ipad-air-2-icloud-unlock.jpg 6 755 1604 2020-09-04T00:58:02Z Alan.l 19 1604 wikitext text/x-wiki iPad Air 2 Cellular to Wifi unlock tvw18j4dvv4sixuzvt5slh8frnjq9n9 File:late-2013-mac-pro-system-block-diagram.png 6 637 1322 2020-06-09T12:57:46Z Pranas 2 1322 wikitext text/x-wiki late-2013-mac-pro-system-block-diagram 29mghip6snn4z0fmawh29j7h661p7o7 File:lcd and touch 13pm dfcloud6.jpg 6 2656 7710 2024-12-31T12:31:37Z Dfcloud6 1726 7710 wikitext text/x-wiki Lcd and touch 13pm diode scale values 5uqeevnmjmlhw7n96vd396qodkkuung File:lcd iphone 13 dfcloud6.jpg 6 2670 7727 2024-12-31T13:35:42Z Dfcloud6 1726 7727 wikitext text/x-wiki lcd and touch iphone 13 dfcloud6 jd4yfsy21lpnbxaf4ldqiurzg6gt7m6 File:liquidation.jpg 6 2257 7002 2023-10-25T16:54:12Z CBax 996 7002 wikitext text/x-wiki liquidation 5tlefmx0x5p6upzcqdyekqvg94qxqoq File:mac mini 2010.jpg 6 1341 2945 2020-10-04T19:44:02Z Alan.l 19 2945 wikitext text/x-wiki mac mini 2010 g03fjjs0dwutj29g3fkdul9l8ha2ckx File:mac mini 2011 5v.jpg 6 1343 2948 2020-10-04T19:50:16Z Alan.l 19 2948 wikitext text/x-wiki mac mini 2011 5v 0f5j4pa1ybn0s24nx4rlzbae7530ol5 File:macmini 2012 cap.jpg 6 1344 2951 2020-10-04T20:00:09Z Alan.l 19 2951 wikitext text/x-wiki macmini 2012 cap 807judxnttq6lwc4tmrbntc0mb60hwc File:macpro 1.png 6 632 1314 2020-06-09T12:22:26Z Pranas 2 1314 wikitext text/x-wiki macpro_1 lfzelndne6ydqc3eu7kwmqboooa3fz2 File:macpro 2.png 6 633 1315 2020-06-09T12:22:56Z Pranas 2 1315 wikitext text/x-wiki macpro_2 8mgia1eoawbl0qo5bjahlxhp4hpb284 File:macpro 3.jpg 6 635 1317 2020-06-09T12:24:36Z Pranas 2 1317 wikitext text/x-wiki macpro_3 pl7efcy3ptze8rw0udax4i38l9bujwa File:macpro 4.png 6 636 1318 2020-06-09T12:25:51Z Pranas 2 1318 wikitext text/x-wiki macpro_4 86sgbdbzxffmnso58hk6g7p05dx4eiu File:macssdgen5.png 6 2160 6493 2022-04-28T17:20:55Z Inwerp 16 6493 wikitext text/x-wiki SSD Gen.5 kq1vv4asi0o1g6d2b1iufk1029aoefs File:main se 2022.jpg 6 2661 7716 2024-12-31T12:52:56Z Dfcloud6 1726 7716 wikitext text/x-wiki Charging dock iphone se 2022 diode scale values dfcloud6 nsgy5mkg8tl1negzveepqriez5l2idk File:mbpro15201213.png 6 2183 6584 2022-09-06T15:32:21Z Francis 4 6584 wikitext text/x-wiki Macbook Pro 15" Mid 2012 to Early 2013 nprt4wc6bctcyuot3ko800ctsjp8bxm File:mbpro201213.png 6 2182 6582 2022-09-06T15:22:34Z Francis 4 6582 wikitext text/x-wiki Macbook pro 15" 2012-Early 2013 jw76kciu1on9mtuo08vuhj31r62ogfp File:paficist.jpg 6 1955 5811 2021-05-12T13:03:32Z Alex6337 28 5811 wikitext text/x-wiki Pacifist app example of firmwareupdate.pkg extraction and SMC payloads location. evy5r7yqgru8qbrgn85h9y0as7l72cg File:ps5 hdmi diode reading.png 6 1937 5746 2021-04-19T14:13:48Z Blackbeard 421 5746 wikitext text/x-wiki PS5 HDMI Diode Reading 0827l1891fuxs039f9fqron99w4wxwf File:ps5 hdmi via.png 6 1938 5747 2021-04-19T14:15:41Z Blackbeard 421 5747 wikitext text/x-wiki PS5 HDMI Trace 22ozc1cyqj7rv705jstzhk5gmqhb9fc File:python script.jpg 6 2150 6445 2022-02-28T11:29:14Z Alex6337 28 6445 wikitext text/x-wiki python script n9750c4oolgmkso7qb50gwsnv3v7mh9 File:rEFIt-example.jpg 6 1947 5801 2021-05-12T12:33:27Z Alex6337 28 5801 wikitext text/x-wiki rEFIt boot menu pgtlmmrtj9972tzer2sdzxy7df4ixnc File:raw-button.jpg 6 2148 6443 2022-02-28T11:26:44Z Alex6337 28 6443 wikitext text/x-wiki Raw button d9554p3url3r1szdb5wjlz5yqbet2i1 File:reload.jpg 6 2145 6440 2022-02-28T11:14:38Z Alex6337 28 6440 wikitext text/x-wiki Reload nxnnia2z6zfxyzzj3yskts7ibpv1r8e File:rf iphone 13 dfcloud6.jpg 6 2672 7729 2024-12-31T13:39:33Z Dfcloud6 1726 7729 wikitext text/x-wiki RF diode scale values iphone 13 dfcloud6 grcsq135kzq59r9wwxsb96ckuwqoc6g File:rootcerts.pem.txt 6 2072 6771 6133 2023-02-22T22:48:16Z Chrisb 1 Chrisb uploaded a new version of [[File:rootcerts.pem.txt]] 6132 wikitext text/x-wiki == Summary == Root certificates from Monterey 10.1.2021 95vqs6gu5pc7tlr5go5hw5zh12jky6o File:shell efi.jpg 6 1949 5803 2021-05-12T12:36:52Z Alex6337 28 5803 wikitext text/x-wiki Shell efi, inside fs2 drive g1qa8urn8pimcmqrqv3q0qj4tw26mub File:smcutil-flash-example.jpg 6 1951 5805 2021-05-12T12:39:08Z Alex6337 28 5805 wikitext text/x-wiki smcutil.efi flash command example hcvo40hjjjtgzeo4hernfuuq85m4oys File:smcutilefi-shellcommand.jpg 6 1950 5804 2021-05-12T12:37:46Z Alex6337 28 5804 wikitext text/x-wiki smcutilefi-shellcommand dl23k8i1ejult4ymfc0oft17y9zst1l File:socrom example.png 6 2581 7599 2024-08-11T20:17:35Z Muerto 527 7599 wikitext text/x-wiki Example serialization block from an 820-01700 with dead NANDs. dwl3ov2e3pz22ng7uz96qxc5djudy7l File:southbride readings FRONT PS4 Pro NVG-002.png 6 2133 6398 2022-02-07T06:05:16Z Alpha Bravo Tech. 538 6398 wikitext text/x-wiki Diode Mode Readings Around Southbridge on PS4 Pro NVG-002 btgf6hvyuapilad84tbtlwu5fzmk2s2 File:steve-jobs.webp 6 2119 6346 2022-01-09T17:21:41Z Inwerp 16 6346 wikitext text/x-wiki Steve Jobs kk2rzafd1ss86wrpccwk3d42jh50rsn File:sudo apt install python3.jpg 6 2146 6441 2022-02-28T11:21:42Z Alex6337 28 6441 wikitext text/x-wiki sudo apt install python3 ilunff4wqu8crnv6lvhqpdnmpifgv04 File:t2ram.png 6 2210 6714 2023-01-16T07:26:30Z Leshuq 657 6714 wikitext text/x-wiki Diode values under T2's RAM olcze3c3jfyx2yohziazgaxv3o6tu2d File:testpoints.jpg 6 2254 6988 2023-10-24T23:15:28Z Infosquad 1036 6988 wikitext text/x-wiki test point in a1990 mainboard prodduer5c4rx273h6u9c2plzv4dvsa File:thermal couple.png 6 2154 6470 2022-04-14T18:52:52Z Inwerp 16 6470 wikitext text/x-wiki Macbook Battery thermal couple n4at6hx2tgv9w5nifkwqygu5ifizdfw File:thermal throttling.jpg 6 1874 5522 2021-01-21T00:47:41Z Nobluesky 182 5522 wikitext text/x-wiki 820-00165 throttling due to high CPU usage with Prime95 torture test. l7w843ojxc4bwvpzn4xlms1selatn0t File:thisisfine.png 6 720 1520 2020-08-12T19:41:21Z Inwerp 16 1520 wikitext text/x-wiki temperature_reference coaon8n47m8kar99n0n2ylljp4l58ks File:throttling-random-fixed.jpg 6 1897 5595 2021-02-26T02:15:27Z Nobluesky 182 5595 wikitext text/x-wiki throttling smc corrosion iyb9pvolntfsm7mfeoyqubzwb2cpdfx File:throttling-random-under-load.jpg 6 1896 5594 2021-02-26T02:13:39Z Nobluesky 182 5594 wikitext text/x-wiki Erratic frequency behavior, slow computer and throttling under load. gncb58vajg2s2gkgp3jsklvi9adpu3l File:touchbarconnector.png 6 711 1502 2020-08-09T13:00:12Z Inwerp 16 1502 wikitext text/x-wiki Hirose 34 pin connector dxls6bmf1xvsc9z0hzbmvtbdjkvr15p File talk:NAND capacity.jpg 7 2170 6565 6547 2022-08-21T07:05:14Z Pedro147 26 Deleted page as best I could. Asked Dustin for help but not forthcoming so 6565 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 MediaWiki:Centralnotice-template-Help 8 1824 5372 5371 2020-12-24T16:04:40Z Chrisb 1 5372 wikitext text/x-wiki <!-- Empty banner --> Hi all, ChrisB from logi.wiki here. We need help. So far our front page is just a list of ALL pages. We need someone to help organize that and create a nice landing page. Please contact me on Louis Rossmans's Repair Discord. My user is ChrisB [VA, US]#9797. <a href="#" title="Close" onclick="mw.centralNotice.hideBanner();return false;"><div class="cn-closeButton">Close</div></a> eprbi4l8wfo0edidvewje3auhckrcj1 MediaWiki:Common.css 8 189 3085 3084 2020-10-06T21:41:26Z Chrisb 1 3085 css text/css /* Reset italic styling set by user agent */ cite, dfn { font-style: inherit; } /* Straight quote marks for <q> */ q { quotes: '"' '"' "'" "'"; } /* Avoid collision of blockquote with floating elements by swapping margin and padding */ blockquote { overflow: hidden; margin: 1em 0; padding: 0 40px; } /* Consistent size for <small>, <sub> and <sup> */ small { font-size: 85%; } .mw-body-content sub, .mw-body-content sup, span.reference /* for Parsoid */ { font-size: 80%; } /* Same spacing for indented and unindented paragraphs on talk pages */ .ns-talk .mw-body-content dd { margin-top: 0.4em; margin-bottom: 0.4em; } /* Main page fixes */ #interwiki-completelist { font-weight: bold; } /* Reduce page jumps by hiding collapsed/dismissed content */ .client-js .mw-special-Watchlist #watchlist-message, .client-js .NavFrame.collapsed .NavContent, .client-js .collapsible:not( .mw-made-collapsible).collapsed > tbody > tr:not(:first-child) { display: none; } /* Adds padding above Watchlist announcements where new recentchanges/watchlist filters are enabled */ .mw-rcfilters-enabled .mw-specialpage-summary { margin-top: 1em; } /* Hide charinsert base for those not using the gadget */ #editpage-specialchars { display: none; } /* Highlight linked elements (such as clicked references) in blue */ body.action-info .mw-body-content :target, .citation:target { background-color: #def; /* Fallback */ background-color: rgba(0, 127, 255, 0.133); } /* Styling for citations. Breaks long urls, etc., rather than overflowing box */ .citation { word-wrap: break-word; } /* For linked citation numbers and document IDs, where the number need not be shown on a screen or a handheld, but should be included in the printed version */ @media screen, handheld { .citation .printonly { display: none; } } /* Make the list of references smaller */ /* Keep in sync with Template:Refbegin/styles.css */ ol.references, div.reflist { font-size: 90%; /* Default font-size */ margin-bottom: 0.5em; } div.reflist ol.references { font-size: 100%; /* Reset font-size when nested in div.reflist */ margin-bottom: 0; /* Avoid double margin when nested in div.reflist */ list-style-type: inherit; /* Enable custom list style types */ } /* Allow hidden ref errors to be shown by user CSS */ /* TemplateStyles */ span.brokenref { display: none; } /* Reset top margin for lists embedded in columns */ div.columns { margin-top: 0.3em; } div.columns dl, div.columns ol, div.columns ul { margin-top: 0; } /* Avoid elements breaking between columns */ .nocolbreak, div.columns li, div.columns dd { -webkit-column-break-inside: avoid; page-break-inside: avoid; break-inside: avoid-column; } /* Style for horizontal lists (separator following item). @source mediawiki.org/wiki/Snippets/Horizontal_lists @revision 8 (2016-05-21) @author [[User:Edokter]] */ .hlist dl, .hlist ol, .hlist ul { margin: 0; padding: 0; } /* Display list items inline */ .hlist dd, .hlist dt, .hlist li { margin: 0; display: inline; } /* Display nested lists inline */ .hlist.inline, .hlist.inline dl, .hlist.inline ol, .hlist.inline ul, .hlist dl dl, .hlist dl ol, .hlist dl ul, .hlist ol dl, .hlist ol ol, .hlist ol ul, .hlist ul dl, .hlist ul ol, .hlist ul ul { display: inline; } /* Hide empty list items */ .hlist .mw-empty-li { display: none; } /* Generate interpuncts */ .hlist dt:after { content: ": "; } /** * Note hlist style usage differd in * the Minerva skin. Remember .hlist is a class defined in core as well! Please check Minerva desktop (and Minerva.css) when changing * See https://phabricator.wikimedia.org/T213239 */ .hlist dd:after, .hlist li:after { content: " · "; font-weight: bold; } .hlist dd:last-child:after, .hlist dt:last-child:after, .hlist li:last-child:after { content: none; } /* Add parentheses around nested lists */ .hlist dd dd:first-child:before, .hlist dd dt:first-child:before, .hlist dd li:first-child:before, .hlist dt dd:first-child:before, .hlist dt dt:first-child:before, .hlist dt li:first-child:before, .hlist li dd:first-child:before, .hlist li dt:first-child:before, .hlist li li:first-child:before { content: " ("; font-weight: normal; } .hlist dd dd:last-child:after, .hlist dd dt:last-child:after, .hlist dd li:last-child:after, .hlist dt dd:last-child:after, .hlist dt dt:last-child:after, .hlist dt li:last-child:after, .hlist li dd:last-child:after, .hlist li dt:last-child:after, .hlist li li:last-child:after { content: ")"; font-weight: normal; } /* Put ordinals in front of ordered list items */ .hlist ol { counter-reset: listitem; } .hlist ol > li { counter-increment: listitem; } .hlist ol > li:before { content: " " counter(listitem) "\a0"; } .hlist dd ol > li:first-child:before, .hlist dt ol > li:first-child:before, .hlist li ol > li:first-child:before { content: " (" counter(listitem) "\a0"; } /* Unbulleted lists */ .plainlist ol, .plainlist ul { line-height: inherit; list-style: none none; margin: 0; } .plainlist ol li, .plainlist ul li { margin-bottom: 0; } /* Default style for navigation boxes */ .navbox { /* Navbox container style */ box-sizing: border-box; border: 1px solid #a2a9b1; width: 100%; clear: both; font-size: 88%; text-align: center; padding: 1px; margin: 1em auto 0; /* Prevent preceding content from clinging to navboxes */ } .navbox .navbox { margin-top: 0; /* No top margin for nested navboxes */ } .navbox + .navbox { margin-top: -1px; /* Single pixel border between adjacent navboxes */ } .navbox-inner, .navbox-subgroup { width: 100%; } .navbox-group, .navbox-title, .navbox-abovebelow { padding: 0.25em 1em; /* Title, group and above/below styles */ line-height: 1.5em; text-align: center; } th.navbox-group { /* Group style */ white-space: nowrap; /* @noflip */ text-align: right; } .navbox, .navbox-subgroup { background-color: #fdfdfd; /* Background color */ } .navbox-list { line-height: 1.5em; border-color: #fdfdfd; /* Must match background color */ } /* cell spacing for navbox cells */ tr + tr > .navbox-abovebelow, tr + tr > .navbox-group, tr + tr > .navbox-image, tr + tr > .navbox-list { /* Borders above 2nd, 3rd, etc. rows */ border-top: 2px solid #fdfdfd; /* Must match background color */ } .navbox th, .navbox-title { background-color: #ccccff; /* Level 1 color */ } .navbox-abovebelow, th.navbox-group, .navbox-subgroup .navbox-title { background-color: #ddddff; /* Level 2 color */ } .navbox-subgroup .navbox-group, .navbox-subgroup .navbox-abovebelow { background-color: #e6e6ff; /* Level 3 color */ } .navbox-even { background-color: #f7f7f7; /* Even row striping */ } .navbox-odd { background-color: transparent; /* Odd row striping */ } .navbox .hlist td dl, .navbox .hlist td ol, .navbox .hlist td ul, .navbox td.hlist dl, .navbox td.hlist ol, .navbox td.hlist ul { padding: 0.125em 0; /* Adjust hlist padding in navboxes */ } /* Default styling for Navbar template */ .navbar { display: inline; font-size: 88%; font-weight: normal; } .navbar ul { display: inline-block; white-space: nowrap; } .mw-body-content .navbar ul { line-height: inherit; } .navbar li { word-spacing: -0.125em; } .navbar.mini li abbr[title] { font-variant: small-caps; border-bottom: none; text-decoration: none; cursor: inherit; } /* Navbar styling when nested in infobox and navbox */ .infobox .navbar { font-size: 100%; } .navbox .navbar { display: block; font-size: 100%; } .navbox-title .navbar { /* @noflip */ float: left; /* @noflip */ text-align: left; /* @noflip */ margin-right: 0.5em; } /* Styling for JQuery makeCollapsible, matching that of collapseButton */ .mw-parser-output .mw-collapsible-toggle { font-weight: normal; /* @noflip */ text-align: right; padding-right: 0.2em; padding-left: 0.2em; } .mw-collapsible-leftside-toggle .mw-collapsible-toggle { /* @noflip */ float: left; /* @noflip */ text-align: left; } /* Infobox template style */ .infobox { border: 1px solid #a2a9b1; border-spacing: 3px; background-color: #f8f9fa; color: black; /* @noflip */ margin: 0.5em 0 0.5em 1em; padding: 0.2em; /* @noflip */ float: right; /* @noflip */ clear: right; font-size: 88%; line-height: 1.5em; } .infobox caption { font-size: 125%; font-weight: bold; padding: 0.2em; text-align: center; } .infobox td, .infobox th { vertical-align: top; /* @noflip */ text-align: left; } .infobox.bordered { border-collapse: collapse; } .infobox.bordered td, .infobox.bordered th { border: 1px solid #a2a9b1; } .infobox.bordered .borderless td, .infobox.bordered .borderless th { border: 0; } .infobox.sisterproject { width: 20em; font-size: 90%; } .infobox.standard-talk { border: 1px solid #c0c090; background-color: #f8eaba; } .infobox.standard-talk.bordered td, .infobox.standard-talk.bordered th { border: 1px solid #c0c090; } /* styles for bordered infobox with merged rows */ .infobox.bordered .mergedtoprow td, .infobox.bordered .mergedtoprow th { border: 0; border-top: 1px solid #a2a9b1; /* @noflip */ border-right: 1px solid #a2a9b1; } .infobox.bordered .mergedrow td, .infobox.bordered .mergedrow th { border: 0; /* @noflip */ border-right: 1px solid #a2a9b1; } /* Styles for geography infoboxes, eg countries, country subdivisions, cities, etc. */ .infobox.geography { border-collapse: collapse; line-height: 1.2em; font-size: 90%; } .infobox.geography td, .infobox.geography th { border-top: 1px solid #a2a9b1; padding: 0.4em 0.6em 0.4em 0.6em; } .infobox.geography .mergedtoprow td, .infobox.geography .mergedtoprow th { border-top: 1px solid #a2a9b1; padding: 0.4em 0.6em 0.2em 0.6em; } .infobox.geography .mergedrow td, .infobox.geography .mergedrow th { border: 0; padding: 0 0.6em 0.2em 0.6em; } .infobox.geography .mergedbottomrow td, .infobox.geography .mergedbottomrow th { border-top: 0; border-bottom: 1px solid #a2a9b1; padding: 0 0.6em 0.4em 0.6em; } .infobox.geography .maptable td, .infobox.geography .maptable th { border: 0; padding: 0; } /* Normal font styling for wikitable row headers with scope="row" tag */ .wikitable.plainrowheaders th[scope=row] { font-weight: normal; /* @noflip */ text-align: left; } /* Lists in wikitable data cells are always left-aligned */ .wikitable td ul, .wikitable td ol, .wikitable td dl { /* @noflip */ text-align: left; } /* ...unless they also use the hlist class */ .toc.hlist ul, #toc.hlist ul, .wikitable.hlist td ul, .wikitable.hlist td ol, .wikitable.hlist td dl { text-align: inherit; } /* Icons for medialist templates [[Template:Listen]], [[Template:Multi-listen_start]], [[Template:Video]], [[Template:Multi-video_start]] */ /* TemplateStyles */ div.listenlist { background: url("//upload.wikimedia.org/wikipedia/commons/4/47/Sound-icon.svg") no-repeat scroll 0 0 transparent; background-size: 30px; padding-left: 40px; } /* Fix for hieroglyphs specificity issue in infoboxes ([[phab:T43869]]) */ table.mw-hiero-table td { vertical-align: middle; } /* Change the external link icon to an Adobe icon for all PDF files */ .mw-parser-output a[href$=".pdf"].external, .mw-parser-output a[href*=".pdf?"].external, .mw-parser-output a[href*=".pdf#"].external, .mw-parser-output a[href$=".PDF"].external, .mw-parser-output a[href*=".PDF?"].external, .mw-parser-output a[href*=".PDF#"].external { background: url("//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") no-repeat right; /* @noflip */ padding-right: 18px; } /* Messagebox templates */ .messagebox { border: 1px solid #a2a9b1; background-color: #f8f9fa; width: 80%; margin: 0 auto 1em auto; padding: .2em; } .messagebox.merge { border: 1px solid #c0b8cc; background-color: #f0e5ff; text-align: center; } .messagebox.cleanup { border: 1px solid #9f9fff; background-color: #efefff; text-align: center; } .messagebox.standard-talk { border: 1px solid #c0c090; background-color: #f8eaba; margin: 4px auto; } /* For old WikiProject banners inside banner shells. */ .mbox-inside .standard-talk, .messagebox.nested-talk { border: 1px solid #c0c090; background-color: #f8eaba; width: 100%; margin: 2px 0; padding: 2px; } .messagebox.small { width: 238px; font-size: 85%; /* @noflip */ float: right; clear: both; /* @noflip */ margin: 0 0 1em 1em; line-height: 1.25em; } .messagebox.small-talk { width: 238px; font-size: 85%; /* @noflip */ float: right; clear: both; /* @noflip */ margin: 0 0 1em 1em; line-height: 1.25em; background-color: #f8eaba; } /* Cell sizes for ambox/tmbox/imbox/cmbox/ombox/fmbox/dmbox message boxes */ th.mbox-text, td.mbox-text { /* The message body cell(s) */ border: none; /* @noflip */ padding: 0.25em 0.9em; /* 0.9em left/right */ width: 100%; /* Make all mboxes the same width regardless of text length */ } td.mbox-image { /* The left image cell */ border: none; /* @noflip */ padding: 2px 0 2px 0.9em; /* 0.9em left, 0px right */ text-align: center; } td.mbox-imageright { /* The right image cell */ border: none; /* @noflip */ padding: 2px 0.9em 2px 0; /* 0px left, 0.9em right */ text-align: center; } td.mbox-empty-cell { /* An empty narrow cell */ border: none; padding: 0; width: 1px; } /* Article message box styles */ table.ambox { margin: 0 10%; /* 10% = Will not overlap with other elements */ border: 1px solid #a2a9b1; /* @noflip */ border-left: 10px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } table.ambox + table.ambox { /* Single border between stacked boxes. */ margin-top: -1px; } .ambox th.mbox-text, .ambox td.mbox-text { /* The message body cell(s) */ padding: 0.25em 0.5em; /* 0.5em left/right */ } .ambox td.mbox-image { /* The left image cell */ /* @noflip */ padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */ } .ambox td.mbox-imageright { /* The right image cell */ /* @noflip */ padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */ } table.ambox-notice { /* @noflip */ border-left: 10px solid #36c; /* Blue */ } table.ambox-speedy { /* @noflip */ border-left: 10px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.ambox-delete { /* @noflip */ border-left: 10px solid #b32424; /* Red */ } table.ambox-content { /* @noflip */ border-left: 10px solid #f28500; /* Orange */ } table.ambox-style { /* @noflip */ border-left: 10px solid #fc3; /* Yellow */ } table.ambox-move { /* @noflip */ border-left: 10px solid #9932cc; /* Purple */ } table.ambox-protection { /* @noflip */ border-left: 10px solid #a2a9b1; /* Gray-gold */ } /* Image message box styles */ table.imbox { margin: 4px 10%; border-collapse: collapse; border: 3px solid #36c; /* Default "notice" blue */ background-color: #fbfbfb; box-sizing: border-box; } .imbox .mbox-text .imbox { /* For imboxes inside imbox-text cells. */ margin: 0 -0.5em; /* 0.9 - 0.5 = 0.4em left/right. */ display: block; /* Fix for webkit to force 100% width. */ } .mbox-inside .imbox { /* For imboxes inside other templates. */ margin: 4px; } table.imbox-notice { border: 3px solid #36c; /* Blue */ } table.imbox-speedy { border: 3px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.imbox-delete { border: 3px solid #b32424; /* Red */ } table.imbox-content { border: 3px solid #f28500; /* Orange */ } table.imbox-style { border: 3px solid #fc3; /* Yellow */ } table.imbox-move { border: 3px solid #9932cc; /* Purple */ } table.imbox-protection { border: 3px solid #a2a9b1; /* Gray-gold */ } table.imbox-license { border: 3px solid #88a; /* Dark gray */ background-color: #f7f8ff; /* Light gray */ } table.imbox-featured { border: 3px solid #cba135; /* Brown-gold */ } /* Category message box styles */ table.cmbox { margin: 3px 10%; border-collapse: collapse; border: 1px solid #a2a9b1; background-color: #dfe8ff; /* Default "notice" blue */ box-sizing: border-box; } table.cmbox-notice { background-color: #d8e8ff; /* Blue */ } table.cmbox-speedy { margin-top: 4px; margin-bottom: 4px; border: 4px solid #b32424; /* Red */ background-color: #ffdbdb; /* Pink */ } table.cmbox-delete { background-color: #ffdbdb; /* Pink */ } table.cmbox-content { background-color: #ffe7ce; /* Orange */ } table.cmbox-style { background-color: #fff9db; /* Yellow */ } table.cmbox-move { background-color: #e4d8ff; /* Purple */ } table.cmbox-protection { background-color: #efefe1; /* Gray-gold */ } /* Other pages message box styles */ table.ombox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #a2a9b1; /* Default "notice" gray */ background-color: #f8f9fa; box-sizing: border-box; } table.ombox-notice { border: 1px solid #a2a9b1; /* Gray */ } table.ombox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.ombox-delete { border: 2px solid #b32424; /* Red */ } table.ombox-content { border: 1px solid #f28500; /* Orange */ } table.ombox-style { border: 1px solid #fc3; /* Yellow */ } table.ombox-move { border: 1px solid #9932cc; /* Purple */ } table.ombox-protection { border: 2px solid #a2a9b1; /* Gray-gold */ } /* Talk page message box styles */ table.tmbox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #c0c090; /* Default "notice" gray-brown */ background-color: #f8eaba; min-width: 80%; box-sizing: border-box; } .tmbox.mbox-small { min-width: 0; /* reset the min-width of tmbox above */ } .mediawiki .mbox-inside .tmbox { /* For tmboxes inside other templates. The "mediawiki" class ensures that */ margin: 2px 0; /* this declaration overrides other styles (including mbox-small above) */ width: 100%; /* For Safari and Opera */ } .mbox-inside .tmbox.mbox-small { /* "small" tmboxes should not be small when */ line-height: 1.5em; /* also "nested", so reset styles that are */ font-size: 100%; /* set in "mbox-small" above. */ } table.tmbox-speedy { border: 2px solid #b32424; /* Red */ background-color: #fee7e6; /* Pink */ } table.tmbox-delete { border: 2px solid #b32424; /* Red */ } table.tmbox-content { border: 2px solid #f28500; /* Orange */ } table.tmbox-style { border: 2px solid #fc3; /* Yellow */ } table.tmbox-move { border: 2px solid #9932cc; /* Purple */ } table.tmbox-protection, table.tmbox-notice { border: 1px solid #c0c090; /* Gray-brown */ } /* Footer and header message box styles */ table.fmbox { clear: both; margin: 0.2em 0; width: 100%; border: 1px solid #a2a9b1; background-color: #f8f9fa; /* Default "system" gray */ box-sizing: border-box; } table.fmbox-system { background-color: #f8f9fa; } table.fmbox-warning { border: 1px solid #bb7070; /* Dark pink */ background-color: #ffdbdb; /* Pink */ } table.fmbox-editnotice { background-color: transparent; } /* Div based "warning" style fmbox messages. */ div.mw-warning-with-logexcerpt, div.mw-lag-warn-high, div.mw-cascadeprotectedwarning, div#mw-protect-cascadeon, div.titleblacklist-warning, div.locked-warning { clear: both; margin: 0.2em 0; border: 1px solid #bb7070; background-color: #ffdbdb; padding: 0.25em 0.9em; box-sizing: border-box; } /* These mbox-small classes must be placed after all other ambox/tmbox/ombox etc classes. "html body.mediawiki" is so they override "table.ambox + table.ambox" above. */ html body.mediawiki .mbox-small { /* For the "small=yes" option. */ /* @noflip */ clear: right; /* @noflip */ float: right; /* @noflip */ margin: 4px 0 4px 1em; box-sizing: border-box; width: 238px; font-size: 88%; line-height: 1.25em; } html body.mediawiki .mbox-small-left { /* For the "small=left" option. */ /* @noflip */ margin: 4px 1em 4px 0; box-sizing: border-box; overflow: hidden; width: 238px; border-collapse: collapse; font-size: 88%; line-height: 1.25em; } /* Style for compact ambox */ /* Hide the images */ .compact-ambox table .mbox-image, .compact-ambox table .mbox-imageright, .compact-ambox table .mbox-empty-cell { display: none; } /* Remove borders, backgrounds, padding, etc. */ .compact-ambox table.ambox { border: none; border-collapse: collapse; background-color: transparent; margin: 0 0 0 1.6em !important; padding: 0 !important; width: auto; display: block; } body.mediawiki .compact-ambox table.mbox-small-left { font-size: 100%; width: auto; margin: 0; } /* Style the text cell as a list item and remove its padding */ .compact-ambox table .mbox-text { padding: 0 !important; margin: 0 !important; } .compact-ambox table .mbox-text-span { display: list-item; line-height: 1.5em; list-style-type: square; list-style-image: url(/w/skins/MonoBook/resources/images/bullet.svg); } .skin-vector .compact-ambox table .mbox-text-span { list-style-type: disc; list-style-image: url(/w/skins/Vector/resources/skins.vector.styles/images/bullet-icon.svg); } /* Allow for hiding text in compact form */ .compact-ambox .hide-when-compact { display: none; } /* Hide (formatting) elements from screen, but not from screenreaders */ .visualhide { position: absolute; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden; } /* Remove underlines from certain links */ .nounderlines a, .IPA a:link, .IPA a:visited { text-decoration: none !important; } /* Standard Navigationsleisten, aka box hiding thingy from .de. Documentation at [[Wikipedia:NavFrame]]. */ div.NavFrame { margin: 0; padding: 4px; border: 1px solid #a2a9b1; text-align: center; border-collapse: collapse; font-size: 95%; } div.NavFrame + div.NavFrame { border-top-style: none; border-top-style: hidden; } div.NavFrame div.NavHead { line-height: 1.6em; font-weight: bold; background-color: #ccf; position: relative; } div.NavFrame p, div.NavFrame div.NavContent, div.NavFrame div.NavContent p { font-size: 100%; } a.NavToggle { position: absolute; top: 0; /* @noflip */ right: 3px; font-weight: normal; font-size: 90%; } /* Hatnotes and disambiguation notices */ .hatnote { font-style: italic; } .hatnote i { font-style: normal; } div.hatnote { /* @noflip */ padding-left: 1.6em; margin-bottom: 0.5em; } div.hatnote + div.hatnote { margin-top: -0.5em; } /* Allow transcluded pages to display in lists rather than a table. */ .listify td { display: list-item; } .listify tr { display: block; } .listify table { display: block; } /* Geographical coordinates defaults. See [[Template:Coord/link]] for how these are used. The classes "geo", "longitude", and "latitude" are used by the [[Geo microformat]]. */ /* TemplateStyles */ .geo-default, .geo-dms, .geo-dec { display: inline; } .geo-nondefault, .geo-multi-punct { display: none; } .longitude, .latitude { white-space: nowrap; } /* User block messages */ div.user-block { padding: 5px; margin-bottom: 0.5em; border: 1px solid #a9a9a9; background-color: #ffefd5; } /* Prevent line breaks in silly places: 1) Where desired 2) Links when we don't want them to 3) Bold "links" to the page itself */ .nowrap, .nowraplinks a, .nowraplinks .selflink { white-space: nowrap; } .nowrap pre { white-space: pre; } /* But allow wrapping where desired: */ .wrap, .wraplinks a { white-space: normal; } /* For template documentation */ /* TemplateStyles */ .template-documentation { clear: both; margin: 1em 0 0 0; border: 1px solid #a2a9b1; background-color: #ecfcf4; padding: 1em; } /* Increase the height of the image upload box */ #wpUploadDescription { height: 13em; } /* Minimum thumb width */ .thumbinner { min-width: 100px; } /* Prevent floating boxes from overlapping any category listings, file histories, edit previews, and edit [Show changes] views. */ #mw-subcategories, #mw-pages, #mw-category-media, #filehistory, #wikiPreview, #wikiDiff { clear: both; } /* Selectively hide headers in WikiProject banners */ /* TemplateStyles */ .wpb .wpb-header { display: none; } .wpbs-inner .wpb .wpb-header { display: block; /* for IE */ } .wpbs-inner .wpb .wpb-header { display: table-row; /* for real browsers */ } .wpbs-inner .wpb-outside { display: none; /* hide things that should only display outside shells */ } /* Styling for Abuse Filter tags */ .mw-tag-markers { font-style: italic; font-size: 90%; } /* Hide stuff meant for accounts with special permissions. Made visible again in [[MediaWiki:Group-checkuser.css]], [[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-patroller.css]], [[MediaWiki:Group-templateeditor.css]], [[MediaWiki:Group-extendedmover.css]], [[MediaWiki:Group-extendedconfirmed.css]], and [[Mediawiki:Group-autoconfirmed.css]]. */ .checkuser-show, .sysop-show, .patroller-show, .templateeditor-show, .extendedmover-show, .extendedconfirmed-show, .autoconfirmed-show, .user-show { display: none; } /* Hide the redlink generated by {{Editnotice}}, this overrides the ".sysop-show { display: none; }" above that applies to the same link as well. See [[phab:T45013]] Hide the images in editnotices to keep them readable in VE view. Long term, editnotices should become a core feature so that they can be designed responsive. */ .ve-ui-mwNoticesPopupTool-item .editnotice-redlink, .ve-ui-mwNoticesPopupTool-item .mbox-image, .ve-ui-mwNoticesPopupTool-item .mbox-imageright { display: none !important; } /* Remove bullets when there are multiple edit page warnings */ ul.permissions-errors > li { list-style: none none; } ul.permissions-errors { margin: 0; } /* Generic class for Times-based serif, texhtml class for inline math */ .times-serif, span.texhtml { font-family: "Nimbus Roman No9 L", "Times New Roman", Times, serif; font-size: 118%; line-height: 1; } span.texhtml { white-space: nowrap; } span.texhtml span.texhtml { font-size: 100%; } span.mwe-math-mathml-inline { font-size: 118%; } /* Force tabular and lining display for digits and texhtml */ .digits, .texhtml { -moz-font-feature-settings: "lnum", "tnum", "kern" 0; -webkit-font-feature-settings: "lnum", "tnum", "kern" 0; font-feature-settings: "lnum", "tnum", "kern" 0; font-variant-numeric: lining-nums tabular-nums; font-kerning: none; } /* Make <math display="block"> be left aligned with one space indent for compatibility with style conventions */ .mwe-math-fallback-image-display, .mwe-math-mathml-display { margin-left: 1.6em !important; margin-top: 0.6em; margin-bottom: 0.6em; } .mwe-math-mathml-display math { display: inline; } /* Fix styling of transcluded prefindex tables */ table#mw-prefixindex-list-table, table#mw-prefixindex-nav-table { width: 98%; } /* Make it possible to hide checkboxes in <inputbox> */ .inputbox-hidecheckboxes form .inputbox-element, .inputbox-hidecheckboxes .mw-ui-checkbox { display: none !important; } /* Work-around for [[phab:T25965]] / [[phab:T100106]] (Kaltura advertisement) */ .k-player .k-attribution { visibility: hidden; } /* Move 'play' button of video player to bottom left corner */ .PopUpMediaTransform a .play-btn-large { margin: 0; top: auto; right: auto; bottom: 0; left: 0; } /* Hide FlaggedRevs notice UI when there are no pending changes */ .flaggedrevs_draft_synced, .flaggedrevs_stable_synced { display: none; } /* Force imgs in galleries to have borders by wrapping them in class=bordered-images */ .bordered-images img { border: solid #ddd 1px; } /* Gallery styles background changes are restricted to screen view. In printing we should avoid applying backgrounds. */ @media screen { /* The backgrounds for galleries. */ #content .gallerybox div.thumb { /* Light gray padding */ background-color: #f8f9fa; } /* Put a chequered background behind images, only visible if they have transparency. '.filehistory a img' and '#file img:hover' are handled by MediaWiki core (as of 1.19) */ .gallerybox .thumb img { background: #fff url(//upload.wikimedia.org/wikipedia/commons/5/5d/Checker-16x16.png) repeat; } /* But not on articles, user pages, portals or with opt-out. */ .ns-0 .gallerybox .thumb img, .ns-2 .gallerybox .thumb img, .ns-100 .gallerybox .thumb img, .nochecker .gallerybox .thumb img { background-image: none; } } /* Display "From Wikipedia, the free encyclopedia" in skins that support it, do not apply to print mode @media screen { #siteSub { display: block; } }*/ /* Temporary measures to remove links in sidebar T255381*/ #t-upload { display: none; } #n-shoplink { display: none; } s2zwx8xhkagwm2qetptclfwxqk3rvmr MediaWiki:Common.js 8 2258 7013 7012 2023-11-01T10:09:28Z CBax 996 Blanked the page 7013 javascript text/javascript phoiac9h4m842xq45sp7s6u21eteeq1 MediaWiki:Sidebar 8 59 1818 1817 2020-09-26T20:57:27Z Chrisb 1 1818 wikitext text/x-wiki * navigation ** mainpage|mainpage-description ** recentchanges-url|recentchanges ** randompage-url|randompage ** Special:Users|Users ** helppage|help-mediawiki ** Shiny:Main_Page|Shiny Users * SEARCH * TOOLBOX * LANGUAGES bzz27rtsqms1tkqu9hnyrclf1r3qea5 MediaWiki:Sitenotice 8 2256 7028 7016 2023-12-02T15:05:32Z CBax 996 Blanked the page 7028 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 MediaWiki:Smw import foaf 8 825 1832 2020-09-27T17:48:40Z 127.0.0.1 Semantic MediaWiki default vocabulary import 1832 wikitext text/x-wiki http://xmlns.com/foaf/0.1/|[http://www.foaf-project.org/ Friend Of A Friend] name|Type:Text homepage|Type:URL mbox|Type:Email mbox_sha1sum|Type:Text depiction|Type:URL phone|Type:Text Person|Category Organization|Category knows|Type:Page member|Type:Page [[Category:Imported vocabulary]] 54j1f1u0gxrlqu4877gsk6vv72gs354 MediaWiki:Smw import owl 8 826 1833 2020-09-27T17:48:40Z 127.0.0.1 Semantic MediaWiki default vocabulary import 1833 wikitext text/x-wiki http://www.w3.org/2002/07/owl#|[http://www.w3.org/2002/07/owl Web Ontology Language (OWL)] AllDifferent|Category allValuesFrom|Type:Page AnnotationProperty|Category backwardCompatibleWith|Type:Page cardinality|Type:Number Class|Category comment|Type:Page complementOf|Type:Page DataRange|Category DatatypeProperty|Category DeprecatedClass|Category DeprecatedProperty|Category differentFrom|Type:Page disjointWith|Type:Page distinctMembers|Type:Page equivalentClass|Type:Page equivalentProperty|Type:Page FunctionalProperty|Category hasValue|Type:Page imports|Type:Page incompatibleWith|Type:Page intersectionOf|Type:Page InverseFunctionalProperty|Category inverseOf|Type:Page isDefinedBy|Type:Page label|Type:Page maxCardinality|Type:Number minCardinality|Type:Number Nothing|Category ObjectProperty|Category oneOf|Type:Page onProperty|Type:Page Ontology|Category OntologyProperty|Category owl|Type:Page priorVersion|Type:Page Restriction|Category sameAs|Type:Page seeAlso|Type:Page someValuesFrom|Type:Page SymmetricProperty|Category Thing|Category TransitiveProperty|Category unionOf|Type:Page versionInfo|Type:Page [[Category:Imported vocabulary]] mjrj8ysg8aclt8sddeabn26vvadmsuy MediaWiki:Smw import skos 8 824 1831 2020-09-27T17:48:39Z 127.0.0.1 Semantic MediaWiki default vocabulary import 1831 wikitext text/x-wiki http://www.w3.org/2004/02/skos/core#|[http://www.w3.org/TR/skos-reference/skos.rdf Simple Knowledge Organization System (SKOS)] altLabel|Type:Monolingual text broader|Type:Annotation URI broaderTransitive|Type:Annotation URI broadMatch|Type:Annotation URI changeNote|Type:Text closeMatch|Type:Annotation URI Collection|Class Concept|Class ConceptScheme|Class definition|Type:Text editorialNote|Type:Text exactMatch|Type:Annotation URI example|Type:Text hasTopConcept|Type:Page hiddenLabel|Type:String historyNote|Type:Text inScheme|Type:Page mappingRelation|Type:Page member|Type:Page memberList|Type:Page narrower|Type:Annotation URI narrowerTransitive|Type:Annotation URI narrowMatch|Type:Annotation URI notation|Type:Text note|Type:Text OrderedCollection|Class prefLabel|Type:String related|Type:Annotation URI relatedMatch|Type:Annotation URI scopeNote|Type:Text semanticRelation|Type:Page topConceptOf|Type:Page [[Category:Imported vocabulary]] 7uej7l6j7zibffqxeqr83oypfu8tya3 MediaWiki:Special404-body 8 2091 6251 2021-11-24T22:06:49Z Chrisb 1 Added all pages to 404 6251 wikitext text/x-wiki The URL you requested was not found. Did you mean to type {{fullurl:$1}}? Maybe you would like to look at: * [[{{MediaWiki:Mainpage}}|The main page]] =='''All pages'''== {{Special:AllPages}} ohbgumg7diz1w02ok3wodihr4bpkbmb MediaWiki:Vector.css 8 1418 3117 3116 2020-10-06T22:14:53Z Chrisb 1 3117 css text/css /* All CSS here will be loaded for users of the Vector skin */ div#mw-head { background: url('https://logi.wiki/images/e/e7/header.jpg') top center no-repeat; background-position: 350px 0px; height: 100px; } 1p4hdxoedz3jl8jt2bw35fzqyej7gyy Template:= 10 1492 4632 4631 2020-10-11T05:35:15Z Chrisb 1 1 revision imported 4631 wikitext text/x-wiki =<noinclude> {{documentation}} </noinclude> 81y2jvjxw3y0febsqx5xbr4ikdc7nr6 Template:Abbreviations 10 955 2142 2141 2020-09-29T19:17:27Z Chrisb 1 1 revision imported 2141 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = Abbreviations | subst= <includeonly>{{subst:substcheck}}</includeonly> | type = style | issue = This {{{1|article}}} '''uses [[abbreviation]]s that may be [[Wikipedia:Manual of Style#Acronyms and abbreviations|confusing or ambiguous]]{{#if:{{{2|}}}| (e.g. {{{2}}})}}.''' | fix = There might be a discussion about this on the {{#if:{{{talk|}}}|[[{{TALKPAGENAME}}#{{{talk}}}|{{{talk}}}]]|[[{{TALKPAGENAME}}|talk page]]}}. Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{{1|{{#if:{{NAMESPACE}}|{{NAMESPACE}} page|article}}}}}] if you can. | date = {{{date|}}} | removalnotice = yes }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}} }}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> fbsnysz9uvaodlga7217yx2gity9y1d Template:About 10 1633 4914 4913 2020-10-11T05:50:21Z Chrisb 1 1 revision imported 4913 wikitext text/x-wiki <includeonly>{{#invoke:about|about}}</includeonly><noinclude>{{Documentation}}</noinclude> sewwzp1otrriymoi2xy4csy1ag24qbn Template:Academic-written review 10 1234 2700 2699 2020-09-29T19:18:06Z Chrisb 1 1 revision imported 2699 wikitext text/x-wiki <!-------------------------- Top icon on non-talk pages --------------------------->{{#ifeq:{{FULLPAGENAMEE}}|{{TALKPAGENAMEE}}|| {{Top icon | imagename = Journal Icon.svg | wikilink = {{#if:{{{doi|}}}|https://dx.doi.org/{{{doi}}}|{{#if:{{{pmid|}}}|https://www.ncbi.nlm.nih.gov/pubmed/{{{pmid}}}|{{{link|{{{url|{{#invoke:WikidataIB |getValue |qid={{{Q|Q76846397}}} |P356 |fetchwikidata=ALL |onlysourced=no |noicon=true |prefix=https://doi.org/}}}}}}}}}}}} | description = This article was updated by an external expert under a dual publication model. The corresponding peer-reviewed article was published in the journal {{delink|{{trim|{{{1|{{{journal|{{#property:P1433|from={{{Q|{{{QID|}}}}}}}}}}}}}}}}}}. Click to view. | sortkey = {{{sortkey|}}} }} }} <!-------------------------- Main info --------------------------->{{ambox | type = notice | style = margin: 0 10%; border: 1px solid #aaa; border-left: 10px solid #1e90ff; background: #fbfbfb; | image = [[File:Journal Icon.svg|48px|Journal|link={{trim|{{#if:{{{doi|}}}|https://doi.org/{{{doi}}}|{{#if:{{{pmid|}}}|https://www.ncbi.nlm.nih.gov/pubmed/{{{pmid}}}|{{{link|{{{url|http://www.example.com}}}}}}}}}}}}]] | text = The {{#time:Y|{{{wikidate|{{#invoke:WikidataIB |getValue |qid={{{Q|}}} |P577 |fetchwikidata=ALL |onlysourced=no |noicon=true }}}}}}} version of this article was updated by an external expert under a dual publication model. The corresponding [[Scholarly_peer_review|academic peer reviewed]] article was published in '''''{{delink|{{trim|{{{1|{{{journal|{{#property:P1433|from={{{Q|{{{QID|}}}}}}}}}}}}}}}}}} ''''' and can be cited as:<br />{{#if:{{{Q|{{{QID|}}}}}} |{{cite Q|ref=none|{{{Q|{{{QID|}}}}}} }} |{{cite journal |ref=none |vauthors={{{vauthors|}}} |authors={{{authors|}}} |last1={{{last1|{{{last|}}}}}} |first1={{#if:{{{first2|}}}|{{#invoke:String|pos|{{{first1|{{{first|}}}}}}|1}}}} |last2={{{last2|}}} |first2={{#if:{{{first2|}}}|{{#invoke:String|pos|{{{first2|}}}|1}}}} |last3={{{last3|}}} |first3={{#if:{{{first3|}}}|{{#invoke:String|pos|{{{first3|}}}|1}}}} |last4={{{last4|}}} |first4={{#if:{{{first4|}}}|{{#invoke:String|pos|{{{first4|}}}|1}}}} |last5={{{last5|}}} |first5={{#if:{{{first5|}}}|{{#invoke:String|pos|{{{first5|}}}|1}}}} |last6={{{last6|}}} |first6={{#if:{{{first6|}}}|{{#invoke:String|pos|{{{first6|}}}|1}}}} |last7={{{last7|}}} |first7={{#if:{{{first7|}}}|{{#invoke:String|pos|{{{first7|}}}|1}}}} |last8={{{last8|}}} |first8={{#if:{{{first8|}}}|{{#invoke:String|pos|{{{first8|}}}|1}}}} |last9={{{last9}}} |first9={{#if:{{{first9|}}}|{{#invoke:String|pos|{{{first9|}}}|1}}}}|date={{{date|}}} |title={{{title|{{PAGENAME}}}}} |url={{trim|{{#if:{{{doi|}}}|https://dx.doi.org/{{{doi}}}|{{#if:{{{pmid|}}}|https://www.ncbi.nlm.nih.gov/pubmed/{{{pmid}}}|{{{link|{{{url|http://www.example.com}}}}}}}}}}}} |journal={{{1|{{{journal|}}}}}} |volume={{{volume|}}} |issue={{{issue|}}} |pages={{{pages|}}} |doi={{{doi|}}} |pmc={{{pmc|}}} |pmid={{{pmid|}}} }}}}}}<includeonly>{{Category handler |main=[[Category:Wikipedia articles with corresponding academic peer reviewed articles]] [[Category:Wikipedia articles with corresponding articles published in {{delink|{{trim|{{{1|{{{journal|{{#property:P1433|from={{{Q|{{{QID|}}}}}}}}}}}}}}}}}}]] |nocat={{{nocat|}}} }}</includeonly><noinclude> {{Documentation}} </noinclude> 16014xbsgjow7e3aocemi6cvi5yqdtz Template:Academic peer reviewed 10 1227 2686 2685 2020-09-29T19:18:05Z Chrisb 1 1 revision imported 2685 wikitext text/x-wiki {{talk other | {{Academic_peer_reviewed/talk|Q={{{1|{{{Q|Q76846397}}}}}}}} <!-- display as on talk --> | {{Academic_peer_reviewed/other|Q={{{1|{{{Q|Q76846397}}}}}}}} <!-- display as on mainspace and others--> | demospace = {{{demospace|}}} }} {{main other |{{Top icon | imagename = Journal Icon.svg | wikilink = https://doi.org/{{#property:P356|from={{{1|{{{Q|Q76846397}}}}}}}} | description = This article has been published in the peer-reviewed journal {{#property:P1433|from={{{1|{{{Q|Q76846397}}}}}}}} ({{year|{{#property:P577|from={{{1|{{{Q|Q76846397}}}}}}}}}}). Click to view the published version. | sortkey = {{{sortkey|}}} }}[[Category:Wikipedia articles published in peer-reviewed literature]] [[Category:Wikipedia articles published in {{trim|{{delink|{{{journal|{{#property:P1433|from={{{1|{{{Q|Q76846397}}}}}}}}}}}}}}}]] [[Category:Externally peer reviewed articles]] [[Category:Wikipedia articles incorporating text from open access publications]] {{#if:{{GetEtAl|{{{1|{{{Q|Q76846397}}}}}}}} |[[Category:Wikipedia articles published in peer-reviewed literature (W2J)]] |[[Category:Wikipedia articles published in peer-reviewed literature (J2W)]] }} }}<noinclude> {{documentation}} </noinclude> 4bl6mloh1nolcu2wbngc11brex8yr0s Template:Active 10 1493 4634 4633 2020-10-11T05:35:15Z Chrisb 1 1 revision imported 4633 wikitext text/x-wiki <noinclude> {| class="wikitable" |</noinclude>style="background: #9F9; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="active table-active"| {{{1|Active}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} [[Category:Software table cell templates]] </noinclude> 45qhx3ut4bat1fa5tj641sop0p16vpa Template:Active fire 10 1494 4636 4635 2020-10-11T05:35:15Z Chrisb 1 1 revision imported 4635 wikitext text/x-wiki <noinclude> {| class="wikitable" |</noinclude>style="background: #f99; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="no table-no"|Active {{nowrap|({{{1|}}})}}<noinclude> |} {{documentation}}</noinclude> m0k91dp5jmgltz7xz2xam6r375isbtk Template:Advert 10 956 2144 2143 2020-09-29T19:17:27Z Chrisb 1 1 revision imported 2143 wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = Advert | type = content | class= ambox-Advert | issue= This {{{1|article}}} '''contains content that is written like [[Wikipedia:What Wikipedia is not#Wikipedia is not a soapbox or means of promotion|{{#if:{{{2|{{{type|}}}}}}|{{{2|{{{type}}}}}}|an advertisement}}]]'''. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it] by removing [[WP:Spam|promotional content]] and inappropriate [[Wikipedia:External_links#Advertising_and_conflicts_of_interest|external links]], and by adding encyclopedic content written from a [[Wikipedia:Neutral point of view|neutral point of view]]. | removalnotice = yes | cat = Articles with a promotional tone | date = {{{date|}}} | all = All articles with a promotional tone }} }}<noinclude> {{documentation}} </noinclude> 58393qwkexvr52ixvb3xeba0vworvwc Template:AfD-userfied 10 1248 2728 2727 2020-09-29T19:18:08Z Chrisb 1 1 revision imported 2727 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = AfD-userfied | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = delete | sect = article | text = '''was moved to draft space pursuant to the deletion discussion at [[Wikipedia:Articles for deletion/{{{1}}}]] on {{{2}}}.''' | fix = Please do not restore this article to mainspace unless there has been substantial improvement to address the concerns raised in the deletion discussion. | all = | date={{#time:F Y}} }} }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> dzxhw9ek2i32qyaxxpxpdbe0nbnum4y Template:Afd-merge required 10 1158 2548 2547 2020-09-29T19:17:55Z Chrisb 1 1 revision imported 2547 wikitext text/x-wiki {{Ambox |name = Afd-merge required |subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> |type = move |style = background:#e4d8ff; |image = [[File:Merge-arrow.svg|50px|alt=|link=]] |text = This article was [[Wikipedia:Articles for deletion|nominated]] for [[Wikipedia:Deletion policy|deletion]]. [[Wikipedia:Articles for deletion/{{{2}}}|'''The debate''']] was closed {{#if: {{{3|}}} | on '''{{{3}}}'''}} with a consensus that the content of the article is to be [[Wikipedia:Merging|merged]] into another article, possibly ''[[{{{1}}}]]''. To discuss the proposed destination for the merge, please use [[Talk:{{BASEPAGENAME}}|the talk page]]. |cat = Articles to be merged |all = Articles to be merged after an Articles for deletion discussion |date = {{{date|}}} }}<noinclude> {{Documentation}} </noinclude> aeklsmj6lfde99c9ucuob37sj3qci7p Template:Afd-merge to 10 1238 2708 2707 2020-09-29T19:18:07Z Chrisb 1 1 revision imported 2707 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <templatestyles src="Afd-merge_to/styles.css" />{{Ambox |name=Afd-merge to |subst=<includeonly>{{subst:substcheck}}</includeonly> |type=move |class=ambox-mergeto |image=[[File:Merge-arrow.svg|50px|alt=|link=]] |text=This article was [[Wikipedia:Articles for deletion|nominated]] for [[Wikipedia:Deletion policy|deletion]]. [[Wikipedia:Articles for deletion/{{{2}}}|'''The discussion''']] was closed on '''{{{3}}}''' with a consensus to [[Wikipedia:Merging|merge]] the content into the article ''[[{{{1}}}]]''. If you find that such action has not been taken promptly, please consider assisting in the merger instead of re-nominating the article for deletion. To discuss the merger, please use [[Talk:{{{1}}}|the destination article's talk page]].<includeonly>{{#if:{{yesno|{{{nocat|}}}}}||[[Category:Articles to be merged after an Articles for deletion discussion|{{#time:Y-m-d|{{{3|{{{date|}}}}}}}}]]}}</includeonly> |cat=Articles to be merged |date={{#if:{{{date|}}}|{{{date}}}|{{#if:{{{3|}}}|{{#time:F Y|{{{3}}}}} }} }} |nocat={{{nocat|}}} }} }}<noinclude> {{Documentation}} </noinclude> a06t73xyl8t4m6qr53qukmls65d49mv Template:Afdnotice2 10 957 2146 2145 2020-09-29T19:17:27Z Chrisb 1 1 revision imported 2145 wikitext text/x-wiki {{ambox | name = Afdnotice2 | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | small = {{{small|}}} | type = delete | issue = The related article '''[[{{{1|UNKNOWN}}}]]''' has been nominated for '''deletion''' (but could be merged or renamed). | fix = You are encouraged to join the '''[[Wikipedia:Articles for deletion/{{#if:{{{2|}}}|{{{2}}}|{{{1|UNKNOWN}}}}}|discussion]]''' on the [[Wikipedia:Articles for deletion|Articles for deletion]] page. | all = Articles for deletion notices }}<noinclude> {{Documentation}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --> </noinclude> 5kmsqb79wqjxrbftn1761d37ikft2m5 Template:Aligned table 10 1642 4932 4931 2020-10-11T05:50:38Z Chrisb 1 1 revision imported 4931 wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:aligned table|table}}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> atstqes86pjj6hoiczcmfvhjlawblhx Template:All plot 10 958 2148 2147 2020-09-29T19:17:27Z Chrisb 1 1 revision imported 2147 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{All plot}} begin-->{{Ambox | name = All plot | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | class = ambox-all_plot | issue = This {{{1|article}}} '''consists almost entirely of a [[Wikipedia:What Wikipedia is not#PLOT|plot summary]]'''. It should be expanded to provide more balanced coverage that includes [[Wikipedia:Manual of Style/Writing about fiction#Real-world perspective|real-world context]]. | fix = Please [{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} edit the {{{1|article}}}] to [[Wikipedia:Manual of Style/Writing about fiction|focus on discussing the work]] rather than merely reiterating the plot. | removalnotice = yes | date = {{{date|}}} | cat = Articles to be expanded | all = All articles to be expanded }}<!--{{All plot}} end--> }}<noinclude> {{Documentation}} </noinclude> 8y1v8ax70ssfdtowgb5cewdapexi8tg Template:Almanac 10 929 2090 2089 2020-09-29T19:17:24Z Chrisb 1 1 revision imported 2089 wikitext text/x-wiki {{ambox | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | issue = This {{#if:{{{section|}}}|section|{{#if:{{{list|}}}|list|article}} }} concentrates unduly on statistical information. '''[[WP:NOT#STATS|Wikipedia is not an indiscriminate collection of information]]''' and long lists of statistics may be confusing to readers and reduce the readability and neatness of our articles. | fix = In addition, articles should contain sufficient explanatory text to put statistics within the article in their proper context for a general reader ([[{{TALKPAGENAME}}|Discuss]]) | date= {{{date|}}} | removalnotice = yes | name = Almanac }}<noinclude> {{documentation}} </noinclude> bvje9eigqy68jbvnufh7z3f48h45wgi Template:Alphabetize 10 959 2150 2149 2020-09-29T19:17:28Z Chrisb 1 1 revision imported 2149 wikitext text/x-wiki <!-- {{Alphabetize}} begin -->{{Ambox | name = Alphabetize | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | issue = This list needs to be '''[[Help:Sorting#Initial alphabetical sort versus initial sort by rank order|alphabetized]]'''. See [[Help:Sorting]]. | fix = | cat = Lists that need to be alphabetized | small = {{{small|}}} }}<!-- {{Alphabetize}} end --><noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> i5k4ltsqmv7b1q5fsr3siw6592ya6ma Template:Alumni 10 940 2112 2111 2020-09-29T19:17:25Z Chrisb 1 1 revision imported 2111 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{ambox | subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | issue = This {{#switch:{{{1}}} |residents = article's list of residents |SAL = alumni list |SALpeople = list of people |people = article's list of people |#default = article's list of alumni }} '''may not follow Wikipedia's [[Wikipedia:Verifiability|verifiability]] policy'''. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by removing names that do not have independent [[Wikipedia:Reliable sources|reliable sources]] showing they merit inclusion in this article AND {{#switch:{{{1}}} |residents = residents |SALpeople |people = members of this list |SAL |#default = alumni }}, or by incorporating the relevant publications into the body of the article through appropriate [[Wikipedia:Citing sources|citations]]. | cat = Articles needing cleanup | date = {{{date|}}} | all = All pages needing cleanup | name = Alumni }} }}<noinclude> {{documentation}} </noinclude> 083gippuuieaqrtyxeuyobrjnabp5s1 Template:Ambox 10 914 2060 2059 2020-09-29T19:17:22Z Chrisb 1 1 revision imported 2059 wikitext text/x-wiki {{#invoke:Message box|ambox}}{{#ifeq:{{{small}}}|left|[[Category:Articles using small message boxes]]}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> j0j11qao0sl45x6kzzme1ycda7wiz9f Template:Ambox/doc 10 1312 2856 2855 2020-09-29T19:18:20Z Chrisb 1 1 revision imported 2855 wikitext text/x-wiki {{Documentation subpage}} <!-- Please add categories to the /doc subpage, and interwikis at Wikidata (see Wikipedia:Wikidata) --> {{High-risk| 1350227 |all-pages = yes}} {{Lua|Module:Message box}} {{Mbox templates (small)}} {{tl|Ambox}} stands for '''A'''rticle '''m'''essage '''box''' which is a [[Help:Metatemplating|metatemplate]]. It is used to build message boxes for templates used in '''articles''', such as {{tl|Underlinked}}. It offers several different colours, images and some other features. == Common parameters == The box below shows the most common parameters that are accepted by {{Tl|Ambox}}. The purpose of each is described below. <pre> {{Ambox | name = | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = | image = | sect = {{{1|}}} | issue = | talk = {{{talk|}}} | fix = | date = {{{date|}}} | cat = | all = }} </pre> === ''name'' === The ''name'' parameter specifies the name of the template, without the Template namespace prefix. For example {{Tl|Underlinked}} specifies {{Para|name|Underlinked}}. This parameter should be updated if the template is ever moved. The purpose of this parameter is twofold: * If incorrectly [[Wikipedia:Substitution|substituted]], it allows the meta-template to notify the name of the template which has been substituted, which may help editors to fix the problem. * It allows the template to have a more useful display on its template page, for example to show the date even when not specified, and to apply categorisation of the template itself. === ''subst'' === The ''subst'' parameter allows the meta-template to detect whether the template has been incorrectly substituted, and give an appropriate warning. It will also add such pages to [[:Category:Pages with incorrectly substituted templates]]. Just copy the code exactly as it appears in the box. === ''small'' === The ''small'' parameter should be passed through the template, as this will allow editors to use the small format by specifying {{para|small|left}} on an article: {{Ambox|nocat=true|small=left|text=This is the small left-aligned Ambox format.}} Otherwise the standard format will be produced: {{Ambox|nocat=true|text=This is the standard Ambox format.}} Other variations: * For templates which should ''never'' be small, specify {{Para|small|no}} or do not pass the small parameter at all. * For templates which should ''always'' be small, just specify {{Para|small|left}}. * For templates which should ''default to small'', try {{para|small|<nowiki>{{{small|left}}}</nowiki>}}. This will allow an editor to override by using {{para|small|no}} on an article. To use a small box that adjusts its width to match the text, use {{para|style|width: auto; margin-right: 0px;}} and {{para|textstyle|width: auto;}} together: {{Ambox|nocat=true|small=left|style=width: auto; margin-right: 0px;|textstyle=width: auto; margin-right: 0px;|text=This is the small left-aligned Ambox format with flexible width.}} See {{section link||sect}} below for more information on how to limit {{para|small}} display to cases when the template is being used for a section instead of the whole article (recommended, to prevent inconsistent top-of-article display). === ''type'' === The ''type'' parameter defines the colour of the left bar, and the image that is used by default. The type is chosen not on aesthetics but is based on the type of issue that the template describes. The seven available types and their default images are shown below. {{Ambox |nocat=true | type = speedy | text = type=<u>speedy</u> – Speedy deletion issues, such as {{tl|db-g1}} and {{tl|db-g3}}. }} {{Ambox |nocat=true | type = delete | text = type=<u>delete</u> – Deletion issues, such as {{tl|article for deletion}} and {{tl|proposed deletion}}. }} {{Ambox |nocat=true | type = content | text = type=<u>content</u> – Content issues, such as {{tl|POV}} and {{tl|globalize}}. }} {{Ambox |nocat=true | type = style | text = type=<u>style</u> – Style issues, such as {{tl|cleanup}} and {{tl|underlinked}}. }} {{ambox |nocat=true | type = notice | text = type=<u>notice</u> – Article notices, such as {{tl|current}} and {{tl|in use}}. }} {{Ambox |nocat=true | type = move | text = type=<u>move</u> – Merge, split and transwiki proposals, such as {{tl|split}} and {{tl|copy to Wiktionary}}. }} {{Ambox |nocat=true | type = protection | text = type=<u>protection</u> – Protection notices, such as {{tl|pp-vandalism}} and {{tl|pp-protected}}. }} If no ''type'' parameter is given the template defaults to {{para|type|notice}}. === ''image'' === You can choose a specific image to use for the template by using the ''image'' parameter. Images are specified using the standard syntax for inserting files in Wikipedia (see [[Wikipedia:Manual of Style/Images#How to place an image]].) Widths of 40-50px are typical. For example: * {{Tl|POV}} specifies {{Para|image|<nowiki>[[File:Unbalanced scales.svg|40px|link=|alt=]]</nowiki>}} and looks like this: {{POV|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} * {{tl|underlinked}} specifies {{para|image|<nowiki>[[File:Ambox wikify.svg|50x40px|link=|alt=]]</nowiki>}} and looks like this: {{underlinked|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} Please note: * If no image is specified then the default image corresponding to the ''type'' is used. (See [[#type]] above.) * If {{para|image|none}} is specified, then no image is used and the text uses the whole message box area. * If an icon is [[Wikipedia:Alternative text for images#Purely decorative images|purely decorative]] and also in the [[Wikipedia:Image use policy#Public_domain|public domain]], [[Wikipedia:Manual of Style/Accessibility|accessibility]] can be improved by suppressing the link to the file page by adding "{{para|link}}{{para|alt}}" as seen above. === ''sect'' === Many article message templates begin with the text '''This article ...''' and it is often desirable that this wording change to '''This section ...''' if the template is used on a section instead. The value of this parameter will replace the word "article". Various possibilities for use include: {{para|sect|list}}, {{para|sect|table}}, {{para|sect|"In popular culture" material}}, etc. {{em|If using this feature, be sure to remove the first two words ("This article") from the template's text, otherwise it will be duplicated.}} A common way to facilitate this functionality is to pass {{para|sect|<nowiki>{{{1|}}}</nowiki>}}. This will allow editors to type <kbd>section</kbd>, for example, as the first unnamed parameter of the template to change the wording. For example, {{tlx|Advert|section}} produces: {{Advert|section|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} Another approach is to pass {{para|sect|<nowiki>{{{section|{{{sect|}}}}}}</nowiki>}} to provide a named value. Another is to use {{tlx|Yesno}} to parse the value for a positive, and pass {{para|sect|section}} if true. {{em|These approaches can be combined}}, and this is recommended. The following ready-to-use code: {{block indent|1=<code><nowiki>| sect = {{#ifeq:{{yesno|def=|1={{{sect|{{{section}}}}}} }}|yes|section|{{{sect|{{{section|{{{1|}}}}}}}}} }}</nowiki></code>}} enables the following: * Any positive value that {{tlx|Yesno}} can detect will be used with the named parameter in the ambox-based template to get "section" instead of "article": {{para|section|y}}, {{para|sect|True}}, etc. It is recommended to allow both {{para|sect}} and {{para|section}} so that editors do not have to guess which one will work. The sample code above does this for you. * Any other value passed, in any manner, will replace "article": {{para||section and its subsections}}, {{para|1|list}}, {{para|sect|section}}, {{para|section|table}}, etc. It is also advisable to restrict use of the {{para|small}} parameter so that it is made contingent upon the template being applied to a section (or whatever) rather than the whole article, to prevent the small version of the template being used at the top of the article where it would be inconsistent with other article-wide cleanup/dispute banners: {{block indent|1=<code><nowiki>| small = {{#if:{{{sect|{{{section|{{{1|}}}}}}}}}|{{#if:{{{small|{{{left|}}}}}}|left}} }}</nowiki></code>}} (In this case, any value of {{para|small}} or {{para|left}} will trigger the small, left display, as long as some value of {{para|sect}} or one of its aliases in that template has also been provided.) This code can be copy-pasted and used with the above code block. See, e.g., [[Template:Trivia]] and its [[Template:Trivia/testcases]] to observe the combined functionality. === ''issue'' and ''fix'' === The ''issue'' parameter is used to describe the issue with the article. Try to keep it short and to-the-point (approximately 10-20 words) and be sure to include a link to a relevant [[Wikipedia:Policies and guidelines|policy or guideline]]. The ''fix'' parameter contains some text which describes what should be done to improve the article. It may be longer than the text in ''issue'', but should not usually be more than two sentences. When the template is in its compact form (when placed inside {{tl|multiple issues}}) or small form (when using {{para|small|left}}), the ''issue'' is the only text that will be displayed. For example, {{Tl|Citation style}} defines * <code>|issue=<nowiki>This article '''has an unclear citation style'''.</nowiki></code> * <code>|fix=<nowiki>The references used may be made clearer with a different or consistent style of [[Wikipedia:Citing sources|citation]], [[Wikipedia:Footnotes|footnoting]], or [[Wikipedia:External links|external linking]].</nowiki></code> When used stand-alone it produces the whole text: {{Citation style|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} But when used inside {{Tl|Multiple issues}} or with {{Para|small|left}} it displays only the issue: {{Multiple issues <!-- Even though there's only one "issue", please don't remove this {{Multiple issues}} template. It is a demonstration of the formatting. --> |{{Citation style|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}}} {{Citation style|small=left|date={{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} === ''talk'' === Some article message templates include a link to the talk page, and allow an editor to specify a section heading to link directly to the relevant section. To achieve this functionality, simply pass the ''talk'' parameter through, i.e. {{para|talk|<nowiki>{{{talk|}}}</nowiki>}} This parameter may then be used by an editor as follows: * {{para|talk|SECTION HEADING}} – the link will point to the specified section on the article's talk page, e.g. {{para|talk|Foo}} * {{para|talk|FULL PAGE NAME}} – the template will link to the page specified (which may include a [[Help:Link#Section linking (anchors)|section anchor]]), e.g. {{para|talk|Talk:Banana#Foo}} Notes: * When this parameter is used by a template, the talk page link will appear on the template itself (in order to demonstrate the functionality) but this will only display on articles if the parameter is actually defined. * In order to make sure there is always a link to the talk page, you can use {{para|talk|<nowiki>{{{talk|#}}}</nowiki>}}. * If the talk page does not exist, there will be no link, whatever the value of the parameter. === ''date'' === Passing the ''date'' parameter through to the meta-template means that the date that the article is tagged may be specified by an editor (or more commonly a [[Wikipedia:Bots|bot]]). This will be displayed after the message in a smaller font. Passing this parameter also enables [[:Category:Wikipedia maintenance categories sorted by month|monthly cleanup categorisation]] when the ''cat'' parameter is also defined. === ''info'' === This parameter is for specifying additional information. Whatever you add here will appear after the date, and will not be displayed if the template is being wrapped in {{tl|multiple issues}}. === ''removalnotice'' === If you specify {{para|removalnotice|yes}}, then the following notice will be displayed after the date and after the ''info'' text: * <small>[[Help:Maintenance template removal|Learn how and when to remove this template message]].</small> This will not be displayed if the template is being wrapped in {{tl|multiple issues}}. === ''cat'' === This parameter defines a monthly cleanup category. If {{para|cat|CATEGORY}} then: * articles will be placed in '''Category:CATEGORY from DATE''' if {{para|date|DATE}} is specified. * articles will be placed in '''Category:CATEGORY''' if the date is not specified. For example, {{Tl|No footnotes}} specifies {{Para|cat|Articles lacking in-text citations}} and so an article with the template {{Tlx|No footnotes|2=date=June 2010}} will be placed in [[:Category:Articles lacking in-text citations from June 2010]]. The ''cat'' parameter should not be linked, nor should the prefix <code>Category:</code> be used. === ''all'' === The ''all'' parameter defines a category into which all articles should be placed. The ''all'' parameter should not be linked, nor should the prefix <code>Category:</code> be used. == Other parameters == {| class="wikitable" align="right" style="background:transparent; width=25%;" !All parameters |- |<pre style="font-size:85%"> {{Ambox | name = | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = | image = | imageright = | smallimage = | smallimageright = | class = | style = | textstyle = | sect = {{{1|}}} | issue = | talk = {{{talk|}}} | fix = | date = {{{date|}}} | text = | smalltext = | plainlinks = no | removalnotice = | cat = | all = | cat2 = | all2 = | cat3 = | all3 = }} </pre> |} The "All parameters" box shows all possible parameters for this template. However, it is not recommended to copy this, because it will never be required to use all parameters simultaneously. === ''imageright'' === An image on the right side of the message box may be specified using this parameter. The syntax is the same as for the ''image'' parameter, except that the default is no image. === ''smallimage'' and ''smallimageright'' === Images for the small format box may be specified using these parameters. They will have no effect unless {{para|small|left}} is specified. === ''class'' === Custom [[Cascading Style Sheets|CSS]] classes to apply to the box. If adding multiple classes, they should be space-separated. === ''style'' and ''textstyle'' === Optional CSS values may be defined, without quotation marks <code>" "</code> but with the ending semicolons <code>;</code>. * ''style'' specifies the style used by the entire message box table. This can be used to do things such as modifying the width of the box. * ''textstyle'' relates to the text cell. === ''text'' and ''smalltext'' === Instead of specifying the ''issue'' and the ''fix'' it is possible to use the ''text'' parameter instead. Customised text for the small format can be defined using ''smalltext''. === ''plainlinks'' === Normally on Wikipedia, external links have an arrow icon next to them, like this: [http://www.example.com Example.com]. However, in message boxes, the arrow icon is suppressed by default, like this: <span class="plainlinks">[http://www.example.com Example.com]</span>. To get the normal style of external link with the arrow icon, use {{para|plainlinks|no}}. === ''cat2'', ''cat3'', ''all2'', and ''all3'' === * ''cat2'' and ''cat3'' provide for additional monthly categories; see [[#cat]]. * ''all2'' and ''all3'' provide for additional categories into which all articles are placed, just like [[#all]]. == Technical notes == * This meta-template uses the ambox CSS classes in [[MediaWiki:Common.css]]. The classes can also be used directly in a [[Help:Table|wikitable]] if special functionality is needed. See the [[Wikipedia:Ambox classes|how-to guide]] for that. * If you need to use special characters in the text parameter then you need to escape them like this: <pre> {{Ambox | text = <div> Equal sign = and a start and end brace { } work fine as they are. But here is a pipe &amp;#124; and two end braces &lt;nowiki>}}&lt;/nowiki>. And now a pipe and end braces &lt;nowiki>|}}&lt;/nowiki>. </div> }} </pre> {{Ambox |nocat=true | text = <div> Equal sign = and a start and end brace { } work fine as they are. But here is a pipe &#124; and two end braces <nowiki>}}</nowiki>. And now a pipe and end braces <nowiki>|}}</nowiki>. </div> }} * The <code>&lt;div></code> tags that surround the text in the example above are usually not needed. But if the text contains line breaks then sometimes we get weird line spacing. This especially happens when using vertical dotted lists. Then use the div tags to fix that. * This template uses CSS classes in [[MediaWiki:Common.css]] for most of its looks, thus it is fully skinnable. * This template calls [[Module:Message box]] which holds most of the code for {{Tl|Ambox}}, while {{Tl|Ambox}} itself does parameter preprocessing. * Internally, this meta-template uses HTML markup instead of wikimarkup for the table code. That is the usual way meta-templates are made, since wikimarkup has several drawbacks. For instance, it makes it harder to use [[m:Help:ParserFunctions|parser functions]] and some special characters in parameters. * The default images for this meta-template are in png format instead of svg format. The main reason is that some older web browsers have trouble with the transparent background that MediaWiki renders for svg images. The png images here have hand optimised transparent background colour so they look good in all browsers. Note that svg icons only look somewhat bad in the old browsers, thus such hand optimisation is only worth the trouble for very widely used icons. * For more technical details see the [[Template talk:Ambox|talk page]] and the "See also" links below. Since this template works almost exactly like {{Tl|Tmbox}}, {{Tl|Imbox}}, {{Tl|Cmbox}} and {{Tl|Ombox}} their talk pages and related pages might also contain more details. == Mbox family == {{Mbox templates see also}} == See also == * [[Wikipedia:Ambox CSS classes|Wikipedia:Ambox CSS classes]] – Describes how to use the ambox CSS classes directly in [[Help:Table|wikitables]] and [[HTML element#Tables|HTML tables]]. * [[Wikipedia:Article message boxes|Wikipedia:Article message boxes]] – The style guideline for creating article message boxes. * [[Wikipedia talk:Article message boxes|Wikipedia talk:Article message boxes]] – For discussion about these matters. <includeonly>{{sandbox other|| <!-- Add categories below this line, and interwikis at Wikidata --> [[Category:Article message templates| ]] [[Category:Mbox and messagebox templates]] [[Category:Exclude in print]] }}</includeonly> ry8mh39zofulrcm5llnv0jvey9a5hdi Template:Ambox/testcases 10 1193 2618 2617 2020-09-29T19:18:01Z Chrisb 1 1 revision imported 2617 wikitext text/x-wiki {{template test cases notice}} = Intentional changes = == small=y text=text == ;Main <code><nowiki>{{ambox|small=y|text=text}}</nowiki></code> {{ambox|small=y|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|small=y|text=text}}</nowiki></code> {{ambox/sandbox|small=y|text=text}} {{clear}} == small=true text=text == ;Main <code><nowiki>{{ambox|small=true|text=text}}</nowiki></code> {{ambox|small=true|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|small=true|text=text}}</nowiki></code> {{ambox/sandbox|small=true|text=text}} {{clear}} == small=1 text=text == ;Main <code><nowiki>{{ambox|small=1|text=text}}</nowiki></code> {{ambox|small=1|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|small=1|text=text}}</nowiki></code> {{ambox/sandbox|small=1|text=text}} {{clear}} == nocat=yes text=text == ;Main <code><nowiki>{{ambox|nocat=yes|text=text}}</nowiki></code> {{ambox|nocat=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|nocat=yes|text=text}}</nowiki></code> {{ambox/sandbox|nocat=yes|text=text}} {{clear}} == nocat=y text=text == ;Main <code><nowiki>{{ambox|nocat=y|text=text}}</nowiki></code> {{ambox|nocat=y|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|nocat=y|text=text}}</nowiki></code> {{ambox/sandbox|nocat=y|text=text}} {{clear}} == nocat=1 text=text == ;Main <code><nowiki>{{ambox|nocat=1|text=text}}</nowiki></code> {{ambox|nocat=1|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|nocat=1|text=text}}</nowiki></code> {{ambox/sandbox|nocat=1|text=text}} {{clear}} == nocat=no text=text == ;Main <code><nowiki>{{ambox|nocat=no|text=text}}</nowiki></code> {{ambox|nocat=no|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|nocat=no|text=text}}</nowiki></code> {{ambox/sandbox|nocat=no|text=text}} {{clear}} == nocat=n text=text == ;Main <code><nowiki>{{ambox|nocat=n|text=text}}</nowiki></code> {{ambox|nocat=n|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|nocat=n|text=text}}</nowiki></code> {{ambox/sandbox|nocat=n|text=text}} {{clear}} == nocat=0 text=text == ;Main <code><nowiki>{{ambox|nocat=0|text=text}}</nowiki></code> {{ambox|nocat=0|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|nocat=0|text=text}}</nowiki></code> {{ambox/sandbox|nocat=0|text=text}} {{clear}} == cat4=cat4 text=text == ;Main <code><nowiki>{{ambox|cat4=[[cat4]]|text=text}}</nowiki></code> {{ambox|cat4=[[cat4]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|cat4=[[cat4]]|text=text}}</nowiki></code> {{ambox/sandbox|cat4=[[cat4]]|text=text}} {{clear}} == category4=category4 text=text == ;Main <code><nowiki>{{ambox|category4=[[category4]]|text=text}}</nowiki></code> {{ambox|category4=[[category4]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|category4=[[category4]]|text=text}}</nowiki></code> {{ambox/sandbox|category4=[[category4]]|text=text}} {{clear}} == all4=all4 text=text == ;Main <code><nowiki>{{ambox|all4=[[all4]]|text=text}}</nowiki></code> {{ambox|all4=[[all4]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|all4=[[all4]]|text=text}}</nowiki></code> {{ambox/sandbox|all4=[[all4]]|text=text}} {{clear}} == talk= name=foo page=template:foo text=text == ;Main <code><nowiki>{{ambox|talk=|name=foo|page=template:foo|text=text}}</nowiki></code> {{ambox|talk=|name=foo|page=template:foo|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|talk=|name=foo|page=template:foo|text=text}}</nowiki></code> {{ambox/sandbox|talk=|name=foo|page=template:foo|text=text}} {{clear}} == talk= name=foo page=template:foo text=text == ;Main <code><nowiki>{{ambox|talk= |name=foo|page=template:foo|text=text}}</nowiki></code> {{ambox|talk= |name=foo|page=template:foo|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|talk= |name=foo|page=template:foo|text=text}}</nowiki></code> {{ambox/sandbox|talk= |name=foo|page=template:foo|text=text}} {{clear}} == name=foo page=template:foo text=text == ;Main <code><nowiki>{{ambox|name=foo|page=template:foo|text=text}}</nowiki></code> {{ambox|name=foo|page=template:foo|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|name=foo|page=template:foo|text=text}}</nowiki></code> {{ambox/sandbox|name=foo|page=template:foo|text=text}} {{clear}} == date= name=foo page=template:foo text=text == ;Main <code><nowiki>{{ambox|date=|name=foo|page=template:foo|text=text}}</nowiki></code> {{ambox|date=|name=foo|page=template:foo|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|date=|name=foo|page=template:foo|text=text}}</nowiki></code> {{ambox/sandbox|date=|name=foo|page=template:foo|text=text}} {{clear}} == date= name=foo page=template:foo text=text == ;Main <code><nowiki>{{ambox|date= |name=foo|page=template:foo|text=text}}</nowiki></code> {{ambox|date= |name=foo|page=template:foo|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|date= |name=foo|page=template:foo|text=text}}</nowiki></code> {{ambox/sandbox|date= |name=foo|page=template:foo|text=text}} {{clear}} == name=foo page=template:foo text=text == ;Main <code><nowiki>{{ambox|name=foo|page=template:foo|text=text}}</nowiki></code> {{ambox|name=foo|page=template:foo|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|name=foo|page=template:foo|text=text}}</nowiki></code> {{ambox/sandbox|name=foo|page=template:foo|text=text}} {{clear}} == page=Template:Foo name=Foo text=text == ;Main <code><nowiki>{{ambox|page=Template:Foo|name=Foo|text=text}}</nowiki></code> {{ambox|page=Template:Foo|name=Foo|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|page=Template:Foo|name=Foo|text=text}}</nowiki></code> {{ambox/sandbox|page=Template:Foo|name=Foo|text=text}} {{clear}} == page=Template:Foo name=Foo issue=issue text=text == ;Main <code><nowiki>{{ambox|page=Template:Foo|name=Foo|issue=issue|text=text}}</nowiki></code> {{ambox|page=Template:Foo|name=Foo|issue=issue|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|page=Template:Foo|name=Foo|issue=issue|text=text}}</nowiki></code> {{ambox/sandbox|page=Template:Foo|name=Foo|issue=issue|text=text}} {{clear}} == page=Template:Foo name=Foo fix=fix text=text == ;Main <code><nowiki>{{ambox|page=Template:Foo|name=Foo|fix=fix|text=text}}</nowiki></code> {{ambox|page=Template:Foo|name=Foo|fix=fix|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|page=Template:Foo|name=Foo|fix=fix|text=text}}</nowiki></code> {{ambox/sandbox|page=Template:Foo|name=Foo|fix=fix|text=text}} {{clear}} == page=Template:Foo name=Foo subst=subst text=text == ;Main <code><nowiki>{{ambox|page=Template:Foo|name=Foo|subst=subst|text=text}}</nowiki></code> {{ambox|page=Template:Foo|name=Foo|subst=subst|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|page=Template:Foo|name=Foo|subst=subst|text=text}}</nowiki></code> {{ambox/sandbox|page=Template:Foo|name=Foo|subst=subst|text=text}} {{clear}} == page=Template:Foo name=Foo subst=subst issue=issue fix=fix text=text == ;Main <code><nowiki>{{ambox|page=Template:Foo|name=Foo|subst=subst|issue=issue|fix=fix|text=text}}</nowiki></code> {{ambox|page=Template:Foo|name=Foo|subst=subst|issue=issue|fix=fix|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|page=Template:Foo|name=Foo|subst=subst|issue=issue|fix=fix|text=text}}</nowiki></code> {{ambox/sandbox|page=Template:Foo|name=Foo|subst=subst|issue=issue|fix=fix|text=text}} {{clear}} == page=Template:Foo name=Foo category1=category1 text=text == ;Main <code><nowiki>{{ambox|page=Template:Foo|name=Foo|category1=[[category1]]|text=text}}</nowiki></code> {{ambox|page=Template:Foo|name=Foo|category1=[[category1]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|page=Template:Foo|name=Foo|category1=[[category1]]|text=text}}</nowiki></code> {{ambox/sandbox|page=Template:Foo|name=Foo|category1=[[category1]]|text=text}} {{clear}} == page=Template:Foo name=Foo category2=category2 text=text == ;Main <code><nowiki>{{ambox|page=Template:Foo|name=Foo|category2=[[category2]]|text=text}}</nowiki></code> {{ambox|page=Template:Foo|name=Foo|category2=[[category2]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|page=Template:Foo|name=Foo|category2=[[category2]]|text=text}}</nowiki></code> {{ambox/sandbox|page=Template:Foo|name=Foo|category2=[[category2]]|text=text}} {{clear}} == page=Template:Foo name=Foo category3=category3 text=text == ;Main <code><nowiki>{{ambox|page=Template:Foo|name=Foo|category3=[[category3]]|text=text}}</nowiki></code> {{ambox|page=Template:Foo|name=Foo|category3=[[category3]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|page=Template:Foo|name=Foo|category3=[[category3]]|text=text}}</nowiki></code> {{ambox/sandbox|page=Template:Foo|name=Foo|category3=[[category3]]|text=text}} {{clear}} = Cases that should be the same as the existing template output = == subst=SUBST text=text == ;Main <code><nowiki>{{ambox|subst=SUBST|text=text}}</nowiki></code> {{ambox|subst=SUBST|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|subst=SUBST|text=text}}</nowiki></code> {{ambox/sandbox|subst=SUBST|text=text}} {{clear}} == subst= SUBST text=text == ;Main <code><nowiki>{{ambox|subst= SUBST |text=text}}</nowiki></code> {{ambox|subst= SUBST |text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|subst= SUBST |text=text}}</nowiki></code> {{ambox/sandbox|subst= SUBST |text=text}} {{clear}} == subst=subst text=text == ;Main <code><nowiki>{{ambox|subst=subst|text=text}}</nowiki></code> {{ambox|subst=subst|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|subst=subst|text=text}}</nowiki></code> {{ambox/sandbox|subst=subst|text=text}} {{clear}} == subst=foo text=text == ;Main <code><nowiki>{{ambox|subst=foo|text=text}}</nowiki></code> {{ambox|subst=foo|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|subst=foo|text=text}}</nowiki></code> {{ambox/sandbox|subst=foo|text=text}} {{clear}} == subst= text=text == ;Main <code><nowiki>{{ambox|subst= |text=text}}</nowiki></code> {{ambox|subst= |text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|subst= |text=text}}</nowiki></code> {{ambox/sandbox|subst= |text=text}} {{clear}} == subst= text=text == ;Main <code><nowiki>{{ambox|subst=|text=text}}</nowiki></code> {{ambox|subst=|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|subst=|text=text}}</nowiki></code> {{ambox/sandbox|subst=|text=text}} {{clear}} == subst=SUBST name=Foo text=text == ;Main <code><nowiki>{{ambox|subst=SUBST|name=Foo|text=text}}</nowiki></code> {{ambox|subst=SUBST|name=Foo|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|subst=SUBST|name=Foo|text=text}}</nowiki></code> {{ambox/sandbox|subst=SUBST|name=Foo|text=text}} {{clear}} == name=Foo text=text == ;Main <code><nowiki>{{ambox|name=Foo|text=text}}</nowiki></code> {{ambox|name=Foo|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|name=Foo|text=text}}</nowiki></code> {{ambox/sandbox|name=Foo|text=text}} {{clear}} == name= Foo text=text == ;Main <code><nowiki>{{ambox|name= Foo |text=text}}</nowiki></code> {{ambox|name= Foo |text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|name= Foo |text=text}}</nowiki></code> {{ambox/sandbox|name= Foo |text=text}} {{clear}} == name= text=text == ;Main <code><nowiki>{{ambox|name= |text=text}}</nowiki></code> {{ambox|name= |text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|name= |text=text}}</nowiki></code> {{ambox/sandbox|name= |text=text}} {{clear}} == name= text=text == ;Main <code><nowiki>{{ambox|name=|text=text}}</nowiki></code> {{ambox|name=|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|name=|text=text}}</nowiki></code> {{ambox/sandbox|name=|text=text}} {{clear}} == type=speedy text=text == ;Main <code><nowiki>{{ambox|type=speedy|text=text}}</nowiki></code> {{ambox|type=speedy|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=speedy|text=text}}</nowiki></code> {{ambox/sandbox|type=speedy|text=text}} {{clear}} == type=delete text=text == ;Main <code><nowiki>{{ambox|type=delete|text=text}}</nowiki></code> {{ambox|type=delete|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=delete|text=text}}</nowiki></code> {{ambox/sandbox|type=delete|text=text}} {{clear}} == type=content text=text == ;Main <code><nowiki>{{ambox|type=content|text=text}}</nowiki></code> {{ambox|type=content|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=content|text=text}}</nowiki></code> {{ambox/sandbox|type=content|text=text}} {{clear}} == type=style text=text == ;Main <code><nowiki>{{ambox|type=style|text=text}}</nowiki></code> {{ambox|type=style|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=style|text=text}}</nowiki></code> {{ambox/sandbox|type=style|text=text}} {{clear}} == type=move text=text == ;Main <code><nowiki>{{ambox|type=move|text=text}}</nowiki></code> {{ambox|type=move|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=move|text=text}}</nowiki></code> {{ambox/sandbox|type=move|text=text}} {{clear}} == type=protection text=text == ;Main <code><nowiki>{{ambox|type=protection|text=text}}</nowiki></code> {{ambox|type=protection|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=protection|text=text}}</nowiki></code> {{ambox/sandbox|type=protection|text=text}} {{clear}} == type=licence text=text == ;Main <code><nowiki>{{ambox|type=licence|text=text}}</nowiki></code> {{ambox|type=licence|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=licence|text=text}}</nowiki></code> {{ambox/sandbox|type=license|text=text}} {{clear}} == type=featured text=text == ;Main <code><nowiki>{{ambox|type=featured|text=text}}</nowiki></code> {{ambox|type=featured|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=featured|text=text}}</nowiki></code> {{ambox/sandbox|type=featured|text=text}} {{clear}} == type=warning text=text == ;Main <code><nowiki>{{ambox|type=warning|text=text}}</nowiki></code> {{ambox|type=warning|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=warning|text=text}}</nowiki></code> {{ambox/sandbox|type=warning|text=text}} {{clear}} == type=editnotice text=text == ;Main <code><nowiki>{{ambox|type=editnotice|text=text}}</nowiki></code> {{ambox|type=editnotice|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=editnotice|text=text}}</nowiki></code> {{ambox/sandbox|type=editnotice|text=text}} {{clear}} == type=system text=text == ;Main <code><nowiki>{{ambox|type=system|text=text}}</nowiki></code> {{ambox|type=system|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=system|text=text}}</nowiki></code> {{ambox/sandbox|type=system|text=text}} {{clear}} == type=notice text=text == ;Main <code><nowiki>{{ambox|type=notice|text=text}}</nowiki></code> {{ambox|type=notice|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=notice|text=text}}</nowiki></code> {{ambox/sandbox|type=notice|text=text}} {{clear}} == type= speedy text=text == ;Main <code><nowiki>{{ambox|type= speedy |text=text}}</nowiki></code> {{ambox|type= speedy |text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type= speedy |text=text}}</nowiki></code> {{ambox/sandbox|type= speedy |text=text}} {{clear}} == small=yes text=text == ;Main <code><nowiki>{{ambox|small=yes|text=text}}</nowiki></code> {{ambox|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|small=yes|text=text}} {{clear}} == small= yes text=text == ;Main <code><nowiki>{{ambox|small= yes |text=text}}</nowiki></code> {{ambox|small= yes |text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|small= yes |text=text}}</nowiki></code> {{ambox/sandbox|small= yes |text=text}} {{clear}} == small=left text=text == ;Main <code><nowiki>{{ambox|small=left|text=text}}</nowiki></code> {{ambox|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|small=left|text=text}}</nowiki></code> {{ambox/sandbox|small=left|text=text}} {{clear}} == small=foo text=text == ;Main <code><nowiki>{{ambox|small=foo|text=text}}</nowiki></code> {{ambox|small=foo|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|small=foo|text=text}}</nowiki></code> {{ambox/sandbox|small=foo|text=text}} {{clear}} == type=speedy small=yes text=text == ;Main <code><nowiki>{{ambox|type=speedy|small=yes|text=text}}</nowiki></code> {{ambox|type=speedy|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=speedy|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|type=speedy|small=yes|text=text}} {{clear}} == type=delete small=yes text=text == ;Main <code><nowiki>{{ambox|type=delete|small=yes|text=text}}</nowiki></code> {{ambox|type=delete|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=delete|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|type=delete|small=yes|text=text}} {{clear}} == type=content small=yes text=text == ;Main <code><nowiki>{{ambox|type=content|small=yes|text=text}}</nowiki></code> {{ambox|type=content|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=content|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|type=content|small=yes|text=text}} {{clear}} == type=style small=yes text=text == ;Main <code><nowiki>{{ambox|type=style|small=yes|text=text}}</nowiki></code> {{ambox|type=style|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=style|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|type=style|small=yes|text=text}} {{clear}} == type=move small=yes text=text == ;Main <code><nowiki>{{ambox|type=move|small=yes|text=text}}</nowiki></code> {{ambox|type=move|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=move|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|type=move|small=yes|text=text}} {{clear}} == type=protection small=yes text=text == ;Main <code><nowiki>{{ambox|type=protection|small=yes|text=text}}</nowiki></code> {{ambox|type=protection|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=protection|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|type=protection|small=yes|text=text}} {{clear}} == type=licence small=yes text=text == ;Main <code><nowiki>{{ambox|type=licence|small=yes|text=text}}</nowiki></code> {{ambox|type=licence|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=licence|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|type=licence|small=yes|text=text}} {{clear}} == type=featured small=yes text=text == ;Main <code><nowiki>{{ambox|type=featured|small=yes|text=text}}</nowiki></code> {{ambox|type=featured|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=featured|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|type=featured|small=yes|text=text}} {{clear}} == type=warning small=yes text=text == ;Main <code><nowiki>{{ambox|type=warning|small=yes|text=text}}</nowiki></code> {{ambox|type=warning|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=warning|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|type=warning|small=yes|text=text}} {{clear}} == type=editnotice small=yes text=text == ;Main <code><nowiki>{{ambox|type=editnotice|small=yes|text=text}}</nowiki></code> {{ambox|type=editnotice|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=editnotice|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|type=editnotice|small=yes|text=text}} {{clear}} == type=system small=yes text=text == ;Main <code><nowiki>{{ambox|type=system|small=yes|text=text}}</nowiki></code> {{ambox|type=system|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=system|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|type=system|small=yes|text=text}} {{clear}} == type=notice small=yes text=text == ;Main <code><nowiki>{{ambox|type=notice|small=yes|text=text}}</nowiki></code> {{ambox|type=notice|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=notice|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|type=notice|small=yes|text=text}} {{clear}} == type=speedy small=left text=text == ;Main <code><nowiki>{{ambox|type=speedy|small=left|text=text}}</nowiki></code> {{ambox|type=speedy|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=speedy|small=left|text=text}}</nowiki></code> {{ambox/sandbox|type=speedy|small=left|text=text}} {{clear}} == type=delete small=left text=text == ;Main <code><nowiki>{{ambox|type=delete|small=left|text=text}}</nowiki></code> {{ambox|type=delete|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=delete|small=left|text=text}}</nowiki></code> {{ambox/sandbox|type=delete|small=left|text=text}} {{clear}} == type=content small=left text=text == ;Main <code><nowiki>{{ambox|type=content|small=left|text=text}}</nowiki></code> {{ambox|type=content|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=content|small=left|text=text}}</nowiki></code> {{ambox/sandbox|type=content|small=left|text=text}} {{clear}} == type=style small=left text=text == ;Main <code><nowiki>{{ambox|type=style|small=left|text=text}}</nowiki></code> {{ambox|type=style|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=style|small=left|text=text}}</nowiki></code> {{ambox/sandbox|type=style|small=left|text=text}} {{clear}} == type=move small=left text=text == ;Main <code><nowiki>{{ambox|type=move|small=left|text=text}}</nowiki></code> {{ambox|type=move|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=move|small=left|text=text}}</nowiki></code> {{ambox/sandbox|type=move|small=left|text=text}} {{clear}} == type=protection small=left text=text == ;Main <code><nowiki>{{ambox|type=protection|small=left|text=text}}</nowiki></code> {{ambox|type=protection|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=protection|small=left|text=text}}</nowiki></code> {{ambox/sandbox|type=protection|small=left|text=text}} {{clear}} == type=licence small=left text=text == ;Main <code><nowiki>{{ambox|type=licence|small=left|text=text}}</nowiki></code> {{ambox|type=licence|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=licence|small=left|text=text}}</nowiki></code> {{ambox/sandbox|type=licence|small=left|text=text}} {{clear}} == type=featured small=left text=text == ;Main <code><nowiki>{{ambox|type=featured|small=left|text=text}}</nowiki></code> {{ambox|type=featured|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=featured|small=left|text=text}}</nowiki></code> {{ambox/sandbox|type=featured|small=left|text=text}} {{clear}} == type=warning small=left text=text == ;Main <code><nowiki>{{ambox|type=warning|small=left|text=text}}</nowiki></code> {{ambox|type=warning|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=warning|small=left|text=text}}</nowiki></code> {{ambox/sandbox|type=warning|small=left|text=text}} {{clear}} == type=editnotice small=left text=text == ;Main <code><nowiki>{{ambox|type=editnotice|small=left|text=text}}</nowiki></code> {{ambox|type=editnotice|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=editnotice|small=left|text=text}}</nowiki></code> {{ambox/sandbox|type=editnotice|small=left|text=text}} {{clear}} == type=system small=left text=text == ;Main <code><nowiki>{{ambox|type=system|small=left|text=text}}</nowiki></code> {{ambox|type=system|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=system|small=left|text=text}}</nowiki></code> {{ambox/sandbox|type=system|small=left|text=text}} {{clear}} == type=notice small=left text=text == ;Main <code><nowiki>{{ambox|type=notice|small=left|text=text}}</nowiki></code> {{ambox|type=notice|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|type=notice|small=left|text=text}}</nowiki></code> {{ambox/sandbox|type=notice|small=left|text=text}} {{clear}} == image=none type=notice small=yes text=text == ;Main <code><nowiki>{{ambox|image=none|type=notice|small=yes|text=text}}</nowiki></code> {{ambox|image=none|type=notice|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|image=none|type=notice|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|image=none|type=notice|small=yes|text=text}} {{clear}} == image=none type=notice small=left text=text == ;Main <code><nowiki>{{ambox|image=none|type=notice|small=left|text=text}}</nowiki></code> {{ambox|image=none|type=notice|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|image=none|type=notice|small=left|text=text}}</nowiki></code> {{ambox/sandbox|image=none|type=notice|small=left|text=text}} {{clear}} == image=none type=notice text=text == ;Main <code><nowiki>{{ambox|image=none|type=notice|text=text}}</nowiki></code> {{ambox|image=none|type=notice|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|image=none|type=notice|text=text}}</nowiki></code> {{ambox/sandbox|image=none|type=notice|text=text}} {{clear}} == image=blank type=notice small=yes text=text == ;Main <code><nowiki>{{ambox|image=blank|type=notice|small=yes|text=text}}</nowiki></code> {{ambox|image=blank|type=notice|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|image=blank|type=notice|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|image=blank|type=notice|small=yes|text=text}} {{clear}} == image=blank type=notice small=left text=text == ;Main <code><nowiki>{{ambox|image=blank|type=notice|small=left|text=text}}</nowiki></code> {{ambox|image=blank|type=notice|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|image=blank|type=notice|small=left|text=text}}</nowiki></code> {{ambox/sandbox|image=blank|type=notice|small=left|text=text}} {{clear}} == image=blank type=notice text=text == ;Main <code><nowiki>{{ambox|image=blank|type=notice|text=text}}</nowiki></code> {{ambox|image=blank|type=notice|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|image=blank|type=notice|text=text}}</nowiki></code> {{ambox/sandbox|image=blank|type=notice|text=text}} {{clear}} == image=File:Example.png 35x35px text=text == ;Main <code><nowiki>{{ambox|image=[[File:Bad Title Example.png|35x35px]]|text=text}}</nowiki></code> {{ambox|image=[[File:Bad Title Example.png|35x35px]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|image=[[File:Bad Title Example.png|35x35px]]|text=text}}</nowiki></code> {{ambox/sandbox|image=[[File:Bad Title Example.png|35x35px]]|text=text}} {{clear}} == smallimage=File:Example.png 25x25px text=text == ;Main <code><nowiki>{{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|text=text}}</nowiki></code> {{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|text=text}}</nowiki></code> {{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|text=text}} {{clear}} == smallimage=File:Example.png 25x25px image=File:Example.png 35x35px text=text == ;Main <code><nowiki>{{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|text=text}}</nowiki></code> {{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|text=text}}</nowiki></code> {{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|text=text}} {{clear}} == imageright=File:Example.png 35x35px text=text == ;Main <code><nowiki>{{ambox|imageright=[[File:Bad Title Example.png|35x35px]]|text=text}}</nowiki></code> {{ambox|imageright=[[File:Bad Title Example.png|35x35px]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|imageright=[[File:Bad Title Example.png|35x35px]]|text=text}}</nowiki></code> {{ambox/sandbox|imageright=[[File:Bad Title Example.png|35x35px]]|text=text}} {{clear}} == smallimageright=File:Example.png 25x25px text=text == ;Main <code><nowiki>{{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|text=text}}</nowiki></code> {{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|text=text}}</nowiki></code> {{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|text=text}} {{clear}} == smallimageright=File:Example.png 25x25px imageright=File:Example.png 35x35px text=text == ;Main <code><nowiki>{{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|text=text}}</nowiki></code> {{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|text=text}}</nowiki></code> {{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|text=text}} {{clear}} == image=File:Example.png 35x35px small=yes text=text == ;Main <code><nowiki>{{ambox|image=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}</nowiki></code> {{ambox|image=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|image=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|image=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}} {{clear}} == smallimage=File:Example.png 25x25px small=yes text=text == ;Main <code><nowiki>{{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|small=yes|text=text}}</nowiki></code> {{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|small=yes|text=text}} {{clear}} == smallimage=File:Example.png 25x25px image=File:Example.png 35x35px small=yes text=text == ;Main <code><nowiki>{{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}</nowiki></code> {{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}} {{clear}} == imageright=File:Example.png 35x35px small=yes text=text == ;Main <code><nowiki>{{ambox|imageright=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}</nowiki></code> {{ambox|imageright=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|imageright=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|imageright=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}} {{clear}} == smallimageright=File:Example.png 25x25px small=yes text=text == ;Main <code><nowiki>{{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|small=yes|text=text}}</nowiki></code> {{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|small=yes|text=text}} {{clear}} == smallimageright=File:Example.png 25x25px imageright=File:Example.png 35x35px small=yes text=text == ;Main <code><nowiki>{{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}</nowiki></code> {{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|small=yes|text=text}} {{clear}} == image=File:Example.png 35x35px small=left text=text == ;Main <code><nowiki>{{ambox|image=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}</nowiki></code> {{ambox|image=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|image=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}</nowiki></code> {{ambox/sandbox|image=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}} {{clear}} == smallimage=File:Example.png 25x25px small=left text=text == ;Main <code><nowiki>{{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|small=left|text=text}}</nowiki></code> {{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|small=left|text=text}}</nowiki></code> {{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|small=left|text=text}} {{clear}} == smallimage=File:Example.png 25x25px image=File:Example.png 35x35px small=left text=text == ;Main <code><nowiki>{{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}</nowiki></code> {{ambox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}</nowiki></code> {{ambox/sandbox|smallimage=[[File:Bad Title Example.png|25x25px]]|image=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}} {{clear}} == imageright=File:Example.png 35x35px small=left text=text == ;Main <code><nowiki>{{ambox|imageright=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}</nowiki></code> {{ambox|imageright=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|imageright=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}</nowiki></code> {{ambox/sandbox|imageright=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}} {{clear}} == smallimageright=File:Example.png 25x25px small=left text=text == ;Main <code><nowiki>{{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|small=left|text=text}}</nowiki></code> {{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|small=left|text=text}}</nowiki></code> {{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|small=left|text=text}} {{clear}} == smallimageright=File:Example.png 25x25px imageright=File:Example.png 35x35px small=left text=text == ;Main <code><nowiki>{{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}</nowiki></code> {{ambox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}}</nowiki></code> {{ambox/sandbox|smallimageright=[[File:Bad Title Example.png|25x25px]]|imageright=[[File:Bad Title Example.png|35x35px]]|small=left|text=text}} {{clear}} == class=ambox-style text=text == ;Main <code><nowiki>{{ambox|class=ambox-style|text=text}}</nowiki></code> {{ambox|class=ambox-style|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|class=ambox-style|text=text}}</nowiki></code> {{ambox/sandbox|class=ambox-style|text=text}} {{clear}} == style=font-size:120%; text=text == ;Main <code><nowiki>{{ambox|style=font-size:120%;|text=text}}</nowiki></code> {{ambox|style=font-size:120%;|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|style=font-size:120%;|text=text}}</nowiki></code> {{ambox/sandbox|style=font-size:120%;|text=text}} {{clear}} == textstyle=font-size:80%; text=text == ;Main <code><nowiki>{{ambox|textstyle=font-size:80%;|text=text}}</nowiki></code> {{ambox|textstyle=font-size:80%;|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|textstyle=font-size:80%;|text=text}}</nowiki></code> {{ambox/sandbox|textstyle=font-size:80%;|text=text}} {{clear}} == smalltext=smalltext == ;Main <code><nowiki>{{ambox|smalltext=smalltext}}</nowiki></code> {{ambox|smalltext=smalltext}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|smalltext=smalltext}}</nowiki></code> {{ambox/sandbox|smalltext=smalltext}} {{clear}} == smalltext=smalltext small=yes == ;Main <code><nowiki>{{ambox|smalltext=smalltext|small=yes}}</nowiki></code> {{ambox|smalltext=smalltext|small=yes}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|smalltext=smalltext|small=yes}}</nowiki></code> {{ambox/sandbox|smalltext=smalltext|small=yes}} {{clear}} == smalltext=smalltext small=left == ;Main <code><nowiki>{{ambox|smalltext=smalltext|small=left}}</nowiki></code> {{ambox|smalltext=smalltext|small=left}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|smalltext=smalltext|small=left}}</nowiki></code> {{ambox/sandbox|smalltext=smalltext|small=left}} {{clear}} == smalltext=smalltext text=text == ;Main <code><nowiki>{{ambox|smalltext=smalltext|text=text}}</nowiki></code> {{ambox|smalltext=smalltext|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|smalltext=smalltext|text=text}}</nowiki></code> {{ambox/sandbox|smalltext=smalltext|text=text}} {{clear}} == smalltext=smalltext text=text small=yes == ;Main <code><nowiki>{{ambox|smalltext=smalltext|text=text|small=yes}}</nowiki></code> {{ambox|smalltext=smalltext|text=text|small=yes}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|smalltext=smalltext|text=text|small=yes}}</nowiki></code> {{ambox/sandbox|smalltext=smalltext|text=text|small=yes}} {{clear}} == smalltext=smalltext text=text small=left == ;Main <code><nowiki>{{ambox|smalltext=smalltext|text=text|small=left}}</nowiki></code> {{ambox|smalltext=smalltext|text=text|small=left}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|smalltext=smalltext|text=text|small=left}}</nowiki></code> {{ambox/sandbox|smalltext=smalltext|text=text|small=left}} {{clear}} == talk=talk text=text == ;Main <code><nowiki>{{ambox|talk=talk|text=text}}</nowiki></code> {{ambox|talk=talk|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|talk=talk|text=text}}</nowiki></code> {{ambox/sandbox|talk=talk|text=text}} {{clear}} == talk=talk small=yes text=text == ;Main <code><nowiki>{{ambox|talk=talk|small=yes|text=text}}</nowiki></code> {{ambox|talk=talk|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|talk=talk|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|talk=talk|small=yes|text=text}} {{clear}} == talk=talk small=left text=text == ;Main <code><nowiki>{{ambox|talk=talk|small=left|text=text}}</nowiki></code> {{ambox|talk=talk|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|talk=talk|small=left|text=text}}</nowiki></code> {{ambox/sandbox|talk=talk|small=left|text=text}} {{clear}} == sect=sect text=text == ;Main <code><nowiki>{{ambox|sect=sect|text=text}}</nowiki></code> {{ambox|sect=sect|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|sect=sect|text=text}}</nowiki></code> {{ambox/sandbox|sect=sect|text=text}} {{clear}} == sect=sect small=yes text=text == ;Main <code><nowiki>{{ambox|sect=sect|small=yes|text=text}}</nowiki></code> {{ambox|sect=sect|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|sect=sect|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|sect=sect|small=yes|text=text}} {{clear}} == sect=sect small=left text=text == ;Main <code><nowiki>{{ambox|sect=sect|small=left|text=text}}</nowiki></code> {{ambox|sect=sect|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|sect=sect|small=left|text=text}}</nowiki></code> {{ambox/sandbox|sect=sect|small=left|text=text}} {{clear}} == issue=issue text=text == ;Main <code><nowiki>{{ambox|issue=issue|text=text}}</nowiki></code> {{ambox|issue=issue|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|issue=issue|text=text}}</nowiki></code> {{ambox/sandbox|issue=issue|text=text}} {{clear}} == issue=issue small=yes text=text == ;Main <code><nowiki>{{ambox|issue=issue|small=yes|text=text}}</nowiki></code> {{ambox|issue=issue|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|issue=issue|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|issue=issue|small=yes|text=text}} {{clear}} == issue=issue small=left text=text == ;Main <code><nowiki>{{ambox|issue=issue|small=left|text=text}}</nowiki></code> {{ambox|issue=issue|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|issue=issue|small=left|text=text}}</nowiki></code> {{ambox/sandbox|issue=issue|small=left|text=text}} {{clear}} == text=text == ;Main <code><nowiki>{{ambox|text=text}}</nowiki></code> {{ambox|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|text=text}}</nowiki></code> {{ambox/sandbox|text=text}} {{clear}} == text=text small=yes == ;Main <code><nowiki>{{ambox|text=text|small=yes}}</nowiki></code> {{ambox|text=text|small=yes}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|text=text|small=yes}}</nowiki></code> {{ambox/sandbox|text=text|small=yes}} {{clear}} == text=text small=left == ;Main <code><nowiki>{{ambox|text=text|small=left}}</nowiki></code> {{ambox|text=text|small=left}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|text=text|small=left}}</nowiki></code> {{ambox/sandbox|text=text|small=left}} {{clear}} == fix=fix text=text == ;Main <code><nowiki>{{ambox|fix=fix|text=text}}</nowiki></code> {{ambox|fix=fix|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|fix=fix|text=text}}</nowiki></code> {{ambox/sandbox|fix=fix|text=text}} {{clear}} == fix=fix small=yes text=text == ;Main <code><nowiki>{{ambox|fix=fix|small=yes|text=text}}</nowiki></code> {{ambox|fix=fix|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|fix=fix|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|fix=fix|small=yes|text=text}} {{clear}} == fix=fix small=left text=text == ;Main <code><nowiki>{{ambox|fix=fix|small=left|text=text}}</nowiki></code> {{ambox|fix=fix|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|fix=fix|small=left|text=text}}</nowiki></code> {{ambox/sandbox|fix=fix|small=left|text=text}} {{clear}} == date=date text=text == ;Main <code><nowiki>{{ambox|date=date|text=text}}</nowiki></code> {{ambox|date=date|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|date=date|text=text}}</nowiki></code> {{ambox/sandbox|date=date|text=text}} {{clear}} == date=date small=yes text=text == ;Main <code><nowiki>{{ambox|date=date|small=yes|text=text}}</nowiki></code> {{ambox|date=date|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|date=date|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|date=date|small=yes|text=text}} {{clear}} == date=date small=left text=text == ;Main <code><nowiki>{{ambox|date=date|small=left|text=text}}</nowiki></code> {{ambox|date=date|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|date=date|small=left|text=text}}</nowiki></code> {{ambox/sandbox|date=date|small=left|text=text}} {{clear}} == info=info text=text == ;Main <code><nowiki>{{ambox|info=info|text=text}}</nowiki></code> {{ambox|info=info|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|info=info|text=text}}</nowiki></code> {{ambox/sandbox|info=info|text=text}} {{clear}} == info=info small=yes text=text == ;Main <code><nowiki>{{ambox|info=info|small=yes|text=text}}</nowiki></code> {{ambox|info=info|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|info=info|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|info=info|small=yes|text=text}} {{clear}} == info=info small=left text=text == ;Main <code><nowiki>{{ambox|info=info|small=left|text=text}}</nowiki></code> {{ambox|info=info|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|info=info|small=left|text=text}}</nowiki></code> {{ambox/sandbox|info=info|small=left|text=text}} {{clear}} == sect=sect issue=issue text=text fix=fix date=date info=info text=text == ;Main <code><nowiki>{{ambox|sect=sect|issue=issue|fix=fix|date=date|info=info|text=text}}</nowiki></code> {{ambox|sect=sect|issue=issue|fix=fix|date=date|info=info|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|sect=sect|issue=issue|fix=fix|date=date|info=info|text=text}}</nowiki></code> {{ambox/sandbox|sect=sect|issue=issue|fix=fix|date=date|info=info|text=text}} {{clear}} == sect=sect issue=issue text=text fix=fix date=date info=info small=yes text=text == ;Main <code><nowiki>{{ambox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=yes|text=text}}</nowiki></code> {{ambox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=yes|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=yes|text=text}}</nowiki></code> {{ambox/sandbox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=yes|text=text}} {{clear}} == sect=sect issue=issue text=text fix=fix date=date info=info small=left text=text == ;Main <code><nowiki>{{ambox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=left|text=text}}</nowiki></code> {{ambox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=left|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=left|text=text}}</nowiki></code> {{ambox/sandbox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=left|text=text}} {{clear}} == sect=sect issue=issue text=text fix=fix date=date info=info small=left text=text smalltext=smalltext == ;Main <code><nowiki>{{ambox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=left|text=text|smalltext=smalltext}}</nowiki></code> {{ambox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=left|text=text|smalltext=smalltext}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=left|text=text|smalltext=smalltext}}</nowiki></code> {{ambox/sandbox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=left|text=text|smalltext=smalltext}} {{clear}} == sect=sect issue=issue text=text fix=fix date=date info=info small=yes text=text smalltext=smalltext == ;Main <code><nowiki>{{ambox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=yes|text=text|smalltext=smalltext}}</nowiki></code> {{ambox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=yes|text=text|smalltext=smalltext}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=yes|text=text|smalltext=smalltext}}</nowiki></code> {{ambox/sandbox|sect=sect|issue=issue|fix=fix|date=date|info=info|small=yes|text=text|smalltext=smalltext}} {{clear}} == nocat=true text=text == ;Main <code><nowiki>{{ambox|nocat=true|text=text}}</nowiki></code> {{ambox|nocat=true|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|nocat=true|text=text}}</nowiki></code> {{ambox/sandbox|nocat=true|text=text}} {{clear}} == nocat=false text=text == ;Main <code><nowiki>{{ambox|nocat=false|text=text}}</nowiki></code> {{ambox|nocat=false|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|nocat=false|text=text}}</nowiki></code> {{ambox/sandbox|nocat=false|text=text}} {{clear}} == cat=cat text=text == ;Main <code><nowiki>{{ambox|cat=[[cat]]|text=text}}</nowiki></code> {{ambox|cat=[[cat]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|cat=[[cat]]|text=text}}</nowiki></code> {{ambox/sandbox|cat=[[cat]]|text=text}} {{clear}} == cat1=cat1 text=text == ;Main <code><nowiki>{{ambox|cat1=[[cat1]]|text=text}}</nowiki></code> {{ambox|cat1=[[cat1]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|cat1=[[cat1]]|text=text}}</nowiki></code> {{ambox/sandbox|cat1=[[cat1]]|text=text}} {{clear}} == cat2=cat2 text=text == ;Main <code><nowiki>{{ambox|cat2=[[cat2]]|text=text}}</nowiki></code> {{ambox|cat2=[[cat2]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|cat2=[[cat2]]|text=text}}</nowiki></code> {{ambox/sandbox|cat2=[[cat2]]|text=text}} {{clear}} == cat3=cat3 text=text == ;Main <code><nowiki>{{ambox|cat3=[[cat3]]|text=text}}</nowiki></code> {{ambox|cat3=[[cat3]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|cat3=[[cat3]]|text=text}}</nowiki></code> {{ambox/sandbox|cat3=[[cat3]]|text=text}} {{clear}} == category=category text=text == ;Main <code><nowiki>{{ambox|category=[[category]]|text=text}}</nowiki></code> {{ambox|category=[[category]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|category=[[category]]|text=text}}</nowiki></code> {{ambox/sandbox|category=[[category]]|text=text}} {{clear}} == category1=category1 text=text == ;Main <code><nowiki>{{ambox|category1=[[category1]]|text=text}}</nowiki></code> {{ambox|category1=[[category1]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|category1=[[category1]]|text=text}}</nowiki></code> {{ambox/sandbox|category1=[[category1]]|text=text}} {{clear}} == category2=category2 text=text == ;Main <code><nowiki>{{ambox|category2=[[category2]]|text=text}}</nowiki></code> {{ambox|category2=[[category2]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|category2=[[category2]]|text=text}}</nowiki></code> {{ambox/sandbox|category2=[[category2]]|text=text}} {{clear}} == category3=category3 text=text == ;Main <code><nowiki>{{ambox|category3=[[category3]]|text=text}}</nowiki></code> {{ambox|category3=[[category3]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|category3=[[category3]]|text=text}}</nowiki></code> {{ambox/sandbox|category3=[[category3]]|text=text}} {{clear}} == all=all text=text == ;Main <code><nowiki>{{ambox|all=[[all]]|text=text}}</nowiki></code> {{ambox|all=[[all]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|all=[[all]]|text=text}}</nowiki></code> {{ambox/sandbox|all=[[all]]|text=text}} {{clear}} == all1=all1 text=text == ;Main <code><nowiki>{{ambox|all1=[[all1]]|text=text}}</nowiki></code> {{ambox|all1=[[all1]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|all1=[[all1]]|text=text}}</nowiki></code> {{ambox/sandbox|all1=[[all1]]|text=text}} {{clear}} == all2=all2 text=text == ;Main <code><nowiki>{{ambox|all2=[[all2]]|text=text}}</nowiki></code> {{ambox|all2=[[all2]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|all2=[[all2]]|text=text}}</nowiki></code> {{ambox/sandbox|all2=[[all2]]|text=text}} {{clear}} == all3=all3 text=text == ;Main <code><nowiki>{{ambox|all3=[[all3]]|text=text}}</nowiki></code> {{ambox|all3=[[all3]]|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|all3=[[all3]]|text=text}}</nowiki></code> {{ambox/sandbox|all3=[[all3]]|text=text}} {{clear}} == below=below text=text == ;Main <code><nowiki>{{ambox|below=below|text=text}}</nowiki></code> {{ambox|below=below|text=text}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|below=below|text=text}}</nowiki></code> {{ambox/sandbox|below=below|text=text}} {{clear}} == Multiple issues == ;Main {{multiple issues| {{ambox|issue=a|fix=b}} {{ambox|issue=c|fix=d}} {{ambox|issue=e|fix=f}} }} ;Sandbox {{multiple issues| {{ambox/sandbox|issue=a|fix=b}} {{ambox/sandbox|issue=c|fix=d}} {{ambox/sandbox|issue=e|fix=f}} }} == Talk page section link == ;Main <code><nowiki>{{ambox|talk=foo|issue=issue|fix=fix}}</nowiki></code> {{ambox|talk=foo|issue=issue|fix=fix}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|talk=foo|issue=issue|fix=fix}}</nowiki></code> {{ambox/sandbox|talk=foo|issue=issue|fix=fix}} {{clear}} == Full talk page link == ;Main <code><nowiki>{{ambox|talk=Talk:Foo|issue=issue|fix=fix}}</nowiki></code> {{ambox|talk=Talk:Foo|issue=issue|fix=fix}} {{clear}} ;Sandbox <code><nowiki>{{ambox/sandbox|talk=Talk:Foo|issue=issue|fix=fix}}</nowiki></code> {{ambox/sandbox|talk=Talk:Foo|issue=issue|fix=fix}} {{clear}} s8cd0hsuz05hnszm2kz3pw0vzq99jd1 Template:Anachronism 10 960 2152 2151 2020-09-29T19:17:28Z Chrisb 1 1 revision imported 2151 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = Anachronism | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = content | class = ambox-anachronism | sect = {{{1|}}} | issue = '''contains statements that are [[anachronistic]]'''. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] by rewriting it in an [[Wikipedia:Encyclopedic style|encyclopedic style]]. | removalnotice = yes | date = {{{date|}}} | cat = Articles with anachronisms | all = All articles with anachronisms }} }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 6mz6tzrlbeleor0sovneklcjq2cnvef Template:Anchor 10 1293 2818 2817 2020-09-29T19:18:15Z Chrisb 1 1 revision imported 2817 wikitext text/x-wiki {{{{{|safesubst:}}}#invoke:anchor|main}}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> cjfgfxc6tpjgpyvzhnbfkngu6u3spzc Template:Animals cleanup 10 1282 2796 2795 2020-09-29T19:18:13Z Chrisb 1 1 revision imported 2795 wikitext text/x-wiki {{ambox | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | issue = {{#if:{{{section|}}}|This section of an|This}} animal-related article '''may require [[Wikipedia:Cleanup|cleanup]]''' to conform to a [[WP:Manual of Style|higher standard]] of quality. | fix = You can help by [{{fullurl:{{FULLPAGENAME}}|action=edit}} improving it] if you can. The article's [[Talk:{{PAGENAME}}|talk page]] may have suggestions. | name = Animals cleanup | all = Animal articles needing cleanup }}<noinclude> {{documentation}} </noinclude> 8m5u7t8gi2m7tbrdmizfqtkbbn6xnfi Template:Any 10 1495 4638 4637 2020-10-11T05:35:15Z Chrisb 1 1 revision imported 4637 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #FFD; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="any table-any"|{{{1|Any}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> 443bcz4y8reja901a5b2alkbcqdtcub Template:Apple 10 1440 3184 3183 2020-10-11T01:32:02Z Chrisb 1 1 revision imported 3183 wikitext text/x-wiki #REDIRECT [[Template:Apple Inc.]] {{Redirect category shell| {{R from move}} }} 7fz32kw4by02cehvl6vzuiqxtez7jyi Template:AppleIntel 10 1441 3186 3185 2020-10-11T01:32:02Z Chrisb 1 1 revision imported 3185 wikitext text/x-wiki {{ sidebar | title = {{normalwraplink|Mac transition to Intel processors}} | class = hlist | name = AppleIntel | content1 = * [[PowerPC]] * [[Apple–Intel architecture|Architecture]] * [[Universal binary]] * [[Boot Camp (software)|Boot Camp]] * [[Rosetta (software)|Rosetta]] }}<noinclude>{{doc|content= Note, the {{para|state}} parameter and "autocollapse" functionality cannot be used with this template. {{Apple/doc}} }}</noinclude> pnzadta84dg71e9346ssm7fnm3ig4hw Template:Apple Inc. 10 1442 3188 3187 2020-10-11T01:32:02Z Chrisb 1 1 revision imported 3187 wikitext text/x-wiki {{Navbox |name = Apple Inc. |title = [[Apple Inc.]] |state = {{{state|autocollapse}}} |bodyclass = hlist |image = [[File:Apple logo black.svg|65px]] |above = * [[History of Apple Inc.|History]] * [[Outline of Apple Inc.|Outline]] |group1 = [[:Category:Apple Inc. products|Products]] |list1 = {{Navbox|child |group1 = [[:Category:Apple Inc. hardware|Hardware]] |list1 = {{Navbox|child |list1 = * [[iPhone]] * [[Apple TV]] * [[Apple Watch]] * [[AirPods]] ** [[AirPods Pro|Pro]] * [[Beats Electronics]] * [[Beats Pill]] * [[HomePod]] * [[Apple-designed processors|Silicon chips]] |group2 = Mac |list2 = * [[Macintosh|Mac]] ** [[iMac]] ** [[iMac Pro]] ** [[MacBook]] ** [[Mac Mini]] ** [[Mac Pro]] * [[Comparison of Macintosh models]] |group3 = iPod |list3 = * [[iPod]] ** ''[[iPod Classic|Classic]]'' ** ''[[iPod Nano|Nano]]'' ** ''[[iPod Shuffle|Shuffle]]'' ** [[iPod Touch|Touch]] |group4 = iPad |list4 = * [[iPad]] ** [[iPad Mini|Mini]] ** [[iPad Air|Air]] ** [[iPad Pro|Pro]] ** [[List of iPad accessories|Accessories]] }} |group2 = [[:Category:Apple Inc. software|Software]] |list2 = * ''[[Classic Mac OS]]'' ** ''[[AppleWorks|ClarisWorks/AppleWorks]]'' ** ''[[HyperCard]]'' * [[Darwin (operating system)|Darwin]] * [[macOS]] ** [[macOS version history|History]] ** [[macOS Server|Server]] ** [[List of Macintosh software|Software]] * [[iOS]] ** [[iOS version history|History]] * [[watchOS]] * [[tvOS]] * [[audioOS]] * [[iPadOS]] * [[CarPlay]] * [[HomeKit]] * [[Core Foundation]] * [[Apple Developer Tools|Developer Tools]] * [[FileMaker]] ** ''[[Bento (database)|Bento]]'' * [[Final Cut Pro X]] ** [[Compressor (software)|Compressor]] ** [[Motion (software)|Motion]] * [[Logic Pro]] ** [[MainStage (software)|MainStage]] * [[iLife]] ** [[GarageBand]] ** [[iMovie]] ** [[iTunes]] * [[iWork]] ** [[Keynote (presentation software)|Keynote]] ** [[Numbers (spreadsheet)|Numbers]] ** [[Pages (word processor)|Pages]] * [[QuickTime]] * [[Shazam (application)|Shazam]] * [[Siri]] * Education ** ''[[At Ease]]'' ** [[Classroom (Apple)|Classroom]] ** [[Schoolwork (Apple)|Schoolwork]] }} |group2 = [[:Category:Apple Inc. services|Services]] |list2 = {{Navbox|child |list1 = * [[Apple ID]] ** [[Sign In with Apple]] * [[Apple Developer|Developer]] ** [[App Store Connect]] ** ''[[iAd]]'' ** [[TestFlight]] ** [[Apple Worldwide Developers Conference|WWDC]] * [[FaceTime]] * [[Game Center]] * [[iCloud]] ** [[iTunes Match]] ** ''[[MobileMe]]'' ** [[Apple Photos|Photos]] * [[iMessage]] * [[Apple Maps|Maps]] ** [[Apple Look Around|Look Around]] |group2 = Financial |list2 = * [[Apple Card]] * [[Apple Pay]] ** [[Apple Pay Cash|Cash]] * [[Apple Wallet]] |group3 = Media |list3 = * [[Apple Arcade|Arcade]] ** [[List of Apple Arcade games|List of games]] * [[Apple Music|Music]] ** [[Beats 1]] ** ''[[Beats Connect|Connect]]'' ** ''[[Beats Music]]'' ** ''[[Apple Music Up Next|Up Next]]'' ** ''[[Apple Music Festival|iTunes Festival/<wbr />Apple Music Festival]]'' ** ''[[iTunes Radio]]'' * [[Apple News|News]] ** [[Apple News+|+]] ** ''[[Newsstand (software)|Newsstand]]'' * [[Podcasts (app)|Podcasts]] * [[Apple TV (software)|TV]] ** [[Apple TV+|+]] *** [[List of Apple TV+ original programming|List of programs]] ** [[Apple TV Channels|Channels]] |group4 = [[Apple Store|Stores]] |list4 = * [[App store]]s ** [[App Store (iOS)|iOS]] *** [[App Store (iMessage)|iMessage]] *** [[App Store (iPadOS)|iPadOS]] *** [[App Store (watchOS)|watchOS]] ** [[App Store (macOS)|macOS]] ** [[App Store (tvOS)|tvOS]] * [[Apple Store]] * [[Apple Books|Apple Books Store]] * [[iTunes Store]] ** [[iTunes Connect]] ** ''[[iTunes U]]'' |group5 = Support |list5 = * [[AppleCare]] * [[Apple Specialist]] * [[Apple certification programs|Certifications]] * [[Genius Bar]] * [[JointVenture (Apple)|JointVenture]] * ''[[ProCare]]'' * ''[[One to One (Apple)|One to One]]'' }} |group3 = Companies |list3 = {{Navbox|child |group1 = [[:Category:Apple Inc. subsidiaries|Subsidiaries]] |list1 = * [[Anobit]] * [[Apple Energy]] * [[Apple IMC]] * [[Apple Sales International]] * [[Apple Services]] * [[Apple Worldwide Video]] * [[Beats Electronics]] * [[Beddit]] * [[Braeburn Capital]] * [[Claris]] |group2 = [[:Category:Apple Inc. acquisitions|Acquisitions]] |list2 = * [[List of mergers and acquisitions by Apple|List]] * [[Anobit]] * [[AuthenTec|AuthenTec Inc.]] * [[Beats Electronics]] * [[Beddit]] * [[Cue (search engine)|Cue]] * [[Emagic]] * [[FingerWorks]] * [[Intrinsity]] * [[InVisage Technologies|InVisage Technologies]] * [[Lala (website)|Lala]] * [[NeXT]] * [[Nothing Real]] * [[Metaio]] * [[P.A. Semi]] * [[PrimeSense]] * [[Shazam (application)|Shazam]] * [[Siri]] * [[Spotsetter]] * [[Texture (app)|Texture]] * [[Topsy Labs|Topsy]] * [[EditGrid]] |group3 = [[:Category:Apple Inc. partnerships|Partnerships]] |list3 = * ''[[AIM alliance]]'' ** ''[[Kaleida Labs]]'' ** ''[[Taligent]]'' * [[Akamai Technologies|Akamai]] * [[Arm Holdings]] * [[DiDi]] * ''[[Digital Ocean]]'' * [[iFund]] * [[Imagination Technologies|Imagination]] * [[Rockstar Consortium]] }} |group4 = Related |list4 = * [[Apple Inc. advertising|Advertising]] ** [[1984 (advertisement)|1984]] ** [[Think different]] ** [[Get a Mac]] ** [[iPod advertising|iPods]] ** [[Product Red]] * [[Apple Campus|Campus]] ** [[Apple Park|Park]] ** [[Apple University|University]] * [[Apple Inc. design motifs|Design]] ** [[Apple Industrial Design Group|IDg]] ** [[Typography of Apple Inc.|Typography]] ** [[Designed by Apple in California|Book]] * [[History of Apple Inc.|History]] ** [[List of Apple codenames|Codenames]] ** [[Apple community|Community]] *** [[Apple Evangelist|Evangelist]] *** [[Apple Fellow|Fellow]] *** [[AppleMasters|Master]] ** [[Criticism of Apple Inc.|Criticism]] ** [[Apple Inc. litigation|Litigation]] *** [[FBI–Apple encryption dispute]] ** [[iOS app approvals]] * [[List of artistic depictions of Steve Jobs|Artistic depictions of Steve Jobs]] |group5 = People |list5 = {{Navbox|child |group1 = [[:Category:Apple Inc. executives|Executives]] |list1 = {{Navbox|child |group1 = Current |list1 = * [[Tim Cook]] (CEO) * [[Jeff Williams (Apple)|Jeff Williams]] (COO) * [[Luca Maestri]] (CFO) * [[Katherine L. Adams|Katherine Adams]] (General Counsel) * [[Eddy Cue]] * [[Craig Federighi]] * [[Isabel Ge Mahe]] * [[John Giannandrea]] * [[Lisa P. Jackson|Lisa Jackson]] * Sabih Khan * Tor Myhren * [[Deirdre O'Brien]] * Adrian Perica * [[Dan Riccio]] * [[Phil Schiller]] * [[Johny Srouji]] * Greg Joswiak |group2 = Former |list2 = * [[Michael Scott (Apple)|Michael Scott]] (CEO) * [[Mike Markkula]] (CEO) * [[John Sculley]] (CEO) * [[Michael Spindler]] (CEO) * [[Gil Amelio]] (CEO) * [[Steve Jobs]] (CEO) * [[Jony Ive]] (CDO) * [[Angela Ahrendts]] * [[Fred D. Anderson]] * [[John Browett]] * [[Guerrino De Luca]] * [[Paul Deneve]] * [[Al Eisenstat]] * [[Tony Fadell]] * [[Scott Forstall]] * [[Ellen Hancock]] * [[Nancy R. Heinen]] * [[Ron Johnson (businessman)|Ron Johnson]] * [[David Nagel]] * [[Peter Oppenheimer]] * [[Mark Papermaster]] * [[Jon Rubinstein]] * [[Bertrand Serlet]] * [[Bruce Sewell]] * [[Sina Tamaddon]] * [[Avie Tevanian]] * [[Ronald Wayne]] * [[Steve Wozniak]] }} |group2 = [[:Category:Directors of Apple Inc.|Board of<br />directors]] |list2 = {{Navbox|child |group1 = Current |list1 = * [[Arthur D. Levinson]] (Chairman) * [[Tim Cook]] (CEO) * [[James A. Bell]] * [[Al Gore|Albert Gore Jr.]] * [[Andrea Jung]] * [[Ronald Sugar|Ronald D. Sugar]] * [[Susan Wagner|Susan L. Wagner]] |group2 = Former |list2 = * [[Mike Markkula]] (Chairman) * [[John Sculley]] (Chairman) * [[Steve Jobs]] (Chairman) * [[Gil Amelio]] * [[Fred D. Anderson]] * [[William Campbell (business executive)|Bill Campbell]] * [[Mickey Drexler]] * [[Al Eisenstat]] * [[Larry Ellison]] * [[Bob Iger|Robert A. Iger]] * [[Delano Lewis]] * [[Arthur Rock]] * [[Eric Schmidt]] * [[Michael Scott (Apple)|Michael Scott]] * [[Michael Spindler]] * [[Edgar S. Woolard Jr.]] * [[Jerry York (businessman)|Jerry York]] }} |group3 = Founders |list3 = * [[Steve Jobs]] * [[Steve Wozniak]] * [[Ronald Wayne]] }} |below = {{hlist|''Italics'' indicate [[:Category:Discontinued products|discontinued products, services]], or [[:Category:Defunct computer companies of the United States|defunct companies]].}} * {{icon|Book}} [[:Book:Apple Inc.|Book]] * {{icon|Category}} [[:Category:Apple Inc.|Category]] * {{icon|Commons}} [[:commons:Category:Apple Inc.|Commons]] }}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> bu67rtgm3t9fhv928w27qsiageevc7o Template:Apple hardware since 1998 10 1443 3190 3189 2020-10-11T01:32:02Z Chrisb 1 1 revision imported 3189 wikitext text/x-wiki {{navbox | name = Apple hardware since 1998 | title = [[Apple Inc.|Apple]] hardware since 1998 | state = {{{state|}}} | bodyclass = hlist | group1 = Consumer desktop/all-in-ones | list1 = * [[eMac]] * ''[[iMac]]'' ** [[iMac G3|G3]] ** [[iMac G4|G4]] ** [[iMac G5|G5]] ** ''[[iMac (Intel-based)|Intel-based]]'' * ''[[Mac Mini]]'' | group2 = Professional tower/desktops | list2 = * ''[[iMac Pro]]'' * ''[[Mac Pro]]'' * [[Power Macintosh]] ** [[Power Macintosh G3|G3]] ** [[Power Mac G4|G4]] ** [[Power Mac G4 Cube|G4 Cube]] ** [[Power Mac G5|G5]] * [[Xserve]] | group3 = Consumer notebooks | list3 = * [[iBook]] * [[MacBook]] ** [[MacBook (2006–2012)|2006–2012]] ** [[MacBook (2015–2019)|2015–2019]] * ''[[MacBook Air]]'' | group4 = Professional notebooks | list4 = * ''[[MacBook Pro]]'' * [[PowerBook]] ** [[PowerBook G3|G3]] ** [[PowerBook G4|G4]] | group5 = Consumer electronics | list5 = * ''[[Apple TV]]'' ** [[Apple TV (1st generation)|1st]] ** [[Apple TV (2nd generation)|2nd]] ** [[Apple TV (3rd generation)|3rd]] ** ''[[Apple_TV#4th_and_5th_generation|HD]]'' ** ''[[Apple_TV#4th_and_5th_generation|4K]]'' * ''[[Apple Watch]]'' ** [[Apple Watch (1st generation)|1st generation]] ** [[Apple Watch Series 1|Series 1]] ** [[Apple Watch Series 2|Series 2]] ** ''[[Apple Watch Series 3|Series 3]]'' ** [[Apple Watch Series 4|Series 4]] ** [[Apple Watch Series 5|Series 5]] ** ''[[Apple Watch Series 6|Series 6]]'' ** ''[[Apple Watch SE|SE]]'' * [[Apple displays|Displays]] ** [[Apple Thunderbolt Display|Thunderbolt]] ** [[Apple Cinema Display|Cinema]] ** [[Apple Studio Display|Studio]] ** ''[[Pro Display XDR]]'' * ''[[HomePod]]'' * ''[[iPad]]'' ** [[iPad (1st generation)|1st]] ** [[iPad 2|2]] ** [[iPad (3rd generation)|3rd]] ** [[iPad (4th generation)|4th]] ** [[iPad (2017)|2017]] ** [[iPad (2018)|2018]] ** [[iPad (2019)|2019]] ** ''[[iPad (2020)|2020]]'' * ''[[iPad Mini]]'' ** [[iPad Mini (1st generation)|1st]] ** [[iPad Mini 2|2]] ** [[iPad Mini 3|3]] ** [[iPad Mini 4|4]] ** ''[[iPad Mini (5th generation)|5th]]'' * ''[[iPad Air|Air]]'' ** [[iPad Air|1st]] ** [[iPad Air 2|2]] ** [[iPad Air (2019)|2019]] ** ''[[iPad Air (2020)|2020]]'' * ''[[iPad Pro]]'' ** [[iPad Pro (1st generation)|1st]] ** [[iPad Pro (2nd generation)|2nd]] ** [[iPad Pro (3rd generation)|3rd]] ** ''[[iPad Pro (4th generation)|4th]]'' * ''[[iPod]]'' ** [[iPod Classic|Classic]] ** [[iPod Photo|Photo]] ** [[iPod Mini|Mini]] ** [[iPod+HP]] ** [[iPod Shuffle|Shuffle]] ** [[iPod Nano|Nano]] ** ''[[iPod Touch|Touch]]'' * [[Apple Newton|Newton]] ** [[MessagePad]] ** [[eMate 300]] | group6 = Smartphones | list6 = * ''[[iPhone]]'' ** [[iPhone (1st generation)|1st]] ** [[iPhone 3G|3G]] ** [[iPhone 3GS|3GS]] ** [[iPhone 4|4]] ** [[iPhone 4S|4S]] ** [[iPhone 5|5]] ** [[iPhone 5C|5C]] ** [[iPhone 5S|5S]] ** [[iPhone 6|6 / 6 Plus]] ** [[iPhone 6S|6S / 6S Plus]] ** [[iPhone SE (1st generation)|SE (1st)]] ** [[iPhone 7|7 / 7 Plus]] ** [[iPhone 8|8 / 8 Plus]] ** [[iPhone X|X]] ** [[iPhone XS|XS / XS Max]] ** ''[[iPhone XR|XR]]'' ** ''[[iPhone 11|11]]'' ** ''[[iPhone 11 Pro|11 Pro / Pro Max]]'' ** ''[[iPhone SE (2nd generation)|SE (2nd)]]'' | group7 = Accessories | list7 = * ''[[AirPods]]'' ** [[AirPods#1st_generation|1st]] ** ''[[AirPods#2nd_generation|2nd]]'' ** ''[[AirPods Pro|Pro]]'' * [[AirPort]] ** [[AirPort Express|Express]] ** [[AirPort Extreme|Extreme]] ** [[AirPort Time Capsule|Time Capsule]] * [[AirPower (charging mat)|AirPower]]<small>&nbsp;(cancelled)</small> * [[Apple earbuds|Earbuds]] ** [[Apple Earbuds with Remote|with Remote]] * [[iPod Earphones|Earphones]] ** [[Apple Earphones with Remote and Mic|with Remote and Mic]] * ''[[EarPods]]'' ** ''[[EarPods with Lightning Connector|with Lightning Connector]]'' * [[Apple In-Ear Headphones|In-Ear Headphones]] * ''[[List of iPad accessories|iPad]]'' ** ''[[Apple Pencil|Pencil]]'' ***''[[Apple Pencil (1st generation)|<small>1st</small>]]'' ***''[[Apple Pencil (2nd generation)|<small>2nd</small>]]'' ** ''[[Magic Keyboard for iPad]]'' * ''[[:Category:iPod accessories|iPod]]'' ** [[iPod click wheel|Click Wheel]] ** [[Nike+]] * [[iPhone Stereo Headset]] * [[iSight]] * ''[[Apple Keyboard|Keyboard]]'' ** [[Apple Wireless Keyboard|Wireless]] ** ''[[Magic Keyboard|Magic]]'' * ''[[Apple Mouse|Mouse]]'' ** [[Apple USB Mouse|USB]] ** [[Apple Pro Mouse|Pro]] ** [[Apple Wireless Mouse|Wireless]] ** [[Apple Mighty Mouse|Mighty]] ** [[Magic Mouse|Magic]] ** ''[[Magic Mouse 2|Magic 2]]'' * [[Apple Remote|Remote]] * ''[[Siri Remote]]'' * [[Apple speakers|Speakers]] ** [[iPod Hi-Fi|Hi-Fi]] ** [[SoundSticks]] * ''[[SuperDrive]]'' * ''Trackpad'' ** [[Magic Trackpad|Magic]] ** ''[[Magic Trackpad 2|Magic 2]]'' * [[Apple Modem|USB Modem]] * [[Xserve RAID]] | below = ''Italics'' indicate current products. See also: [[Template:Apple hardware before 1998|Apple hardware before 1998]] }}<noinclude> {{Documentation|Template:Apple/doc}} [[Category:Apple Inc.-related templates]] [[Category:Computer hardware navigational boxes]] </noinclude> i8hr6ddxyc73epgj8qhuwhx2hc7lixt Template:Arabic script needed 10 1062 2356 2355 2020-09-29T19:17:42Z Chrisb 1 1 revision imported 2355 wikitext text/x-wiki {{Script needed |language = Arabic |image = Arabic albayancalligraphy.svg |extra = {{Script needed/extra|{{{Persian|<noinclude>yes</noinclude>}}}|Persian}}{{Script needed/extra|{{{Urdu|<noinclude>yes</noinclude>}}}|Urdu}}{{Script needed/extra|{{{Kurdish|<noinclude>yes</noinclude>}}}|Kurdish}}{{Script needed/extra|{{{Malay|<noinclude>yes</noinclude>}}}|Jawi|cat=Articles needing Malay script or text}}{{Script needed/extra|{{{Azerbaijani|<noinclude>yes</noinclude>}}}|Azerbaijani}}{{Script needed/extra|{{{Pashto|<noinclude>yes</noinclude>}}}|Pashto}}{{Script needed/extra|{{{Uyghur|<noinclude>yes</noinclude>}}}|Uyghur}}{{Script needed/extra|{{{Tajik|<noinclude>yes</noinclude>}}}|Tajik}}{{Script needed/extra|{{{Kazakh|<noinclude>yes</noinclude>}}}|Kazakh}}{{Script needed/extra|{{{Swahili|<noinclude>yes</noinclude>}}}|Swahili}}{{Script needed/extra|{{{Somali|<noinclude>yes</noinclude>}}}|Somali}}{{Script needed/extra|{{{Comorian|<noinclude>yes</noinclude>}}}|Comorian}}{{Script needed/extra|{{{Chinese|<noinclude>yes</noinclude>}}}|Xiao'erjing|cat=Articles needing Chinese script or text}} }} 6h258n8gue6p3rpi9rui4m4agrd96gb Template:Armenian script needed 10 988 2208 2207 2020-09-29T19:17:32Z Chrisb 1 1 revision imported 2207 wikitext text/x-wiki {{Script needed |language = Armenian |image = Armenian language in the Armenian alphabet.svg }}<noinclude> [[Category:Indo-European multilingual support templates]] </noinclude> cbjdxjvrfk0cfitwc1ddna34xlu5yt2 Template:As of 10 1605 4858 4857 2020-10-11T05:39:02Z Chrisb 1 1 revision imported 4857 wikitext text/x-wiki <!--{{As of}} begin--><includeonly><!-- ## param 1 is the year ## optional param 2 is the month ## optional param 3 is the day of the month ## optional named parameter alt=[text] is alternative display text (may include wiki markup) ## optional named parameter df=US produces American date format in displayed text ## optional named parameter lc=on gives lower-case-first output ## optional named parameter url=[URL] gives statement reference ## displayed text ([A/a]s of [Start date] by default) -->{{#if: {{{alt|}}} | {{{alt}}} | {{#if:{{{since|}}}|{{#ifeq: {{{lc}}} | {{{lc|}}} | s | S }}ince | {{#ifeq: {{{lc}}} | {{{lc|}}} | a | A }}s of}} {{#if:{{{pre|}}}|{{{pre}}}&#32;}}{{#if: {{{3|}}} | {{#ifeq:{{lc:{{{df|}}}}}|us|{{MONTHNAME|{{{2}}}}}&nbsp;{{#expr:{{{3}}}}},&#32;|{{#expr:{{{3}}}}}&nbsp;{{MONTHNAME|{{{2}}}}}&nbsp;}}{{{1}}}|{{#if: {{{2|}}} |{{MONTHNAME|{{{2}}}}}&nbsp;}}{{{1}}}}}}}{{#if:{{{post|}}}|<nowiki />{{{post}}}}}<!-- #### That nowiki is required or, various characters (:, ;, #, and *} will be parsed as wikisyntax for list items. ## ref/update inline banner (hidden by default) --><sup class="plainlinks noexcerpt noprint asof-tag {{#if:{{{url|}}}|ref|update}}" style="display:none;">[{{#if:{{{url|}}}|{{{url}}} &#91;ref&#93;|{{fullurl:{{PAGENAME}}|action=edit}} &#91;update&#93;}}]</sup><!-- ## categorisation disabled outside main namespace -->{{DMCA|Articles containing potentially dated statements|from|<!-- ## temporal category for template (word method) -->{{#if: {{#ifexpr: {{{1}}} = 1 }} | {{#ifexpr: {{#time:Y|{{{1}}}}} > 2004 | {{{1}}} | {{#ifexpr: {{#time:Y|{{{1}}}}} > 1989 | {{#time:Y|{{{1}}}}} | before 1990 }}}} | <!-- ## temporal category for template (parameter method) -->{{#ifexpr: {{{1}}} > 2004 | {{#if:{{{2|}}} | {{MONTHNAME|{{{2}}}}} }} {{{1}}} | {{#ifexpr:{{{1}}} > 1989 | {{{1}}} | before 1990 }}}}}}|<!-- ## global category for template -->All articles containing potentially dated statements}}</includeonly><!--{{As of}} end--><noinclude><!-- ## dynamic example (as of today, self ref) -->{{As of|{{CURRENTYEAR}}|{{CURRENTMONTH}}|{{CURRENTDAY}}}}<sup class="plainlinks">[https://en.wikipedia.org/wiki/Template:As_of &#91;ref&#93;]</sup> {{documentation}} <!-- Add categories and inter-wikis to the /doc subpage, not here! --> </noinclude>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using as of template with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:As of]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | 3 | alt | df | lc | post | pre | since | url }} rbu66w7vdpj3sc0horac0flimmb0in7 Template:Asbox 10 920 2072 2071 2020-09-29T19:17:23Z Chrisb 1 1 revision imported 2071 wikitext text/x-wiki <includeonly>{{#invoke:Asbox|main}}</includeonly><noinclude> {{documentation}} <!-- Add categories to the /doc subpage and interwikis to Wikidata. --> </noinclude> ksm2ygwb5s1f3x9t0pn08ktjf3admyc Template:AthAbbr needed 10 1212 2656 2655 2020-09-29T19:18:04Z Chrisb 1 1 revision imported 2655 wikitext text/x-wiki {{Ambox | name = AthAbbr needed | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = style | image = | sect = | issue = requires use of {{Tl|AthAbbr}} templates to make it clearer for those not familiar with [[Sport of athletics|athletics]]. | talk = | fix = | date = {{{date|}}} | cat = Articles needing AthAbbr templates | all = Articles needing AthAbbr templates }} <noinclude> == TemplateData == {{TemplateData header}} <templatedata> { "params": { "small": { "description": "This defaults to big and centred. To override it, put an alignment such as left in the parameters.", "default": "{{{small|}}}" }, "date": {} }, "description": "This template is to be used on pages needing AthAbbr templates" } </templatedata> </noinclude> cdwdcwo0vvb6rgip3rudgpb3ye84i1i Template:Autobiography 10 1166 2564 2563 2020-09-29T19:17:56Z Chrisb 1 1 revision imported 2563 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = Autobiography | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | class = ambox-autobiography | sect = {{{1|}}} | issue = '''is an [[Wikipedia:Autobiography|autobiography]] or has been extensively edited by the subject or by someone connected to the subject'''. | fix = It may need editing to conform to Wikipedia's [[Wikipedia:Neutral point of view|neutral point of view]] policy. There may be relevant discussion on the [[:{{NAMESPACE}} talk:{{PAGENAME}}#{{{talk|{{{2|}}}}}}|talk page]]. | removalnotice = yes | cat = Autobiographical articles | date = {{{date|}}} }} }}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, not here! --> </noinclude> 8lrbnfjhrnk5c5hkpcqmqjnr78ce31y Template:BLACK 10 1496 4640 4639 2020-10-11T05:35:15Z Chrisb 1 1 revision imported 4639 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>data-sort-value="{{{sort|}}}" style="background: black; color: lightgray; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-na"|{{{1|N/A}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} 9t6jyhg2nbt5xurq85dqtvzgqtc68y9 Template:BLP IMDb-only refimprove 10 1271 2774 2773 2020-09-29T19:18:12Z Chrisb 1 1 revision imported 2773 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{BLP IMDb refimprove | name = BLP IMDb-only refimprove | date = {{{date|}}} | only = yes }} }}<noinclude> {{Documentation}} </noinclude> jvoyg83ogn02mcgffke6jxpi6qcmthu Template:BLP IMDb refimprove 10 953 2138 2137 2020-09-29T19:17:27Z Chrisb 1 1 revision imported 2137 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{ ambox | name = BLP IMDb refimprove | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | issue = This {{#if:{{{1|}}}|{{{1}}} of a|}} {{#ifeq:{{{living}}}|no |[[WP:BDP|biography of a recently-deceased person]] |[[Wikipedia:Biographies of living persons|biography of a living person]] }} '''needs additional [[Wikipedia:Citing sources|citations]] for [[Wikipedia:Verifiability|verification]], as {{#ifeq:{{{only|}}}|yes|its only attribution is|it includes attribution}} to [[IMDb]]'''. | fix = IMDb [[Wikipedia:Citing IMDb|may not be a reliable source]] for biographical information. Please help by adding additional, reliable sources for [[Wikipedia:Verifiability|verification]]. {{#ifeq:{{{living}}}|no||Contentious material about living persons that is unsourced or poorly sourced '''must be removed immediately''', especially if potentially [[Wikipedia:Libel|libelous]] or harmful.}} | removalnotice = yes | date = {{{date|}}} | cat = Articles lacking reliable references | all = All articles lacking reliable references | cat2 = BLP articles lacking sources | cat3 = Articles sourced {{#ifeq:{{{only|}}}|yes|only}} by IMDb | all2 = All articles sourced by IMDb }} }}<noinclude> {{documentation}} </noinclude> 1djmwbi3ri7rkjdgnq5r5zr0k7p2kba Template:BLP living dead 10 1174 2580 2579 2020-09-29T19:17:57Z Chrisb 1 1 revision imported 2579 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{BLP living dead}} begin-->{{Ambox | name = {{{name|BLP living dead}}} | subst = {{{subst|<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>}}} | type = content | class = ambox-BLP_sources | issue = The subject of this [[Wikipedia:Biographies of living persons|{{{prefix|}}} biographical {{#if:{{{suffix|{{{article|}}}}}}|{{{suffix|{{{1}}}}}}|article}}]] '''is shown as being deceased on {{ #if: {{{foreign-article|}}} |[[:{{{language-code}}}:{{{foreign-article}}}|another wiki-language article]]'''|another wiki-language article'''}}. {{#if:{{{reason|}}}|The reason given is: '''{{{reason}}}'''.}} | fix = Please help to find [[WP:RS|reliable sources]] to [[WP:V|confirm]] whether this individual is [[WP:LIVINGDEAD|alive or dead]], or correct any mis-categorization on the relevant foreign-language article(s). Further usage instructions for this template can be found [[Template:BLP living dead/doc|here]]. | date = {{{date|}}} | cat = Living people on EN wiki who are dead on other wikis }}<!--{{BLP living dead}} end--> }}<noinclude> {{Documentation}} </noinclude> apxclap1ijj1kyue2r7o3a267e1ezyu Template:BLP more footnotes needed 10 1281 2794 2793 2020-09-29T19:18:13Z Chrisb 1 1 revision imported 2793 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{More footnotes | date = {{{date|}}} | BLP = yes }} }}<noinclude> {{documentation}} {{Citation and verifiability article maintenance templates}} </noinclude> 213a7wwzl0b4krr3awcow0dyqr0c88f Template:BLP no footnotes 10 1221 2674 2673 2020-09-29T19:18:05Z Chrisb 1 1 revision imported 2673 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{No footnotes | date = {{{date|}}} | BLP = yes }} }}<noinclude> {{documentation}} {{Citation and verifiability article maintenance templates}} </noinclude> 8pyu1ancyu61p5swz7bkf9izef1u57b Template:BLP one source 10 1242 2716 2715 2020-09-29T19:18:08Z Chrisb 1 1 revision imported 2715 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{BLP one source}} begin-->{{Ambox | name = BLP one source | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | class = ambox-BLP_one_source | issue = This [[Wikipedia:Biographies of living persons|biography of a living person]] '''relies on a single source'''. | fix = You can help by adding reliable sources to this article. Contentious material about living people that is unsourced or poorly sourced '''must be removed immediately'''. | date = {{{date|}}} | removalnotice = yes | cat = BLP articles lacking sources | all = All BLP articles lacking sources }}<!--{{BLP one source}} end--> }}<noinclude> {{doc}}</noinclude> q201sbwktpa8awhbj63l7rzfmh4hk8v Template:BLP primary sources 10 954 2140 2139 2020-09-29T19:17:27Z Chrisb 1 1 revision imported 2139 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = BLP primary sources | subst = <includeonly>{{{subst|{{subst:substcheck}}}}}</includeonly> | type = content | class = ambox-Primary_sources | image = [[file:Question book-new.svg|50x40px]] | sect = [[Wikipedia:Biographies of living persons|biography of a living person]] | issue = '''relies too much on [[Wikipedia:Verifiability|references]] to [[Wikipedia:Biographies of living persons#Misuse of primary sources|primary sources]]'''. | fix = Please help by adding [[Wikipedia:No original research#Primary, secondary and tertiary sources|secondary or tertiary sources]]. Contentious material about living persons that is unsourced or poorly sourced '''must be removed immediately''', especially if potentially [[Wikipedia:Libel|libelous]] or harmful. | removalnotice = yes | cat = Articles lacking reliable references | date = {{{date|}}} | all = All articles lacking reliable references | cat2 = BLP articles lacking sources }} }}<noinclude> {{documentation}} </noinclude> 0wygoflp2rungwe74jf6nuwgbk7vvlb Template:BLP self-published 10 1192 2616 2615 2020-09-29T19:18:00Z Chrisb 1 1 revision imported 2615 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{BLP self-published}} begin-->{{Ambox | name = BLP self-published | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | issue = This [[Wikipedia:Biographies of living persons|biography of a living person]] {{strong|needs additional [[Wikipedia:Citing sources|citations]] for [[Wikipedia:Verifiability|verification]], as its only attribution is to [[Wikipedia:Verifiability#Self-published and questionable sources as sources on themselves|self-published sources]]}}; articles should not be based solely on such sources. | fix = Please help by adding [[Wikipedia:Reliable sources|reliable, independent sources]]. {{strong|Immediately remove}} contentious material about living people that is unsourced or poorly sourced. | cat = Articles lacking reliable references | date = {{{date|}}} | all = All articles lacking reliable references |removalnotice = yes }}<!--{{BLP self-published}} end--> }}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage and interwikis to wikidata, not here! --> </noinclude> 09y8f7qik5nx56mnqwnqy7lu969dijw Template:BLP sources 10 943 2118 2117 2020-09-29T19:17:26Z Chrisb 1 1 revision imported 2117 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{BLP sources}} begin-->{{Ambox | name = {{{name|BLP sources}}} | type = content | class = ambox-BLP_sources | issue = This {{#if:{{{1|}}}|{{{1}}} [[Wikipedia:Biographies of living persons|about a {{#if:{{{deceased|}}}|recently deceased|living}} person]] | {{{prefix|}}} [[Wikipedia:Biographies of living persons|biography of a {{#if:{{{deceased|}}}|recently deceased|living}} person]]}} '''needs additional [[Wikipedia:Citing sources|citations]] for [[Wikipedia:Verifiability|verification]]'''. {{#if:{{{reason|}}}|The reason given is: '''{{{reason}}}'''.}} | fix = Please help by adding [[Wikipedia:Reliable sources|reliable sources]]. Contentious material about {{#if:{{{deceased|}}}|recently deceased|living}} persons that is unsourced or poorly sourced '''must be removed immediately''', especially if potentially [[Wikipedia:Libel|libelous]] or harmful.<br /><small>{{find sources mainspace}}</small> | removalnotice = yes | date = {{{date|}}} | cat = BLP articles lacking sources | all = All BLP articles lacking sources }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using BLP sources with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:BLP sources]] with unknown parameter "_VALUE_"|ignoreblank=y | 1| date| name| prefix| reason| subst| deceased| }}<!--{{BLP sources}} end--> }}<noinclude> {{Documentation}} </noinclude> gros0l9iuuxwrj070iifjcb5qwcmjpj Template:BLP sources section 10 933 2098 2097 2020-09-29T19:17:24Z Chrisb 1 1 revision imported 2097 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{BLP sources |name=BLP sources section |prefix=section of a |date={{{date|}}} }} }}<noinclude> {{documentation}} </noinclude> bxjjj78lmi9f7zu3o2wi90atwretr9v Template:BLP unsourced 10 947 2126 2125 2020-09-29T19:17:26Z Chrisb 1 1 revision imported 2125 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{User other|__NOINDEX__|{{Ambox | name = {{{name|BLP unsourced}}} | subst= {{{subst|<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>}}} | type = content | class= ambox-BLP_unsourced | issue= This {{{prefix|}}} [[Wikipedia:Biographies of living persons|biography of a living person]] '''does not [[Wikipedia:Citing sources|include]] any [[Wikipedia:Verifiability|references or sources]]'''. | fix = Please help by adding [[Wikipedia:Reliable sources|reliable sources]]. Contentious material about living people that is unsourced or poorly sourced '''must be removed immediately'''.<br /><small>{{find sources mainspace}}</small> | removalnotice = yes | cat = {{{cat|Unreferenced BLPs}}} | date = {{{date|}}} | all = {{{all|All unreferenced BLPs}}} | all2 = All BLP articles lacking sources }}}} }}<noinclude> {{documentation}} </noinclude> avo7hplamalezu62jz271f7tcel53kj Template:BLP unsourced section 10 932 2096 2095 2020-09-29T19:17:24Z Chrisb 1 1 revision imported 2095 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{BLP unsourced |name = BLP unsourced section |subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> |prefix= section of a |date = {{{date|}}} |cat = BLP articles lacking sources |all = }} }}<noinclude> {{documentation}} </noinclude> qemaoj3thab1cumcizrd4x4yowi0dev Template:Bad summary 10 952 2136 2135 2020-09-29T19:17:27Z Chrisb 1 1 revision imported 2135 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = Bad summary | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = content | class = ambox-bad-summary | sect = {{{1|}}} | issue = '''may not properly [[Wikipedia:Summary style|summarize]] {{#if:{{{2|}}}|its [[{{{2}}}|corresponding main article]]|its corresponding main article}}'''. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] by rewriting it in an [[Wikipedia:Encyclopedic style|encyclopedic style]]. | removalnotice = yes | date = {{{date|}}} | all = Wikipedia articles with content forks }} }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> h3hquloepu6cbp5z5o567islfohu3wc Template:Being translated 10 941 2114 2113 2020-09-29T19:17:25Z Chrisb 1 1 revision imported 2113 wikitext text/x-wiki <!--{{Being translated}} begin-->{{Ambox | name = Being translated | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = notice | image = [[Image:Ambox clock.svg|48px|alt=|link=]] | text = This article '''is in the process of being translated from [[:{{{1}}}:{{{2}}}|{{{2}}}]] in the {{#language:{{{1}}}|en}}-language Wikipedia.''' In order to reduce edit conflicts, please consider not editing it while translation is in progress. | all = Pages actively undergoing construction | doc = no }}<!--{{Being translated}} begin--><noinclude> {{Documentation}} </noinclude> csm1tsoboi1uhpho30ni3udlesppajx Template:Believerpov 10 1196 2624 2623 2020-09-29T19:18:01Z Chrisb 1 1 revision imported 2623 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst| |date=__DATE__ |$B= <!--{{Believerpov}} begin-->{{Ambox | name = Believerpov | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | class = ambox-believerpov | issue = This {{{1|article}}} '''may be written from a [[Religious belief|believer's point of view]], rather than a [[Wikipedia:Neutral point of view|neutral point of view]]'''. | fix = Please [[Wikipedia:Cleanup|clean it up]] to conform to a [[:Category:Wikipedia style guidelines|higher standard]] of quality, and to make it neutral in tone. | date = {{{date|}}} | removalnotice = yes | cat = Articles with a promotional tone | all = All articles with a promotional tone }}<!--{{Believerpov}} end--> }}<noinclude> {{Documentation}} </noinclude> gl8l4p981f8h1k2on23b79may2304c9 Template:Berber script needed 10 989 2210 2209 2020-09-29T19:17:32Z Chrisb 1 1 revision imported 2209 wikitext text/x-wiki {{Script needed |language = Berber |image = Tifinagh in Tifinagh.svg }} mtixstx05arx1crej4xcwsozhoraiip Template:Beta 10 1497 4642 4641 2020-10-11T05:35:15Z Chrisb 1 1 revision imported 4641 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #DFDFFF; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="beta table-beta"|{{{1|[[software release life cycle#Beta{{!}}Beta]]}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> 9rveg708dhzulli61gvya14vg4kbvwd Template:Biblio 10 934 2100 2099 2020-09-29T19:17:24Z Chrisb 1 1 revision imported 2099 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | imageright = [[Image:Nuvola kdict glass.svg|50x40px]] | issue = The citations in this {{{1|article}}} '''lack sufficient bibliographical information (e.g. author, title, date of publication, publisher, [[International Standard Book Number|ISBN]], [[OCLC]] number, pages cited, etc.)'''. | fix = Specific concerns can be found on the {{#if:{{{talk|}}}|[[{{TALKPAGENAME}}#{{{talk}}}|Talk page]]|[[{{TALKPAGENAME}}|talk page]]}}. See [[Help:Referencing for beginners with citation templates]] for guidance about writing citations. | date = {{{date|}}} | removalnotice = yes | cat = Articles needing additional references | all = All articles needing additional references | name = Biblio }} }}<noinclude> {{documentation}} </noinclude> 3wxn5cngai7vcd1m6v2gweum0klzzoq Template:Big 10 1659 4966 4965 2020-10-11T05:50:42Z Chrisb 1 1 revision imported 4965 wikitext text/x-wiki <span style="font-size: 120%;">{{{1}}}</span><noinclude> {{Documentation}} <!-- Please add categories to the /doc subpage; interwikis go to Wikidata, thank you. --> </noinclude> h2e0f82fasmre1wg7mmooho2xrnyw8f Template:Black Exempt 10 1498 4644 4643 2020-10-11T05:35:15Z Chrisb 1 1 revision imported 4643 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: slategray; color: white; vertical-align: middle; text-align: {{{align|center}}}; {{{style|text-transform: capitalize;}}}" class="table-cast"|{{{1|B.Exempt}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} [[Category:Television table cell templates]] </noinclude> 9172kl9yf9329wgiehmmpkao6550pf5 Template:Blacklisted-links 10 1167 2566 2565 2020-09-29T19:17:57Z Chrisb 1 1 revision imported 2565 wikitext text/x-wiki {{#ifeq:{{{invisible|false}}}|true|[[Category:Tagged pages containing blacklisted links]]|{{Ambox |name = Blacklisted-links |subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> |type = style |image = [[Image:Ambox important.svg | 40x40px|link=|alt=]] |issue = [[Wikipedia:Bots|An automated process]] has detected links on this page on the '''[[MediaWiki:Spam-blacklist|local]] or [[:meta:Spam blacklist|global]] blacklist.''' |fix = If the links are appropriate you may [[Template:Blacklisted-links|request whitelisting by following these instructions]]; otherwise consider removing or replacing them with more appropriate links. <small>''(To hide this tag, set the "invisible" field to "true")''</small><div class="mw-collapsible mw-collapsed" style="border-style: none; padding: 0px;text-align:left;"><div style="background: transparent; text-align: left; font-weight: bold; padding:0.2em 0 0 0; display:inline;">List of blacklisted links:</div><div class="mw-collapsible-content" style="text-align: left; padding: 0px;"> {{{1}}}</div></div> |cat = Tagged pages containing blacklisted links |date = {{{date|}}} }}<!-- {{Blacklisted-links}} end -->}}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 6ti01biozogooahzns8ifsvmlqzffgk Template:Block indent 10 1313 2858 2857 2020-09-29T19:18:21Z Chrisb 1 1 revision imported 2857 wikitext text/x-wiki <div {{#if:{{{class|}}}|class="{{{class}}}"}} style="padding-left: {{{left|{{{em|3}}}}}}em; padding-right:{{{right|0}}}em; overflow: hidden; {{#if:{{{style|}}}|{{{style}}}}}">{{{1|{{{text|{{{content|{{{quote|<noinclude>{{lorem ipsum}}</noinclude><includeonly>{{error|Error: No content given to indent (or equals sign used in the actual argument to an unnamed parameter)}}</includeonly>}}}}}}}}}}}}</div><noinclude> {{documentation}} </noinclude> 3vz2s5qvaab7cqrrm3cuq98w03n63bs Template:Broad-concept article footer 10 1267 2766 2765 2020-09-29T19:18:11Z Chrisb 1 1 revision imported 2765 wikitext text/x-wiki <templatestyles src="Dmbox/styles.css" /> <table id="bcabox" class="metadata dmbox {{{class|}}}" style="{{{style|}}}" role="presentation"> <tr> {{#if:{{{image|}}} |<td class="mbox-image" style="padding: 2px 0 2px 0.4em;">{{{image}}}</td> |<!-- No image. Cell with some width or padding necessary for text cell to have 100% width. --><td class="mbox-empty-cell"></td> }} <td class="mbox-text" style="padding: 0.25em 0.4em; font-style: italic; {{{textstyle|}}}"><includeonly>{{yesno|{{{nocat|{{main other|no|yes}}}}}|yes=|no=[[Category:Broad-concept articles]]|def={{error|{{PAGENAME}} {{param|nocat}} should be a yes or no value.}}<br />}}</includeonly>This is a [[Wikipedia:Broad-concept article|Broad-concept article]]. <br /> <small class="plainlinks">If an [{{fullurl:Special:WhatLinksHere/{{{page-title|{{FULLPAGENAME}}}}}|namespace=0}} internal link] led you here, you may wish to change the link to point to one of the related topics mentioned here.</small></td> {{#if:{{{imageright|}}} | <td class="mbox-imageright" style="padding: 2px 0.4em 2px 0;"> {{{imageright}}} </td> }} </tr> </table><noinclude> {{Documentation}} <!-- Add categories to the /doc subpage and interwikis to Wikidata, not here! --> </noinclude> bbqwmlryn5fzcubxka8w6ejouzla76x Template:Broaden 10 1199 2630 2629 2020-09-29T19:18:02Z Chrisb 1 1 revision imported 2629 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!-- {{Broaden}} begin -->{{ambox | name = Broaden | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | class = ambox-globaliz | issue = The examples and perspective in this {{{1|article}}} '''{{#if:{{{2|}}}{{{3|}}}{{{4|}}}|are skewed towards a single field {{#if:{{{4|}}}|{{{2name|{{{2}}}}}}, {{{3name|{{{3}}}}}}, and {{{4name|{{{4}}}}}}|{{#if:{{{3|}}}|{{{2name|{{{2}}}}}} and {{{3name|{{{3}}}}}}|{{{2name|{{{2}}}}}}}}}} and do|may}} not represent a [[Wikipedia:WikiProject Countering systemic bias|full view]] of the subject'''. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] and discuss the issue on the {{#if:{{{discussion|}}}{{{discuss|}}}{{{talk|}}} |[[{{{discussion|}}}{{{discuss|}}}{{{talk|}}}|talk page]] |[[{{TALKPAGENAME}}|talk page]] }}. | date = {{{date|}}} | small = {{{small|}}} | cat = Articles with limited geographic scope | all = {{#if:{{{2|}}}|{{#ifexist:Category:{{{2}}}-centric|{{{2}}}-centric|Pages in non-existent country centric categories}}}} | all2 = {{#if:{{{3|}}}|{{#ifexist:Category:{{{3}}}-centric|{{{3}}}-centric|Pages in non-existent country centric categories}}}} | all3 = {{#if:{{{4|}}}|{{#ifexist:Category:{{{4}}}-centric|{{{4}}}-centric|Pages in non-existent country centric categories}}}} }}<!-- {{Globalize}} end --> }}<noinclude> {{Documentation}} <!-- Add categories and inter-wikis to the /doc subpage, not here! --> </noinclude> 0koak4t0gqdtopbmucb10p9qu6tnp0q Template:Broken ref 10 1606 4860 4859 2020-10-11T05:39:02Z Chrisb 1 1 revision imported 4859 wikitext text/x-wiki <!-- Prefix: MediaWiki:Cite error -->{{#if:{{{prefix|}}} |{{#invoke:Namespace detect|main | main = {{{prefix|}}} | category = {{{prefix|}}} | template = {{{prefix|}}} | file = {{{prefix|}}} | help = {{{prefix|}}} | portal = {{{prefix|}}} | wikipedia = {{{prefix|}}} | draft = {{{prefix|}}} | other = <span class="brokenref">{{{prefix|}}}</span> }}<!-- All other errors -->|{{#invoke:Namespace detect|main | main = {{broken ref/lang |msg={{{msg|}}} |lang={{{lang|}}} |help={{{help|}}}}} | category = {{broken ref/lang |msg={{{msg|}}} |lang={{{lang|}}} |help={{{help|}}}}} | template = {{broken ref/lang |msg={{{msg|}}} |lang={{{lang|}}} |help={{{help|}}}}} | file = {{broken ref/lang |msg={{{msg|}}} |lang={{{lang|}}} |help={{{help|}}}}} | help = {{broken ref/lang |msg={{{msg|}}} |lang={{{lang|}}} |help={{{help|}}}}} | portal = {{broken ref/lang |msg={{{msg|}}} |lang={{{lang|}}} |help={{{help|}}}}} | wikipedia = {{broken ref/lang |msg={{{msg|}}} |lang={{{lang|}}} |help={{{help|}}}}} | draft = {{broken ref/lang |msg={{{msg|}}} |lang={{{lang|}}} |help={{{help|}}}}} | other = <span class="brokenref">{{broken ref/lang |msg={{{msg|}}} |lang={{{lang|}}} |help={{{help|}}} }}</span> }}<!-- Category management -->{{#invoke:Namespace detect|main | main = {{broken ref/cat |help={{{help|}}} |nocat={{{nocat|}}} |sortkey=}} | category = {{broken ref/cat |help={{{help|}}} |nocat={{{nocat|}}} |sortkey=γ}} | template = {{broken ref/cat |help={{{help|}}} |nocat={{{nocat|}}} |sortkey=τ}} | file = {{broken ref/cat |help={{{help|}}} |nocat={{{nocat|}}} |sortkey=ι}} | help = {{broken ref/cat |help={{{help|}}} |nocat={{{nocat|}}} |sortkey=ω}} | portal = {{broken ref/cat |help={{{help|}}} |nocat={{{nocat|}}} |sortkey=ρ}} | wikipedia = {{broken ref/cat |help={{{help|}}} |nocat={{{nocat|}}} |sortkey=ψ}} | draft = {{broken ref/cat |help={{{help|}}} |nocat={{{nocat|}}} |sortkey=δ}} | other = }} }} <noinclude>{{documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> {{reflist}} <!-- dummy to steer automated tools away from this template --> </noinclude> m5q6b0mf2honawv8hfmqffsisu655w3 Template:Broken ref/cat 10 1607 4862 4861 2020-10-11T05:39:03Z Chrisb 1 1 revision imported 4861 wikitext text/x-wiki <includeonly>{{#if:{{{nocat|}}}| | [[Category:{{#switch: {{{help|}}} | Cite error references no text = Pages with broken reference names | Cite error group refs without references = Pages with missing references list | Cite error references duplicate key = Pages with duplicate reference names | #default = Pages with incorrect ref formatting }}|{{{sortkey|}}}{{PAGENAME}}]] }}</includeonly><noinclude>{{documentation}}</noinclude> 6zxtu60u084ssjefzrfk4s10hek5qit Template:Broken ref/lang 10 1608 4864 4863 2020-10-11T05:39:03Z Chrisb 1 1 revision imported 4863 wikitext text/x-wiki <noinclude>{{pp-template|small=yes}}{{used in system}}</noinclude>{{{msg|<span class="error">Error: no message set for {{tl|broken ref}}</span>}}} ({{#switch:{{{lang|}}} | en = see the [[Help:Cite errors/{{{help|}}}|help page]] | es = consulta la [[Help:Cite errors/{{{help|}}}|página de ayuda]] | en-gb = see the [[Help:Cite errors/{{{help|}}}|help page]] | fr = vous pouvez consulter [[Help:Cite errors/{{{help|}}}|la page d'aide]] pour plus d'informations | pt-br = veja [[Help:Cite errors/{{{help|}}}|a página de ajuda]] para mais informações | ru = подробнее см. [[Help:Cite errors/{{{help|}}}|справочную страницу]] | de = siehe die [[Help:Cite errors/{{{help|}}}|Hilfeseite]] für weitere Informationen | id = lihat [[Help:Cite errors/{{{help|}}}|halaman bantuan]] untuk informasi lebih lanjut | ar = [[Help:Cite errors/{{{help|}}}|صفحة المساعدة]] للمزيد من المعلومات | nl = meer informatie staat op de [[Help:Cite errors/{{{help|}}}|hulppagina]] | zh-cn = 详情参见[[Help:Cite errors/{{{help|}}}|帮助页]]. | ro = vedeți [[Help:Cite errors/{{{help|}}}|pagina de ajutor]] pentru mai multe informații | it = vedi la [[Help:Cite errors/{{{help|}}}|pagina di aiuto]] per maggiori informazioni | tr = [[Help:Cite errors/{{{help|}}}|yardım sayfasına]] bakınız | en-ca = see the [[Help:Cite errors/{{{help|}}}|help page]] }}).<!-- Languages are in order by preference popularity --> 12ss0a10b3kuin1cbmrq0e2655dwfwo Template:Broken syntax 10 1276 2784 2783 2020-09-29T19:18:12Z Chrisb 1 1 revision imported 2783 wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B= <!--{{Expand section}} begin-->{{Ambox | name = Broken syntax | type = content | small = {{{small|left}}} | image = [[File:Wiki letter w cropped.svg|{{#ifeq:{{{small|}}}|no|44px|20px}}|alt=&#91;icon&#93;]] | issue = This section’s '''syntax is broken'''{{#if:{{{with|{{{for|{{{1|}}}}}}}}} | &#32;with: {{{with|{{{for|{{{1}}}}}}}}}}}{{#ifeq:{{{punctuation|{{{period|}}}}}}|no||.}} <small>You can help by [{{fullurl:{{FULLPAGENAME}}|action=edit&section={{{section|}}}}} fixing it].</small> | talk = {{{talk|{{{discuss|{{{talksection|}}}}}}}}} | all = All articles Syntax to be fixed | cat = Articles that have a syntax problem | date = {{{date|}}} }}<!--{{Expand section}} end--> }}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 4t3cvbiad6v403kwndkcxzbgvbcrc99 Template:Burmese script needed 10 1063 2358 2357 2020-09-29T19:17:42Z Chrisb 1 1 revision imported 2357 wikitext text/x-wiki {{Script needed |language = Burmese |image = Burm ABC.svg }} agd2i4n5egwh84l7s663f1tenuz7q9k Template:Buzzword 10 962 2156 2155 2020-09-29T19:17:28Z Chrisb 1 1 revision imported 2155 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = Buzzword | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | issue = This {{{1|article}}} appears to '''{{#ifeq:{{{2|{{{reason|}}}}}}||contain a large number of [[Buzzword|buzzwords]]|{{{2|{{{reason}}}}}}}}'''. | fix = There might be a discussion about this on the {{#if:{{{talk|}}}|[[{{TALKPAGENAME}}#{{{talk}}}|talk page]]|[[{{TALKPAGENAME}}|talk page]]}}. Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{{1|{{#if:{{NAMESPACE}}|{{lc:{{NAMESPACE}}}} page|article}}}}}] if you can. | date = {{{date|}}} | cat = Wikipedia articles containing buzzwords }} }}<noinclude> {{Documentation}} </noinclude> 4hqc8j2in4rx8zrl5y1et7xp6nnxdkp Template:C 10 1643 4934 4933 2020-10-11T05:50:38Z Chrisb 1 1 revision imported 4933 wikitext text/x-wiki [[:Category:{{PAGENAME:{{{1}}}}}|{{{2|{{PAGENAME:{{{1}}}}}}}}]]<noinclude> {{Documentation}} </noinclude> 5ihlenrrtiyl0onp17hzt1jb0im35x9 Template:CAlso starring 10 1499 4646 4645 2020-10-11T05:35:15Z Chrisb 1 1 revision imported 4645 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #ffd; color: black; vertical-align: middle; text-align: {{{align|center}}};{{{style|}}}" class="table-cast"|{{{1|[[Ensemble cast|Also starring]]}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} [[Category:Television table cell templates]] </noinclude> sjo1vx011xiwqgoxmqz5gdv7q0sei00 Template:CEmpty 10 1500 4648 4647 2020-10-11T05:35:16Z Chrisb 1 1 revision imported 4647 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #D3D3D3; vertical-align: middle; {{{style|text-transform: capitalize;}}}" class="table-cast"|<noinclude> |} {{Documentation|Template:Table cell templates/doc}} [[Category:Television table cell templates]] </noinclude> 6t4s6676xvmn5ql2uwwk2cp0pi6vp5a Template:CFinalist 10 1501 4650 4649 2020-10-11T05:35:16Z Chrisb 1 1 revision imported 4649 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: {{#switch: {{lc:{{{place|Finalist}}}}} |3rd place|third place|2nd runner-up = {{{color|<nowiki>#</nowiki>ffffdd}}} |4th place|fourth place = {{{color|<nowiki>#</nowiki>ffffdd}}} |5th place|fifth place= {{{color|<nowiki>#</nowiki>ffffdd}}} |6th place|sixth place = {{{color|<nowiki>#</nowiki>ffffdd}}} |7th place|seventh place = {{{color|<nowiki>#</nowiki>ffffdd}}} |8th place|eighth place = {{{color|<nowiki>#</nowiki>ffffdd}}} |#default = {{{color|<nowiki>#</nowiki>ffffdd}}} }}; color: {{{text|black}}}; vertical-align: middle; text-align: {{{align|center}}};" class="table-cast"|{{{1|{{{place|finalist}}}}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} [[Category:Television table cell templates]] [[Category:Big Brother (franchise) templates]] </noinclude> dx9uzhdifcwhkwabqstyzlq2gtbkebh Template:CGuest 10 1502 4652 4651 2020-10-11T05:35:16Z Chrisb 1 1 revision imported 4651 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #DAEBFF; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-cast"|{{{1|[[Guest appearance|Guest]]}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} [[Category:Television table cell templates]] </noinclude> h3py5vtbbd7xifh217j9bpnej0c9j2f Template:CIA-Sect 10 925 2082 2081 2020-09-29T19:17:23Z Chrisb 1 1 revision imported 2081 wikitext text/x-wiki {{ambox | name = CIA-Sect | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | text = To meet Wikipedia's [[:Category:Wikipedia style guidelines|quality standards]], this section '''may require rewriting or reformatting'''. The current version of this section was [[Wikipedia:Status of the porting of the CIA World Factbook|imported from the CIA World Factbook]]. Please discuss this issue on the [[Talk:{{PAGENAME}}|talk page]]. [[Help:Editing|Editing help]] is available. | all = CIA World Factbook cleanup }}<noinclude> {{doc}} </noinclude> a204ddy1bumro7sfvgojzy2vjzzpugw Template:CMain 10 1503 4654 4653 2020-10-11T05:35:16Z Chrisb 1 1 revision imported 4653 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #ddffdd; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-cast"|{{{1|[[Ensemble cast|Main]]}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} [[Category:Television table cell templates]] </noinclude> 3dhq04avc3jx59bc9r4wt12vkoi961u Template:CNone 10 1504 4656 4655 2020-10-11T05:35:16Z Chrisb 1 1 revision imported 4655 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #ECECEC; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-cast"|{{{1|<!-- Accessibility text for screen readers only --><span style="display: none">Does not appear</span>}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} [[Category:Television table cell templates]] </noinclude> muk4a5nzr7e05ihohmfr955s9do30mq Template:COI 10 1087 2406 2405 2020-09-29T19:17:45Z Chrisb 1 1 revision imported 2405 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{COI}} begin-->{{Ambox | name = COI | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | class = ambox-COI | image = [[File:Unbalanced scales.svg|50x40px|link=]] | issue = ''' A major contributor to this {{{1|article}}} appears to have a [[Wikipedia:Conflict of interest|close connection]] with its subject.''' | fix = It may require cleanup to comply with Wikipedia's content policies, particularly [[Wikipedia:Neutral point of view|neutral point of view]]. Please discuss further on the [[{{TALKPAGENAME}}|talk page]]. | removalnotice = yes | date = {{{date|}}} | cat = Wikipedia articles with possible conflicts of interest }}<!--{{COI}} end--> }}<noinclude> {{Documentation}} </noinclude> qm5pg9her371bv8zlb6co1dxpya6xj6 Template:COther 10 1505 4658 4657 2020-10-11T05:35:16Z Chrisb 1 1 revision imported 4657 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background-color: #FFF; text-align: {{{align|center}}}; {{{style|}}}" class="table-cast"|{{{1|<!-- Accessibility text for screen readers only --><span style="display: none">Does not appear</span>}}}<noinclude> |} {{documentation|Template:Table cell templates/doc}} [[Category:Television table cell templates]] </noinclude> 4vmj1uo0hnm05jpbig34y88zurbofls Template:CRecurring 10 1506 4660 4659 2020-10-11T05:35:16Z Chrisb 1 1 revision imported 4659 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #ffe3e3; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-cast"| {{{1|[[Recurring character|Recurring]]}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} [[Category:Television table cell templates]] </noinclude> oz0244rru0c3n8awd0zkezz471dy9lv Template:CRemoved 10 1507 4662 4661 2020-10-11T05:35:16Z Chrisb 1 1 revision imported 4661 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #FFE08B; vertical-align: middle; text-align: {{{align|center}}}; {{{style|text-transform: capitalize;}}}" class="table-cast"|{{{1|removed}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} [[Category:Television table cell templates]] [[Category:Big Brother (franchise) templates]] </noinclude> ge4ivuxx0k3t8uj8upcitjrag186lyi Template:Category handler 10 1444 3192 3191 2020-10-11T01:32:03Z Chrisb 1 1 revision imported 3191 wikitext text/x-wiki {{#invoke:Category handler|main}}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage, and interwikis to Wikidata. --> </noinclude> og6fhyj2ssd4fmzpqzuodk12q3cms0z Template:Category link 10 1644 4936 4935 2020-10-11T05:50:38Z Chrisb 1 1 revision imported 4935 wikitext text/x-wiki {{#ifeq:{{#titleparts:{{PAGENAME}}|1}}|Stub types for deletion |[[:Category:{{{1}}}|Cat:{{{1}}}]] | [[:Category:{{{1}}}|{{{2|Category:{{{1}}}}}}]]{{#ifeq:{{Yesno|{{{count|no}}}}}|yes|<small> {{#ifexpr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}>={{{backlog|{{#expr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}+1}}}}}|<span style="font-weight: bold; color: #DD0000;">}}(&thinsp;{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}}}&thinsp;){{#ifexpr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}>={{{backlog|{{#expr:{{PAGESINCAT:{{{1}}}|{{UC:{{{count_type|ALL}}}}}|R}}+1}}}}}|</span>}}</small>}}}}<noinclude> {{Documentation}} </noinclude> npwya2pxpmrb7ss01243bg1cub9s7jq Template:Category link with count 10 1660 4968 4967 2020-10-11T05:50:42Z Chrisb 1 1 revision imported 4967 wikitext text/x-wiki [[:Category:{{#ifeq:{{str left|{{{1}}}|9}}|Category:|{{str right|{{{1}}}|9}}|{{{1}}}}}|<!-- -->{{#if:{{{name|}}}|{{{name}}}|Category:{{#ifeq:{{str left|{{{1}}}|9}}|Category:|{{str right|{{{1}}}|9}}|{{{1}}}}}}}<!-- -->]]&nbsp;({{PAGESINCATEGORY:{{#ifeq:{{str left|{{{1}}}|9}}|Category:|{{str right|{{{1}}}|9}}|{{{1}}}}}|{{{2|all}}}}})<noinclude> {{Documentation}} </noinclude> elaxrfjlnj9f326kw022s89sr3t43tc Template:Caution 10 1265 2762 2761 2020-09-29T19:18:11Z Chrisb 1 1 revision imported 2761 wikitext text/x-wiki {{Mbox | name = Caution | demospace = {{{demospace|}}} | style = {{#if:{{{style|}}} |{{#if:{{{small|}}}||margin:inherit auto;width:80%;}} {{{style}}} }} | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | image = {{#if:{{{image|}}} |[[File:{{{image}}}|40px|Caution|link={{{imagelink|}}}]] |[[File:Ambox warning yellow.svg|40px|Caution|link={{{imagelink|}}}]]}} | small = {{{small|}}} | smallimage = {{#if:{{{image|}}} |[[File:{{{image}}}|40px|Caution|link={{{imagelink|}}}]] |[[File:Ambox warning yellow.svg|30px|Caution|link={{{imagelink|}}}]]}} | imageright = {{#if:{{{imageright|}}} |{{{imageright}}} |{{#if:{{{shortcut|{{{shortcut1|}}}}}} |{{Ombox/shortcut|{{{shortcut|{{{shortcut1|}}}}}}|{{{shortcut2|}}}|{{{shortcut3|}}}|{{{shortcut4|}}}|{{{shortcut5|}}}}}}} }} | textstyle = {{{textstyle|{{{align|text-align: {{#if:{{{center|}}}|center|left}};}}}}}} | text = {{#if:{{{header|{{{heading|{{{title|}}}}}}}}} |<div style="text-align:{{#if:{{{center|}}}|center|left}};">'''{{{header|{{{heading|{{{title|}}}}}}}}}'''</div>}}<!-- -->{{{text|{{{content|{{{reason|{{{1}}}}}}}}}}}} }}<noinclude>{{Documentation}}</noinclude> pd0yqegnfdsj89sf3zt5sihlrghclhd Template:Check category 10 1289 2810 2809 2020-09-29T19:18:14Z Chrisb 1 1 revision imported 2809 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Check category}} begin-->{{Ambox | name = Check category | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | issue = This article may be in the wrong '''[[Wikipedia:Category|category]]''' or belong in further categories. | fix = Please [[Wikipedia:Categorization|re-categorize]] this article to list it with similar topics or add further categories if required. If you are satisfied that the article is in the correct category please remove this tag. | date = {{{date|}}} | removalnotice = yes | all = Category needs checking }}<!--{{Check category}} end--> }}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> gkwckih15t7u88iyxle4oe1vc28vtct Template:Cherokee script needed 10 990 2212 2211 2020-09-29T19:17:32Z Chrisb 1 1 revision imported 2211 wikitext text/x-wiki {{Script needed |language = Cherokee |image = Cherokee sample.svg }} 8af6o9q4hfyxli7ntmq8fkt7kx4qk52 Template:Chicago style 10 1181 2594 2593 2020-09-29T19:17:58Z Chrisb 1 1 revision imported 2593 wikitext text/x-wiki {{Ambox |name = Chicago style |small = {{{small|}}} |type = notice |issue = This {{SUBJECTSPACE formatted}} '''uses [[The Chicago Manual of Style|Chicago style]] [[Wikipedia:Parenthetical referencing|citation format]].''' This should not be changed without broad consensus. }}<includeonly>[[Category:Articles using Chicago style citation format]]</includeonly><noinclude> {{documentation|content= Adding this template to a page automatically adds that page to the hidden category [[:Category:Articles using Chicago style citation format]]. <pre>{{Chicago style}}</pre> produces {{Chicago style}} <pre>{{Chicago style|small={{{small|left}}}}}</pre> produces {{Chicago style|small={{{small|left}}}}} }} </noinclude> pznlunxfiaumgbmop4sb9bwkzl3iu0w Template:Chinese script needed 10 991 2214 2213 2020-09-29T19:17:32Z Chrisb 1 1 revision imported 2213 wikitext text/x-wiki {{Script needed |language = Chinese |image = Hanzi.svg }} euh3yzwnlajdbb6u1ac601a8oc0m9hp Template:Chronological 10 1164 2560 2559 2020-09-29T19:17:56Z Chrisb 1 1 revision imported 2559 wikitext text/x-wiki <!--{{POV}} begin-->{{Ambox | name = Chronological | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = style | image = [[File:Orologio oro.svg|40x40px|link=|alt=]] | sect = {{#ifeq:{{yesno|def=|1={{{sect|{{{section}}}}}} }}|yes|section|{{{sect|{{{section|{{{1|}}}}}}}}} }} | issue = lists events whose '''chronological order is ambiguous, backward, or otherwise incorrect'''. | talk = {{{talk|#}}} | fix = Please do not remove this message until the described events are arranged in an unambiguous forward-chronological sequence. | date = {{{date|}}} | cat = | all = }}<noinclude> {{Documentation}} </noinclude> beq2xmk2fi8x1dbyx4x8lovgeu8b06b Template:Citation style 10 1004 2240 2239 2020-09-29T19:17:33Z Chrisb 1 1 revision imported 2239 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Citation style}} begin-->{{Ambox | name = Citation style | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | small = {{{small|}}} | class = ambox-citation_style | sect = {{{1|}}} | issue = '''has an unclear citation style'''. | fix = The references used may be made clearer with a different or consistent style of [[Wikipedia:Citing sources|citation]] and [[Help:Footnotes|footnoting]]. {{#if:{{{details|}}}|<em>{{{details}}}.</em>}} | cat = Wikipedia references cleanup | all = All articles needing references cleanup | cat2 = Articles covered by WikiProject Wikify | all2 = All articles covered by WikiProject Wikify | date = {{{date|}}} | removalnotice = yes }}<!--{{Citation style}} end--> }}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> rvjcf4vzh6qbaflcbcdq71nzxi9zi2m Template:Citations broken 10 1005 2242 2241 2020-09-29T19:17:33Z Chrisb 1 1 revision imported 2241 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Citations broken}} begin-->{{Ambox | name = Citations broken | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | image = [[Image:Text document with red question mark.svg|50x40px]] | issue = This {{{1|article}}} '''uses [[Wikipedia:Citing sources|citations]] that [[WP:Link rot|link to broken or outdated sources]]'''. {{#if:{{{details|}}}|{{{details|}}}}} | fix = Please {{plain link|url={{SERVER}}{{localurl:{{PAGENAME}}|action=edit}} improve the article}} or discuss this issue on the [[{{TALKPAGENAME}}|talk page]]. [[Wikipedia:Footnotes#How to use|Help]] on using footnotes is available.<!-- Consider using [[tools:~dispenser/cgi-bin/webchecklinks.py/{{PAGENAMEE}}|the Checklinks tool]] to find, resolve and repair links. --> | date = {{{date|}}} | cat = Articles with broken or outdated citations | all = All articles with broken or outdated citations | removalnotice = yes }}<!--{{Citations broken}} end--> }}<noinclude> {{Documentation}} </noinclude> t1fu9akx2a3messnvulaoe3l6ndiwi9 Template:Cite check 10 1006 2244 2243 2020-09-29T19:17:33Z Chrisb 1 1 revision imported 2243 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Cite check}} begin-->{{Ambox | name = Cite check | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | image = [[File:Text document with red question mark.svg|50x40px]] | issue = This {{{1|article}}} '''possibly contains inappropriate or misinterpreted [[WP:CITE|citations]] that do not [[WP:V|verify]] the text'''. {{#if:{{{reason|}}}|The reason given is: '''{{{reason}}}'''}} | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by checking for citation inaccuracies. | talk = {{{talk|}}} | cat = Articles lacking reliable references | date = {{{date|}}} | removalnotice = yes | all = All articles lacking reliable references }}<!--{{Cite check}} end--> }}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! --> </noinclude> p48ugx6eldbud5jgjmpzuqkskit2jho Template:Cite news 10 1445 3194 3193 2020-10-11T01:32:03Z Chrisb 1 1 revision imported 3193 wikitext text/x-wiki <includeonly>{{#invoke:citation/CS1|citation |CitationClass=news }}</includeonly><noinclude> {{documentation}} </noinclude> pbjnspfej5gxihr9izxrzkow3f1uf3i Template:Cite web 10 1446 3196 3195 2020-10-11T01:32:03Z Chrisb 1 1 revision imported 3195 wikitext text/x-wiki <includeonly>{{#invoke:citation/CS1|citation |CitationClass=web }}</includeonly><noinclude> {{documentation}} </noinclude> rcgmbcxu7hvs583g1f3rzz4c4dkizda Template:Cl 10 1645 4938 4937 2020-10-11T05:50:39Z Chrisb 1 1 revision imported 4937 wikitext text/x-wiki #REDIRECT [[Template:Category link]] {{R from move}} sxb6uqb5pxx7i9ck11lxcop05gxni7w Template:Clc 10 1661 4970 4969 2020-10-11T05:50:42Z Chrisb 1 1 revision imported 4969 wikitext text/x-wiki #REDIRECT [[Template:Category link with count]] 092gm3mu5vr84eif0gc6y7q98csnc9h Template:Cleanup 10 1197 2626 2625 2020-09-29T19:18:01Z Chrisb 1 1 revision imported 2625 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{#ifexpr:{{#expr:{{#iferror:{{#time:U|{{{date}}}}}|2000000000}}>=1341100800}}*{{#if:{{{reason|<noinclude>x</noinclude>}}}|0|1}}*{{#ifeq:{{{nocat}}}|true|0|1}} |{{error|1=You must add a {{para|reason}} parameter to this Cleanup template – replace it with <code><nowiki>{{Cleanup|</nowiki>{{#if:{{{1|}}}|{{{1|}}}{{!}}|}}{{#if:{{{date|}}}|<nowiki>date=</nowiki>{{{date|}}}{{!}}}}<nowiki>reason=<Fill reason here>}}</nowiki></code>, or remove the Cleanup template.<br style="clear:both;"> }}{{Category handler |nocat = {{{nocat|}}} |main = {{DMC|Cleanup tagged articles without a reason field|from|{{{date|}}}}} }} |{{main other |{{ambox | name = Cleanup | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | class = ambox-Cleanup | small = {{{small|}}} | sect = {{{1|}}} | issue = may '''require [[Wikipedia:cleanup|cleanup]]''' to meet Wikipedia's [[Wikipedia:Manual of Style|quality standards]]. {{#if:{{{2|{{{reason|}}}}}} |The specific problem is: '''{{{2|{{{reason}}}}}}''' }} | talk = {{{talk|{{{talksection|}}}}}} | fix = {{#if:{{{2|{{{reason|}}}}}}| |No [[Template:Cleanup/doc|cleanup reason]] has been specified. }} Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{{1|{{SUBJECTSPACE formatted}}}}}] if you can. | removalnotice = yes | date = {{{date|}}} | cat = Articles needing cleanup | all = All pages needing cleanup | cat2 = Cleanup tagged articles with{{#if:{{{2|{{{reason|}}}}}}||out}} a reason field }} |{{mbox | demospace = {{{demospace|}}} | type = style | text = This {{{1|{{SUBJECTSPACE formatted}}}}} '''may require [[Wikipedia:cleanup|cleanup]] to meet Wikipedia's [[Wikipedia:Manual of Style|quality standards]]'''. {{#if:{{{2|{{{reason|}}}}}} |The specific problem is: '''{{{2|{{{reason}}}}}}''' |No [[Template:Cleanup/doc|cleanup reason]] has been specified. }} Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{{1|{{SUBJECTSPACE formatted}}}}}] if you can{{#ifeq:{{SUBJECTSPACE}}|{{NAMESPACE}} |&#59; the [[{{TALKPAGENAME}}{{#if:{{{talksection|}}}|&#35;{{{talksection}}}}}|talk page]] may contain suggestions. |. }} }} | demospace = {{{demospace|<noinclude>main</noinclude>}}} }}{{Category handler |page = {{SUBJECTPAGENAME}} |nocat = {{{nocat|}}} |category = {{DMC|Wikipedia categories needing cleanup|from|{{{date|}}}}} |template = {{#ifeq:{{#titleparts:{{FULLPAGENAME}}|1}}|Template:Cleanup||{{DMC|Wikipedia templates needing cleanup|from|{{{date|}}}}}}} |other = {{DMCA|Wikipedia pages needing cleanup|from|{{{date|}}}}} }} }} }}<noinclude> {{Documentation}} </noinclude> 5e3z12y1koj4dg9rtv10gu1ojmgr2gl Template:Cleanup-PR 10 1252 2736 2735 2020-09-29T19:18:09Z Chrisb 1 1 revision imported 2735 wikitext text/x-wiki <noinclude>{{for|the citation template|Template:Cite press release}}</noinclude>{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{News release}} begin-->{{Ambox | name = Cleanup-PR | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | sect = {{{1|}}} | issue = '''reads like [[Wikipedia:What Wikipedia is not#SOAPBOX|{{#if:{{{2|}}}|{{{2}}}|a press release}}]] or [[Wikipedia:What Wikipedia is not#NEWS|{{#if:{{{3|}}}|{{{3}}}|a news article}}]]''' and '''is largely based on [[Wikipedia:Notability (events)#Routine coverage|routine coverage]]''' or '''[[Wikipedia:Notability (events)#Sensationalism|sensationalism]]'''. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} expand this article] with [[Wikipedia:Identifying reliable sources|properly sourced content]] to meet Wikipedia's [[Wikipedia:Manual of Style| quality standards]], [[Wikipedia:Notability (events)|event notability guideline]], or [[Wikipedia:What Wikipedia is not|encyclopedic content policy]]. | date = {{{date|}}} | cat = Articles with a promotional tone | all = All articles with a promotional tone }}<!--{{News release}} end--> }}<noinclude> {{Documentation}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --> </noinclude> hdey3q64oltra9qnp7d6fmfzhwjs0e0 Template:Cleanup-notwebhost 10 1244 2720 2719 2020-09-29T19:18:08Z Chrisb 1 1 revision imported 2719 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Cleanup-notwebhost}} begin-->{{Ambox | name = Cleanup-notwebhost | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | class = ambox-notwebhost | issue = '''[[WP:NOTWEBHOST|Wikipedia is not a web host]]'''. To conform to a [[:Category:Wikipedia style guidelines|higher standard]] of quality, this article may need to be [[Wikipedia:Cleanup|rewritten]] from a [[Wikipedia:Neutral point of view|neutral point of view]]. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by adding encyclopedic content and [[Wikipedia:Identifying reliable sources|reliable secondary sources]]. There may be relevant discussion on the [[:{{NAMESPACE}} talk:{{PAGENAME}}#{{{talk|{{{2|}}}}}}|talk page]].<br /><small>{{find sources mainspace}}</small> | removalnotice = yes | date = {{{date|}}} | cat = Articles with a promotional tone | all = All articles with a promotional tone }}<!--{{Cleanup-notwebhost}} end--> }}<noinclude> {{Documentation}} </noinclude> sfk1s9s70dregtndcryq1metki3478p Template:Cleanup AfD 10 1155 2542 2541 2020-09-29T19:17:55Z Chrisb 1 1 revision imported 2541 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = Cleanup AfD | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = style | class = ambox-cleanup-afd | sect = article | issue = '''was [[Wikipedia:Articles for deletion|considered for deletion]], and requires [[Wikipedia:Cleanup|cleanup]] according to [[Wikipedia:Articles for deletion/{{{1|{{PAGENAME}}}}}|the discussion]]'''. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] if you can; the deletion discussion may suggest necessary improvements. | removalnotice = yes | date = {{{date|}}} | cat = Articles needing cleanup | all = All pages needing cleanup }} }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> loxj2vy335edd67qfrd3nzu298qc43p Template:Cleanup Congress bio 10 1292 2816 2815 2020-09-29T19:18:15Z Chrisb 1 1 revision imported 2815 wikitext text/x-wiki <!--{{Cleanup Congress bio}} begin-->{{Ambox | name = Cleanup Congress bio | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | imageright = [[File:Seal of the United States Congress.svg|50x40px|US Congress seal]] | issue = This article was '''[[Wikipedia:WikiProject U.S. Congress/Bioguide|imported]] in part or in full from the [[Biographical Directory of the United States Congress]]''' and may require [[Wikipedia:Cleanup|cleanup]] to meet Wikipedia's [[:Category:Wikipedia style guidelines|quality standards]]. | fix = [[Help:Editing|Editing help]] is available. | all = Biographical Directory of the United States Congress cleanup | removalnotice = yes }}<!--{{Cleanup Congress bio}} end--><noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 1nj08csz3sw3dutjjqnf116bntp0jsb Template:Cleanup HTML 10 1263 2758 2757 2020-09-29T19:18:11Z Chrisb 1 1 revision imported 2757 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Cleanup HTML begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Cleanup HTML | type = style | image = [[File:Ambox wikify.svg|50x40px|link=|alt=]] | issue = This {{{1|article}}} '''uses [[Help:HTML_in_wikitext|HTML markup]]'''. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help] by changing HTML markup to [[Help:Wikitext|Wiki markup]] where appropriate. For help finding or replacing the problematic tags, see [[:Category:Articles with HTML markup|instructions]]. | cat = Articles with HTML markup | cat2 = Articles covered by WikiProject Wikify | date = {{{date|}}} | info = {{#if:{{{tags|}}}| The specific tags found on this page (there may be others) include: {{{tags}}} }} }}<!--{{Cleanup HTML}} end--> }}<noinclude> {{Documentation}} </noinclude> 5whxtsidlszt85mbvuzmxtq9c76qhly Template:Cleanup bare URLs 10 1255 2742 2741 2020-09-29T19:18:09Z Chrisb 1 1 revision imported 2741 wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B= <!--{{Cleanup bare URLs}} begin-->{{Ambox | name = Cleanup bare URLs | type = style | class = ambox-cleanup-link_rot | image = [[File:Text document with red question mark.svg|50x40px|link=|alt=]] | issue = This {{{1|article}}} '''uses [[Wikipedia:Bare URLs|bare URLs]], which may be threatened by [[Wikipedia:Link rot|link rot]].''' | fix = Please consider converting them to [[Wikipedia:Citing sources#Citation styles|full citations]] to ensure the article remains [[Wikipedia:Verifiability|verifiable]] and maintains a consistent citation style. [[Wikipedia:Template messages/Sources of articles#Examples|Several templates]] and tools are available to assist in formatting. (One such tool to fix up some types of bare URLs is [https://refill.toolforge.org/ng/result.php?page={{FULLPAGENAMEE}}&defaults=y reFill], see also its [[User:Zhaofeng Li/reFill|documentation]]) | date = {{{date|}}} | cat = Articles needing cleanup | cat2 = Articles with bare URLs for citations | all2 = All articles with bare URLs for citations | cat3 = Articles covered by WikiProject Wikify | all3 = All articles covered by WikiProject Wikify | removalnotice = yes }}<!--{{Cleanup bare URLs}} end--> }}<noinclude> {{Documentation}} </noinclude> o80wou3dejoee7fq0ykb8hvn90aq7g6 Template:Cleanup biography 10 1290 2812 2811 2020-09-29T19:18:15Z Chrisb 1 1 revision imported 2811 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Cleanup biography}} begin-->{{Ambox | name = Cleanup biography | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | issue = '''This biographical article needs more biographical information on the subject.''' | fix = Statistical information, such as date and place of birth, information on historical significance, and information on accomplishments is desired. Please remove this message when done. See this article's [[{{TALKSPACE}}:{{PAGENAME}}|talk page]] for more information. | date = {{{date|}}} | all = Biographies with insufficient biographical information }}<!--{{Cleanup biography}} end--> }}<noinclude> {{Documentation}} </noinclude> brhb5zwitjvuodzf3o4s2c0qmibyun2 Template:Cleanup book 10 1209 2650 2649 2020-09-29T19:18:03Z Chrisb 1 1 revision imported 2649 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Cleanup book}} begin-->{{Ambox | name = Cleanup book | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | imageright = [[File:Books-aj.svg aj ashton 01.svg|50px|link=]] | issue = '''To comply with the Wikipedia [[:Category:Wikipedia style guidelines|quality standards]], this book-related article may require [[Wikipedia:Cleanup|cleanup]].''' | fix = This article contains very little context, or is '''unclear''' to readers who know little about the book. See this article's [[Talk:{{PAGENAME}}|talk page]] before making any large or controversial edits. | date = {{{date|}}} | cat = Articles needing cleanup | all = All pages needing cleanup | all2 = Books needing cleanup }}<!--{{Cleanup book}} end--> }}<noinclude> {{Documentation}} </noinclude> 6c4zbam196kc3szkinoadw1nxygmavk Template:Cleanup gallery 10 1277 2786 2785 2020-09-29T19:18:13Z Chrisb 1 1 revision imported 2785 wikitext text/x-wiki {{{{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= <!--{{Cleanup gallery}} begin--> {{Ambox | name = Cleanup gallery | type = style | removalnotice = yes | issue = This {{{1|section}}} '''contains an unencyclopedic or excessive gallery of images'''. | fix = Please help improve the {{{1|section}}} by [[Wikipedia:Image use policy#Image galleries|removing excessive or indiscriminate images]] or by [[MOS:IMAGERELEVANCE|moving relevant images]] beside adjacent text, in accordance with the [[Wikipedia:Manual of Style/Images|Manual of Style on use of images]]. {{#if:{{{date|}}}|{{small|''({{{date}}})''}}}} }}<!--{{Cleanup gallery}} end-->}}<noinclude>{{Documentation}}</noinclude> dz42hotvv9l7qkj9mu9wiot46cqtkc8 Template:Cleanup infobox 10 1237 2706 2705 2020-09-29T19:18:07Z Chrisb 1 1 revision imported 2705 wikitext text/x-wiki {{Ambox |name = Cleanup infobox |subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> |type = style |image = [[File:Icon tools.svg|35px|Maintenance]] |issue ='''This {{{1|page}}}'s [[Help:Infobox|infobox]] may require expansion, verification, or otherwise need cleanup.''' |fix = Please make sure that the infobox meets [[Wikipedia:Manual of Style/Infoboxes|Wikipedia's guidelines for infoboxes]]. There might be relevant comments on [[{{TALKPAGENAME}}|the talk page]]. You may also want to view the infobox template page to view the full parameter list and read guidance on usage of that infobox. |demospace={{{demospace|}}} |date ={{{date|<noinclude>{{#time:F Y}}</noinclude>}}} }}{{category handler | main = [[Category:Wikipedia infobox cleanup|{{PAGENAME}}]] | talk = [[Category:Wikipedia infobox cleanup|{{SUBJECTPAGENAME}}]] | template= <includeonly>{{Error|Serious error:{{tlg|Cleanup infobox}} is for specific transclusions of infoboxes, not for infobox templates themselves.}}[[Category:Pages with misplaced templates|{{PAGENAME}}]]</includeonly> | other = <!-- Don't categorize when not in the above spaces -->}} <noinclude> {{Documentation}} <!-- PLEASE ADD CATEGORIES TO THE /doc SUBPAGE, THANKS --> </noinclude> pgl8v5y71wo97z8b3gh3luttp41hhve Template:Cleanup merge 10 1165 2562 2561 2020-09-29T19:17:56Z Chrisb 1 1 revision imported 2561 wikitext text/x-wiki {{Ambox | small = {{{small|}}} | name = Cleanup merge | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = move | image = [[Image:Split-arrows.svg|50x40px|alt=|link=]] | issue = '''This {{#ifeq:{{{21}}}|section|section|article}} may need to be cleaned up.''' It has been merged from {{Pagelist|delim=''|{{{1|(link)}}}|{{{2|}}}|{{{3|}}}|{{{4|}}}|{{{5|}}}|{{{6|}}}|{{{7|}}}|{{{8|}}}|{{{9|}}}|{{{10|}}}|{{{11|}}}|{{{12|}}}|{{{13|}}}|{{{14|}}}|{{{15|}}}|{{{16|}}}|{{{17|}}}|{{{18|}}}|{{{19|}}}|{{{20|}}}}}. }}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! --> </noinclude> 3zxmn6vww2x5c9gd7719voafj1wzw1c Template:Cleanup red links 10 1007 2246 2245 2020-09-29T19:17:33Z Chrisb 1 1 revision imported 2245 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Cleanup red links}} begin-->{{Ambox | name = Cleanup red links | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | issue = This {{{1|article}}}'s use of [[Wikipedia:Red link|red links]] '''may not follow Wikipedia's [[Wikipedia:Red link|guidelines]]'''. | fix = Please help {{#ifeq:{{{1}}}|section|[{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this section]|[{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article]}} by removing excessive and inappropriate red links while leaving those that help [[WP:BUILD|interlink articles and encourage growth]]. | cat = Wikipedia red link cleanup | date = {{{date|}}} }}<!--{{Cleanup red links}} end--> }}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 3z6b44zaz76217bwgyfhkrb7w7zf55i Template:Cleanup reorganize 10 1256 2744 2743 2020-09-29T19:18:10Z Chrisb 1 1 revision imported 2743 wikitext text/x-wiki <noinclude>{{redirects here|Template:Organization|the infobox|Template:Infobox organization}}</noinclude>{{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B= <!-- {{Cleanup reorganize}} begin -->{{Ambox | name = Cleanup reorganize |type = style |image = [[File:Ambox rewrite.svg|40px|link=]] |issue = This {{{1|article}}} '''may be in need of reorganization to comply with Wikipedia's [[Wikipedia:Manual of Style/Layout|layout guidelines]]'''. {{{more|}}} |fix = Please help by [{{fullurl:{{FULLPAGENAME}}|action=edit}} editing the article] to make improvements to the overall structure. |removalnotice = yes |cat = Wikipedia articles needing reorganization |date = {{{date|}}} }}<!-- {{Cleanup reorganize}} end --> }}<noinclude> {{Documentation}} </noinclude> 5nzpisrtsk7hu7mg6jtcys19uykhvtd Template:Cleanup rewrite 10 1260 2752 2751 2020-09-29T19:18:10Z Chrisb 1 1 revision imported 2751 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = {{{name|Cleanup rewrite}}} | subst = <includeonly>{{{subst|{{subst:substcheck}}}}}</includeonly> | type = content | image = [[File:Crystal Clear app kedit.svg|50x40px]] | sect = {{{2|{{#ifeq:{{{section|}}}|yes|section}}}}} | small = {{{small|}}} | issue = may need to be '''rewritten''' to comply with Wikipedia's [[Wikipedia:Manual of Style|quality standards]]{{#if:{{{1|}}}|, as {{{1}}}}}. | fix = [{{fullurl:{{FULLPAGENAME}}|action=edit}} You can help]. The [[{{TALKPAGENAME}}|talk page]] may contain suggestions. | cat = Wikipedia articles needing rewrite | all = All articles needing rewrite | date = {{{date|}}} }} }}<noinclude> {{Documentation}} </noinclude> gx7dtdwvat2ogj92vm5s0owwlf2hvjl Template:Cleanup split 10 1008 2248 2247 2020-09-29T19:17:33Z Chrisb 1 1 revision imported 2247 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Cleanup Split}} begin-->{{Ambox | small = {{{small|}}} | name = Cleanup split | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = move | image = [[Image:Split-arrows.svg|50x40px|alt=|link=]] | issue = This article or section '''may need to be cleaned up or summarized''' because it has been split from/to {{Pagelist|delim=''|{{{1|}}}|{{{2|}}}|{{{3|}}}|{{{4|}}}|{{{5|}}}|{{{6|}}}|{{{7|}}}|{{{8|}}}|{{{9|}}}|{{{10|}}}|{{{11|}}}|{{{12|}}}|{{{13|}}}|{{{14|}}}|{{{15|}}}|{{{16|}}}|{{{17|}}}|{{{18|}}}|{{{19|}}}|{{{20|}}}}}. }}<!--{{Split}} end--> }}<noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc subpage, please not here! --> </noinclude> 3iwu989o65s56dri74c1wmyy26l4fv5 Template:Cleanup taxobox 10 1270 2772 2771 2020-09-29T19:18:12Z Chrisb 1 1 revision imported 2771 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Cleanup taxobox}} begin-->{{Ambox | name = Cleanup taxobox | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = style | image = | issue = '''This article's [[Wikipedia:Automated taxobox system|taxobox]] needs cleanup<includeonly>{{#if:{{{concern|}}}|{{sp}}({{{concern|}}})}}</includeonly>.''' | talk = {{{talk|#}}} | fix = Please confirm the [[Taxonomy (biology)|taxonomy]] and check the formatting of the information in the taxobox. | date = {{{date|}}} | removalnotice = yes | cat = | all = Taxobox cleanup requests }}<!--{{Cleanup taxobox}} end--> }}<noinclude> {{Documentation}} </noinclude> fkpjn145xmll77upy4ytdjlvbn4zhr5 Template:Cleanup tense 10 1257 2746 2745 2020-09-29T19:18:10Z Chrisb 1 1 revision imported 2745 wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = Cleanup tense | type = style | class = ambox-cleanup-tense | issue = This {{{1|article}}} '''does not follow Wikipedia's [[WP:Writing better articles#Tense|guidelines on the use of different tenses]]'''. | fix = Please consider [[Wikipedia:Basic copyediting |copy editing]] to {{{tense|past tense if historic, present tense if not time-based (e.g. [[Wikipedia:Manual of Style (writing about fiction)|fiction]]), or future tense if upcoming}}}. | removalnotice = yes | date = {{{date|}}} }}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{DMCA|{{{category|Wikipedia articles with incorrect tenses}}}}}}}</includeonly> }}<noinclude> {{Documentation}} </noinclude> ankehu7ozvfulj1vxwjha58s954gjml Template:Clear 10 1325 2882 2881 2020-09-29T19:18:25Z Chrisb 1 1 revision imported 2881 wikitext text/x-wiki <div style="clear:{{{1|both}}};"></div><noinclude> {{documentation}} </noinclude> 6mk3e4afot6hzu6tzbljxxk83e14xv6 Template:Close paraphrasing 10 1009 2250 2249 2020-09-29T19:17:33Z Chrisb 1 1 revision imported 2249 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Close paraphrasing}} begin-->{{Ambox | name = Close paraphrasing | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | class = ambox-Close_paraphrasing{{#if:{{{1|}}}|{{#ifeq:{{{1}}}|article||-section}}|}} | image = [[File:Copyright-problem.svg|50x40px|alt=|link=]] | issue = This {{{1|article or section}}} '''contains [[Wikipedia:Close paraphrasing|close paraphrasing]] of {{#if:{{{source|}}}|{{#ifeq:{{{free|}}}|yes|an external|a non-free copyrighted}} source, {{{source|}}} {{#ifeq: {{str left|{{{source|}}}|7}} | http:// | ({{Dupdet|{{NAMESPACE}}:{{PAGENAMEE}}|{{{source|}}}|minwords={{{minwords|3}}}}})}} |one or more {{#ifeq:{{{free|}}}|yes|external|non-free copyrighted}} sources}}'''. | fix = Ideas in this article should be expressed in an original manner. | removalnotice = yes | talk = {{{talk|#}}} | date = {{{date|}}} | cat = Articles needing cleanup | all = All pages needing cleanup | cat2 = {{#ifeq:{{{free|}}}|yes|Articles with close paraphrasing of public domain sources|Articles with close paraphrasing}} | all2 = All articles with close paraphrasing }}<!--{{Close paraphrasing}} end--> }}<noinclude> {{Documentation}} </noinclude> soka965nq8zlbzh6mdk26u1w9yc2mfc Template:Cmbox 10 915 2062 2061 2020-09-29T19:17:22Z Chrisb 1 1 revision imported 2061 wikitext text/x-wiki {{#invoke:Message box|cmbox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 2wg1g94nws2nefrz0o1pxm105lovzoz Template:Cmbox/doc 10 1322 2876 2875 2020-09-29T19:18:23Z Chrisb 1 1 revision imported 2875 wikitext text/x-wiki {{Documentation subpage}} <!-- Categories go where indicated at the bottom of this page, please; interwikis go to Wikidata (see also: [[Wikipedia:Wikidata]]). --> {{High-risk| 167000+ }} {{Lua|Module:Message box}} {{Mbox templates (small)}} This is the {{tl|Cmbox}} (['''C''']ategory ['''m''']essage ['''box''']) metatemplate. It is used to build message box templates such as {{tl|Category diffuse}} for category pages. It offers several different colours, uses default images if no image parameter is given, and it has some other features. This template works almost exactly like {{tl|Ambox}} and uses the same parameters. <!-- === We are deploying! === After long discussion on the [[Template talk:Cmbox|talk page]] of this template and at other places we are finally deploying this template. Feel free to convert any message boxes used on category pages to use this meta-template. If you find any tricky cases then list them on the talk page of this template and you'll get help. When this template is used to build category message boxes those boxes should contain explanatory texts just like before. (The same texts as before or new improved texts.) If there are more specific images in the boxes or you know a better image, then use them instead of the default images shown here. --> === Usage === Simple usage example: <pre> {{cmbox | text = Some text.}} </pre> {{cmbox | text = Some text.}} Complex example: <pre> {{cmbox | type = style | image = [[File:Emblem-question-yellow.svg|40px]] | style = width: 400px; | textstyle = color: red; font-weight: bold; font-style: italic; | text = The message body text. }} </pre> {{cmbox | type = style | image = [[File:Emblem-question-yellow.svg|40px]] | style = width: 400px; | textstyle = color: red; font-weight: bold; font-style: italic; | text = The message body text. }} === Category message box types === The following examples use different '''type''' parameters but use no image parameters, thus they use the default images for each type. {{cmbox | type = speedy | text = type=<u>speedy</u> – Speedy deletion templates such as {{tl|db-c1}}. }} {{cmbox | type = delete | text = type=<u>delete</u> – Deletion templates such as {{tl|cfd}}. }} {{cmbox | type = content | text = type=<u>content</u> – Major warnings and problems such as {{tl|Categorization of people disputed}}. }} {{cmbox | type = style | text = type=<u>style</u> – Minor warnings and problems such as {{tl|Overpopulated category}}. }} {{cmbox | type = notice | text = type=<u>notice</u> – Notices and messages of any kind, both permanent and temporary. }} {{cmbox | type = move | text = type=<u>move</u> – Move, merge, and split messages and proposals such as {{tl|Category redirect}}. }} {{cmbox | type = protection | text = type=<u>protection</u> – Protection templates such as {{tl|pp}} when shown on a category page. }} === Other images === The default images shown above are mostly for convenience. In many cases it is more appropriate to use more specific images. These examples use the '''image''' parameter to specify an image other than the default images. {{cmbox | type = style | image = [[File:Sub-arrows.svg|40px]] | text = type = style<br />image = <nowiki>[[File:Sub-arrows.svg|40px]]</nowiki><br />This image is used for {{tl|Overpopulated category}} and {{tl|Category diffuse}}. }} {{cmbox | type = move | image = [[File:Redirect arrow.svg|52px]] | text = type = move<br />image = <nowiki>[[File:Redirect arrow.svg|52px]]</nowiki><br />This image is used for {{tl|Category redirect}}. }} === Special === Some other parameter combinations. {{cmbox | text = No type and no image given ('''default''') }} {{cmbox | image = none | text = No type and '''image=none''' – No image is used and the '''text''' uses the whole message box area. }} {{cmbox | image = [[File:Gnome globe current event.svg|42px]] | imageright = [[File:Nuvola apps bookcase.svg|40px]] | text = image = <nowiki>[[File:Gnome globe current event.svg|42px]]</nowiki><br />imageright = <nowiki>[[File:Nuvola apps bookcase.svg|40px]]</nowiki> }} {{cmbox | image = [[File:Gnome globe current event.svg|42px]] | imageright = [[File:Shuttle.svg|20px]] | text = '''This category lists articles about current and recent [[spaceflight]]s.'''<br />It is populated by the {{tl|Current spaceflight}} template. }} === Parameters === List of all parameters: <pre> {{cmbox | name = name of the template | type = speedy / delete / content / style / notice / move / protection | image = none / [[File:Some image.svg|40px]] | imageright = [[File:Some image.svg|40px]] | class = A custom CSS class to apply to the box | style = CSS values | textstyle = CSS values | plainlinks = no | text = The message body text. }} </pre> '''name''' :(Optional) Name of the template. This adds a CSS class with name <code>box-''name''</code> to the HTML element, for use by bots or scripts. '''type''' :If no '''type''' parameter is given, the template defaults to type '''notice'''. That means it gets a blue background. '''image''' :'''No parameter''' = If no '''image''' parameter is given, the template uses a default image. Which default image it uses depends on the '''type''' parameter. :'''An image''' = Should be an image with usual wiki notation. 40px - 50px width is usually about right depending on the image height-to-width ratio (but the message box can handle images of any size). ::For example: <code><nowiki>image = [[File:Sub-arrows.svg|40px]]</nowiki></code> :'''none''' = Means that no image is used. '''imageright''' :'''No parameter''' = If no '''imageright''' parameter is given, no image is shown on the right side. :'''An image''' = Should be an image with usual wiki notation. 40px - 50px width is usually about right depending on the image height-to-width ratio (but the message box can handle images of any size). ::For example: <code><nowiki>imageright = [[File:Nuvola apps bookcase.png|40px]]</nowiki></code> :'''Anything''' = Any other object that you want to show on the right side. '''style''' :An optional [[Cascading Style Sheets|CSS]] value used by the entire message box table. Without quotation marks <code>" "</code>. ::For example: <code>style = margin-bottom: 0.5em;</code> '''textstyle''' :An optional [[Cascading Style Sheets|CSS]] value used by the text cell. ::For example: <code>textstyle = text-align: center;</code> '''plainlinks''' :Normally on Wikipedia, external links have an arrow icon next to them, like this: [http://www.example.com Example.com]. However, in message boxes, the arrow icon is suppressed by default, like this: <span class="plainlinks">[http://www.example.com Example.com]</span>. To get the normal style of external link with the arrow icon, use {{para|plainlinks|no}}. '''text''' :The message body text. === Technical details === If you need to use special characters in the text parameter then you need to escape them like this: <pre> {{cmbox | text = <div> Equal sign = and a start and end brace { } work fine as they are. But here is a pipe {{!}} and two end braces &lt;nowiki>}}&lt;/nowiki>. And now a pipe and end braces &lt;nowiki>|}}&lt;/nowiki>. </div> }} </pre> {{cmbox | text = <div> Equal sign = and a start and end brace { } work fine as they are. But here is a pipe {{!}} and two end braces <nowiki>}}</nowiki>. And now a pipe and end braces <nowiki>|}}</nowiki>. </div> }} This template uses the cmbox CSS classes in [[MediaWiki:Common.css]] for most of its looks, thus it is fully skinnable. Internally this meta-template uses HTML markup instead of wiki markup for the table code. That is the usual way we make meta-templates since wiki markup has several drawbacks. For instance it makes it harder to use [[mw:Help:Extension:ParserFunctions|parser functions]] and special characters in parameters. The default images for this meta-template are in PNG format instead of SVG format. The main reason is that some older web browsers have trouble with the transparent background that MediaWiki renders for SVG images. The PNG images here have hand-optimised transparent background colour so they look good in all browsers. Note that SVG icons only look somewhat bad in the old browsers, thus such hand optimisation is only worth the trouble for very widely used icons. For more technical details see the [[Template talk:Cmbox|talk page]]. Since this template works almost exactly like the other mboxes, their talk pages and related pages might also contain more details (see the [[#See also|See also]] section below). ===See also=== {{Mbox templates see also}} <includeonly>{{Sandbox other|| <!-- Categories go below this line, please; interwikis go to Wikidata, thank you! --> [[Category:Mbox and messagebox templates]] [[Category:Category namespace templates|*]] }}</includeonly> i97vgvgkelf7e227cmr65vl8xd326e5 Template:Collapse bottom 10 1476 3256 3255 2020-10-11T01:41:27Z Chrisb 1 1 revision imported 3255 wikitext text/x-wiki |}</div><noinclude> {{Documentation|Template:Collapse top/doc}} <!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --> </noinclude> thrcxllb1z8kfhc183yxne30rpzluba Template:Collapse top 10 1477 3258 3257 2020-10-11T01:41:27Z Chrisb 1 1 revision imported 3257 wikitext text/x-wiki <div style="margin-left:{{{indent|0}}}"><!-- NOTE: width renders incorrectly if added to main STYLE section --> {| <!-- Template:Collapse top --> class="mw-collapsible {{{{{|safesubst:}}}#if:{{{expand|{{{collapse|}}}}}}||mw-collapsed}} {{{class|}}}" style="background: {{{bg1|transparent}}}; text-align: left; border: {{{border|1px}}} solid {{{b-color|Silver}}}; margin: 0.2em auto auto; width:{{{{{|safesubst:}}}#if:{{{width|}}}|{{{width}}}|100%}}; clear: {{{clear|both}}}; padding: 1px;" |- ! style="background: {{{bg|#{{main other|F0F2F5|CCFFCC}}}}}; font-size:87%; padding:0.2em 0.3em; text-align:{{{{{|safesubst:}}}#if:{{{left|}}}|left|{{{{{|safesubst:}}}#if:{{{align|}}}|left|center}}}}; {{{{{|safesubst:}}}#if:{{{fc|}}}|color: {{{fc}}};|}}" | <div style="display:inline;font-size:115%">{{{1|{{{title|{{{reason|{{{header|{{{heading|{{{result|Extended content}}}}}}}}}}}}}}}}}}</div> {{{{{|safesubst:}}}#if:{{{warning|{{{2|}}}}}} |{{{{{|safesubst:}}}!}}- {{{{{|safesubst:}}}!}} style="text-align:center; font-style:italic;" {{{{{|safesubst:}}}!}} {{{2|The following is a closed discussion. {{strongbad|Please do not modify it.}} }}} }} |- | style="border: solid {{{border2|1px Silver}}}; padding: {{{padding|0.6em}}}; background: {{{bg2|White}}};" {{{{{|safesubst:}}}!}}<noinclude> {{lorem ipsum|3}} {{Collapse bottom}} {{Documentation}} {{Collapse top/TemplateData}} </noinclude> 0499saf84vfqfe8hu8ka47kg01mfohz Template:Colloquial 10 1088 2408 2407 2020-09-29T19:17:45Z Chrisb 1 1 revision imported 2407 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Colloquial}} begin-->{{Ambox | name = Colloquial | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | issue = This {{{1|article}}} '''may contain too many [[WP:COLLOQUIAL|colloquial]] terms, phrases or words.''' | fix = These concerns ought to be addressed or reviewed. Specific concerns may be found on the [[{{TALKPAGENAME}}|talk page]]. See Wikipedia's [[Wikipedia:Guide to writing better articles|guide to writing better articles]] for suggestions. | date = {{{date|}}} }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Colloquial}} end--> }}<noinclude> {{Documentation}} </noinclude> 4ykizql89bismtj37ck6glgbsfnefpc Template:Coming soon 10 1508 4664 4663 2020-10-11T05:35:17Z Chrisb 1 1 revision imported 4663 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background:#FFD1DC; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="active table-siteactive"|{{{1|Coming soon}}}<noinclude> |} {{Documentation|Template:Coming soon/doc}} </noinclude> 4kuudaae6ez6p3n6t7dz13iaz2y9hhg Template:Condense 10 1010 2252 2251 2020-09-29T19:17:34Z Chrisb 1 1 revision imported 2251 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Condense}} begin-->{{Ambox | name = Condense | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | class = ambox-condense | issue = This {{{1|article}}} '''may have [[Wikipedia:Manual of Style/Layout#Headings and sections|too many {{#ifeq:{{{1}}}|section|sub}}section headers dividing up its content]]'''. | fix = Please help improve the {{{1|article}}} by merging similar sections and removing unneeded subheaders. | date = {{{date|}}} | cat = Articles needing cleanup | all = All pages needing cleanup }}<!--{{Condense}} end--> }}<noinclude> {{Documentation}} <!-- Please add this template's categories to the /doc subpage, languages go in Wikidata - thanks! --> </noinclude> qwxymwi66ztl9nz2zibt9aq94cowfxi Template:Confusing 10 936 2104 2103 2020-09-29T19:17:25Z Chrisb 1 1 revision imported 2103 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = Confusing | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = style | class = ambox-confusing | sect = {{{1|}}} | issue = '''may be [[Wikipedia:Vagueness|confusing or unclear]] to readers'''. {{#if:{{{reason|}}}|In particular, {{{reason}}}.}} | fix = Please help us [[Wikipedia:Please clarify|clarify the {{{1|article}}}]]. There {{#if:{{{talk|{{{2|}}}}}}|is|might be}} a discussion about this on {{#if:{{{talk|{{{2|}}}}}}|{{format link|{{{talk|{{{2|}}}}}}}}|[[{{TALKPAGENAME}}|the talk page]]}}. | removalnotice = yes | date = {{{date|}}} | cat = Wikipedia articles needing clarification | all = All Wikipedia articles needing clarification }} }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> qyzhgkbvwoa41srarxnz2mg8ajo8edo Template:Content 10 1089 2410 2409 2020-09-29T19:17:45Z Chrisb 1 1 revision imported 2409 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Content}} begin-->{{Ambox | name = Content | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | issue = The relevance of particular information in (or previously in) this article or section is '''[[Wikipedia:Accuracy dispute|disputed]]'''. | fix = The information may have been '''removed''' or '''included''' by an editor as a result. Please see discussion on the [[:{{NAMESPACE}} talk:{{PAGENAME}}#{{{1|}}}|talk page]] considering whether its inclusion is warranted. | date = {{{date|}}} | cat = Accuracy disputes }}<!--{{Content}} end--> }}<noinclude> {{Documentation}} </noinclude> ejce8nknlmceppbldyglxqevemmtcl4 Template:Context 10 1090 2412 2411 2020-09-29T19:17:46Z Chrisb 1 1 revision imported 2411 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Context}} begin-->{{Ambox | name = Context | subst= <includeonly>{{subst:substcheck}}</includeonly> | type = style | class= ambox-Context | issue= This {{{1|article}}} '''provides insufficient context for those unfamiliar with the subject'''. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve the article] by [[Wikipedia:Writing better articles#Provide context for the reader|providing more context for the reader]]{{#if:{{{details|}}}|, especially: {{{details}}}}}. | removalnotice = yes | date = {{{date|}}} | cat = Wikipedia articles needing context | all = All Wikipedia articles needing context | cat2 = Wikipedia introduction cleanup | all2 = All pages needing cleanup }}<!--{{Context}} end--> }}<noinclude> {{Documentation}} </noinclude> ms4va6oqoc9e7jko54ylu6jlab6uy9a Template:Contradicts other 10 1217 2666 2665 2020-09-29T19:18:04Z Chrisb 1 1 revision imported 2665 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = Contradicts other | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | image = [[Image:Ambox contradict.svg|link=|50x40px|Accuracy dispute]] | issue = This {{{4|article}}} '''appears to contradict {{#if: {{{1|}}} | {{#ifeq: {{Mw lang|fn=is_code|{{{lang|}}}}} | true | the {{Mw lang|{{{lang}}}}} {{{5|article}}} [[:{{{lang}}}:{{{1}}}|{{{1}}}]] | the {{{5|article}}} [[{{{1}}}]] }} | another article }}'''. | fix = Please see discussion on the linked [[{{#switch:{{lc:{{{2}}}}}|here={{TALKPAGENAME}}|there={{#if:{{{talk|}}}|{{{talk}}}|Talk:{{{1}}}}}|{{TALKPAGENAME}}}}{{#if:{{{3|}}}|&#035;{{{3|}}}}}|talk page]]. | date = {{{date|}}} | removalnotice = yes | all = Articles contradicting other articles }} }}<noinclude> {{Documentation}} </noinclude> 5a3icqmj1nxn5175eyj15ops1zw1nr4 Template:Contradicts others 10 1220 2672 2671 2020-09-29T19:18:05Z Chrisb 1 1 revision imported 2671 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = Contradicts others | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | image = [[File:Ambox contradict.svg|50x40px|alt=]] | issue = This article '''appears to contradict {{#if:{{{1|}}}|the article{{#if:{{{2|}}}|s}} {{Pagelist|delim=''|{{{1|}}}|{{{2|}}}|{{{3|}}}|{{{4|}}}|{{{5|}}}|{{{6|}}}|{{{7|}}}|{{{8|}}}|{{{9|}}}|{{{10|}}}|{{{11|}}}|{{{12|}}}|{{{13|}}}|{{{14|}}}|{{{15|}}}|{{{16|}}}|{{{17|}}}|{{{18|}}}|{{{19|}}}|{{{20|}}}|{{{21|}}}}}|another article}}'''. | fix = Please see discussion on the linked [[{{#if:{{{discuss|}}}|{{{discuss}}}|{{TALKPAGENAME}}}}|talk page]]. Please do not remove this message until the contradictions are resolved. | date = {{{date|}}} | all = Articles contradicting other articles }} }}<noinclude> {{Documentation}} </noinclude> mltys63vzn9ekfv09gfm1gex8ujilkx Template:Converted 10 1091 2414 2413 2020-09-29T19:17:46Z Chrisb 1 1 revision imported 2413 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = Converted | class = ambox-converted | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | image = [[Image:Ambox outdated serious.svg|44x40px]] | issue = The title of this page was previously used for another page, which was recently moved{{#if:{{{new|}}}|&#32;to [[{{{new}}}]]|}} to allow the title to be used for this page. | talk = {{{talk|}}} | fix = Other pages that should link to that new title may still link here. You can help fix this by clicking on the [[Help:What links here|What links here]] tab on the left, and making these changes accordingly. | date = {{{date|}}} | cat = Wikipedia articles in need of updating }} }}<noinclude> {{Documentation}}<!-- Add categories and inter-wikis to the /doc subpage, not here! --> </noinclude> o90xc3vnlc1i6ooxo0e2tq5p0exhxyk Template:Copied section to Wikisource 10 1011 2254 2253 2020-09-29T19:17:34Z Chrisb 1 1 revision imported 2253 wikitext text/x-wiki <!--{{Copied section to Wikisource}} begin-->{{Ambox | name = Copied section to Wikisource | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = move | small = {{{small|}}} | image = [[Image:Edit-copy purple.svg|40px]] | sect = {{{1|section}}} | issue = '''has been copied to [[Wikisource]].''' | fix = Please rewrite it in an encyclopedic style, provide link to source material using {{tl|wikisource}} template, and remove this notice. | all = Copy to Wikisource }}<!--{{Copied section to Wikisource}} end--><noinclude> {{documentation}} </noinclude> hl9k0x31djbounu64vswgfb3gb6xa72 Template:Copied to Wikibooks 10 1012 2256 2255 2020-09-29T19:17:34Z Chrisb 1 1 revision imported 2255 wikitext text/x-wiki <!--{{Copied to Wikibooks}} begin-->{{Ambox | name = Copied to Wikibooks | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | image = [[Image:Wikibooks-logo.svg|48px|Wikibooks logo]] | type = move | small = {{{small|}}} | sect = {{{1|}}} | issue = '''has now been successfully [[b:WB:IMPORT|imported]] to [[Wikibooks]] under the name {{#if:{{{1|}}}|[[b:{{{1}}}|{{{1}}}]]|[[b:Transwiki:{{PAGENAME}}|{{PAGENAME}}]]}}.''' | fix = If this page can be [[WP:EDIT|rewritten]] into an encyclopedic article, please do so and remove this message and/or add a link to the Wikibook using {{tl|wikibooks}}. | all = Articles copied to Wikibooks in need of cleanup }}<!--{{Copied to Wikibooks}} end--><noinclude> {{documentation}} </noinclude> jisdk6dfsci92mc4gq7ezredlu8tlfx Template:Copied to Wikibooks Cookbook 10 1013 2258 2257 2020-09-29T19:17:34Z Chrisb 1 1 revision imported 2257 wikitext text/x-wiki <!--{{Copied to Wikibooks Cookbook}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Copied to Wikibooks Cookbook |image=[[Image:Wikibooks-logo.svg|48px|Wikibooks logo]] |type=move |text='''This page has been successfully [[meta:Transwiki|copied]] to the [[Wikibooks]] [[b:Cookbook|Cookbook]]''' using the [[b:Wikibooks:Transwiki log|Import]] tool. The wikibooks version of this article can be found by following [[b:Cookbook:{{{1|{{PAGENAME}}}}}|this link to the cookbook article]]. <br /><small>If the page can be [[Wikipedia:How to edit a page|re-written]] into an encyclopedic article, please do so and remove this message and/or add a link to the wikibook using {{tl|cookbook}}.</small> }}<includeonly>[[Category:Articles copied to Wikibooks in need of cleanup]]</includeonly><!--{{Copied to Wikibooks Cookbook}} end--><noinclude> {{Documentation}} <!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES TO THE /doc SUBPAGE, THANKS --> </noinclude> p6k1az4iebn62mon0cgpcmgaq8t9kbo Template:Copy edit 10 1168 2568 2567 2020-09-29T19:17:57Z Chrisb 1 1 revision imported 2567 wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B= {{ambox | name = Copy edit | type = style | class = ambox-Copy_edit | image = [[File:Acap.svg|40x40px|alt=|link=]] | issue = This {{{1|article}}} '''may require [[Wikipedia:Basic copyediting|copy editing]] for {{{for|{{{reason|grammar, style, cohesion, tone, or spelling}}}}}}'''. | fix = You can assist by [{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} editing it]. | removalnotice = yes | cat = Wikipedia articles needing copy edit | date = {{{date|}}} | all = All articles needing copy edit }} }}<noinclude> <!-- Add categories and interwikis to the /doc subpage, not here! --> {{documentation}} </noinclude> a4xxt7htz4adczm8yv0grc6ey1vj65d Template:Copy section to Wikisource 10 1186 2604 2603 2020-09-29T19:17:59Z Chrisb 1 1 revision imported 2603 wikitext text/x-wiki <!--{{Copy section to Wikisource}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Copy section to Wikisource | type = move | image = [[Image:Edit-copy purple-wikis.svg|40px]] | text = '''This section is a candidate to be [[meta:Transwiki|copied]] to [[Wikisource]].'''<br /><small>If the section can be [[Wikipedia:How to edit a page|edited]] into encyclopedic content, rather than merely a copy of the source text, please do so and remove this message. Otherwise, you can help by formatting it per the [[:s:Help:Adding texts|Wikisource guidelines]] in preparation for the duplication.</small>{{#if:{{{1|}}}|<div style="font-size:0.9em;"> : '''Notes:''' {{{1|}}}. </div>}} }}<includeonly>{{{category|[[Category:Copy section to Wikisource]]}}}</includeonly><!--{{Copy section to Wikisource}} end--><noinclude> {{documentation|content= ==See also== * [[Template:Copy to Wikisource]] * [[Template:Wikisource-addition]] }} [[Category:Transwiki templates]] [[Category:Wikisource templates]] </noinclude> bd7xnd4xob4vax9w7ybdxpsz4okl2n2 Template:Copy to Wikibooks 10 1261 2754 2753 2020-09-29T19:18:10Z Chrisb 1 1 revision imported 2753 wikitext text/x-wiki <!--{{Copy to Wikibooks}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Copy to Wikibooks |image=[[Image:Edit-copy purple-Wikibooks.svg|40px]] |type=move |issue='''This {{#if:{{{section|}}}|section|{{#if:{{NAMESPACE}}|page|article}}}} is a candidate to be [[meta:Help:Transwiki|copied]] to {{#if:{{{1|}}}|[[:wikibooks:{{{1}}}|Wikibooks entry on {{{1}}}]]|[[Wikibooks]]}}''' using the '''[[b:Special:Import|Import]]''' process. |fix=<br />If the page can be [[Wikipedia:How to edit a page|re-written]] into an encyclopedic article, please do so and remove this message. <br /> <small>Before you move this content to Wikibooks, verify that it conforms to Wikibooks policies of acceptable content at ''[[b:WB:WIW|What is Wikibooks?]]'' Often content unacceptable to Wikipedia may not be acceptable on Wikibooks either; facilitate the copying of this article by listing it on [[b:WB:RFI|Wikibooks:Requests for Import]].</small> }}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{{category|[[Category:Copy to Wikibooks]]}}}}}</includeonly><!--{{Copy to Wikibooks}} end--><noinclude> {{Documentation}} </noinclude> pyq98az7fdzpon2r358x3a1gb37bfah Template:Copy to Wikibooks Cookbook 10 1015 2262 2261 2020-09-29T19:17:35Z Chrisb 1 1 revision imported 2261 wikitext text/x-wiki <!--{{Copy to Wikibooks Cookbook}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Copy to Wikibooks Cookbook |image=[[File:Edit-copy purple.svg|40px]] |type=move |text='''This page is a candidate to be [[m:transwiki|copied]] to the [[Wikibooks:Cookbook:Table of Contents|Wikibooks Cookbook]]''' using the '''[[b:Special:Import|Import]]''' process. <br>If the page can be [[Wikipedia:How to edit a page|edited]] into an encyclopedic article, rather than simply a recipe, please do so and remove this message. <br /><small>To facilitate the copying of this article, please consider listing it on [[b:Wikibooks:Requests for Import|Wikibooks:Requests for Import]]. Check to see if the cookbook already has [[b:Cookbook:{{PAGENAME}}|a page about this recipe or ingredient]] and alternatively use a [[Wikipedia:Soft redirect|soft redirect]] if appropriate.</small> }}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{{category|[[Category:Copy to Wikibooks]]}}}}}</includeonly><!--{{Copy to Wikibooks Cookbook}} end--><noinclude> {{Documentation}} <!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES TO THE /doc SUBPAGE, THANKS --> </noinclude> n63jgs6fue5f3ivzgmkn2xdu7gss2j1 Template:Copy to Wikimedia Commons 10 1144 2520 2519 2020-09-29T19:17:53Z Chrisb 1 1 revision imported 2519 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Copy to Wikimedia Commons}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{main other | demospace = {{{demospace|}}} | <!-- Show with ambox style on article pages --> {{Ambox | name = Copy to Wikimedia Commons | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = move | image = [[File:To Commons.svg|50px|Copy to Commons]] | text = '''This page is a candidate to be [[m:Help:Transwiki|copied]] to [[commons:Main Page|Wikimedia Commons]]'''. <br/> If the page can be [[Help:Editing|re-written]] into an encyclopedic article, please do so and remove this message. }} | <!-- Show with imbox style on all other pages --> {{Imbox | type = move | name = Copy to Wikimedia Commons | image = [[File:To Commons.svg|50px|Copy to Commons]] | text = '''This file is a candidate to be copied to [[c:Main Page|Wikimedia Commons]]'''. Any user may perform this transfer; refer to [[Wikipedia:Moving files to Commons]] for details. If this file has problems with [[Wikipedia:Verifiability|attribution]], [[c:Commons:Licensing|copyright]], or is otherwise [[c:Commons:Project scope/Precautionary principle|ineligible]] for Commons, then '''remove''' this tag and '''DO NOT''' transfer it; repeat violators may be [[Wikipedia:Blocking policy|blocked]] from editing. {{hidden|ta1=left|style=padding:0; font-style:italic;|contentstyle=font-size:80%; font-style:normal; |1=Other Instructions |2= * Endorse this file for transfer by adding <code>{{Pipe}}human=<your username></code> to this Template. * If this file is freely licensed, but otherwise unsuitable for Commons (e.g. out of [[c:Commons:Project scope|Commons' scope]], still copyrighted in the US), then replace this Template with {{Tlx|Do not move to Commons|reason{{=}}<Why it can't be moved>}} * If you think that a local copy of this file should be retained, then replace this Template with {{Tlx|Keep local|reason{{=}}<Why a local copy is needed>}} * Please ensure that the file has a properly descriptive and unambiguous name '''before''' transferring; see [[Wikipedia:File mover#What files should be renamed?]] for details. }} <div class="movetocommons-reviewme"></div> | below = {{#if:{{{bot|}}}| {{imbox|type = delete|text = {{red|'''This file was suggested for transfer by a bot ([[User:{{{bot}}}]])'''}}. Please verify that this file is [[:commons:Special:MyLanguage/Commons:Project_scope/Summary|suitable for Commons]] before transferring it. }} }}{{#if:{{{human|}}}|{{imbox||text = {{Green|'''This file has been reviewed by a human, ([[User:{{{human}}}]])'''}}, who has confirmed that it is suitable for Commons.}}}} {{#if:{{{human|}}} | {{#ifexist:Category:Copy to Wikimedia Commons reviewed by {{{human|}}} | [[Category:Copy to Wikimedia Commons reviewed by {{{human|}}}]] | [[Category:Copy to Wikimedia Commons reviewed by a human]] }} }} }} }}<includeonly>{{#ifeq: {{NAMESPACE}} | {{ns:6}} |{{{category|{{#if:{{{bot|}}}|[[Category:Copy to Wikimedia Commons (bot-assessed)|{{PAGENAME}}]]|{{#if: {{{inline|}}}|[[Category:Copy to Wikimedia Commons (inline-identified)|{{PAGENAME}}]]|[[Category:Copy to Wikimedia Commons|{{PAGENAME}}]]}}}}}}}}}</includeonly><!--{{Copy to Wikimedia Commons}} end--> }}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 9b2to4e428vnvuinibzbkgmdgxa457m Template:Copy to Wikiquote 10 1016 2264 2263 2020-09-29T19:17:35Z Chrisb 1 1 revision imported 2263 wikitext text/x-wiki <!--{{Copy to Wikiquote}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Copy to Wikiquote | image = [[Image:Edit-copy purple-wikiq.svg|50x40px]] | type = move | issue = This {{#if:{{{section|}}}|section|page}} '''is a candidate to be [[m:Help:Transwiki|copied]] to [[q:Main Page|Wikiquote]] using the [[Wikipedia:Transwiki log|Transwiki]] process'''. | fix = {{#if:{{{section|}}}||If the page can be [[Wikipedia:How to edit a page|expanded]] into an encyclopedic article, rather than a list of quotations, please do so and remove this message.}} | cat = Copy to Wikiquote }}<!--{{Copy to Wikiquote}} end--><noinclude> {{Documentation}} </noinclude> ehs2wdil16qbwklejbh2ase4asbcx1w Template:Copy to Wikisource 10 1189 2610 2609 2020-09-29T19:18:00Z Chrisb 1 1 revision imported 2609 wikitext text/x-wiki <!--{{Copy to Wikisource}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Copy to Wikisource | image = [[Image:Edit-copy purple-wikis.svg|40px]] | type = move | issue = '''This page is a candidate to be [[meta:Help:Transwiki|copied]] to [[wikisource:Main Page|Wikisource]].''' | fix = <br /> If the page can be [[Wikipedia:How to edit a page|edited]] into an encyclopedic article, rather than merely a copy of the source text, please do so and remove this message. Otherwise, you can help by formatting it per the [[:s:Help:Adding texts|Wikisource guidelines]] in preparation for being imported to Wikisource by a Wikisource admin. Note that if this source text is not in English, it will have to be copied using the [[m:Help:Transwiki|transwiki process]].{{#if:{{{1|}}}|<div style="font-size:0.9em;"> : '''Notes:''' {{{1|}}} </div>}} }}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{{category|[[Category:Copy to Wikisource]]}}}}}</includeonly><!--{{Copy to Wikisource}} end--><noinclude> {{Documentation}} </noinclude> cnwhgol8ozvjs6pfbobh6369fyqncq1 Template:Copy to Wikiversity 10 1017 2266 2265 2020-09-29T19:17:35Z Chrisb 1 1 revision imported 2265 wikitext text/x-wiki <!--{{Copy to Wikiversity}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Copy to Wikiversity |image=[[Image:Edit-copy purple.svg|40px]] |type=move |issue='''This page is a candidate to be [[meta:Help:Transwiki|copied]] to [[Wikiversity:Main Page|Wikiversity]]''' using the '''[[v:Special:Import|Import]]''' process. |fix=<br />If the page can be [[Wikipedia:How to edit a page|re-written]] into an encyclopedic article, please do so and remove this message. <br /> <small>Before you move this content to Wikiversity, verify that it conforms to Wikiversity policies of acceptable content at ''[[v:WV:WIW|What is Wikiversity?]]'' Often content unacceptable to Wikipedia may not be acceptable on Wikiversity either; facilitate the copying of this article by listing it on [[v:WV:I|Wikiversity:Requests for Import]].</small> }}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{{category|[[Category:Copy to Wikiversity]]}}}}}</includeonly><!--{{Copy to Wikiversity}} end--><noinclude> {{Documentation}} </noinclude> obji74u1tm8z7eokus4j1wu0vemm4n9 Template:Copy to Wikivoyage 10 1152 2536 2535 2020-09-29T19:17:54Z Chrisb 1 1 revision imported 2535 wikitext text/x-wiki <!--{{Copy to Wikivoyage}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Copy to Wikivoyage | image = [[Image:Edit-copy purple.svg|40px]] | type = move | issue = This {{#if:{{{section|}}}|section|page}} '''is a candidate to be [[m:Help:Transwiki|copied]] to [[voy:Main Page|Wikivoyage]] using the [[Wikipedia:Transwiki log|Transwiki]] process'''. | fix = <br />If the {{#if:{{{section|}}}|section|page}} can be [[Wikipedia:How to edit a page|re-written]] into an encyclopedic article, please do so and remove this message. <br /> }}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{{category|[[Category:Copy to Wikivoyage]]}}}}}</includeonly><!--{{Copy to Wikiboyage}} end--><noinclude> {{Documentation}} </noinclude> en338bjqcqaj72efo6uxm955u9qcrll Template:Copy to Wiktionary 10 1210 2652 2651 2020-09-29T19:18:03Z Chrisb 1 1 revision imported 2651 wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||$B=<!--{{Copy to Wiktionary}} begin--> {{Ambox | name = Copy to Wiktionary | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = move | image = [[File:Edit-copy purple-wikit.svg|40px|alt=]] | text = '''This page will be copied to [[wiktionary:Main Page|Wiktionary]] using the [[meta:Help:Transwiki|transwiki]] process.''' The information in this article appears to be suited for inclusion in a dictionary, and this article's topic meets [[Wiktionary:Wiktionary:Criteria for inclusion|Wiktionary's criteria for inclusion]], has [[wikt:transwiki:{{PAGENAME}}|not been transwikied]], and is [[wikt:{{PAGENAME}}| not already represented]]. It will be copied into Wiktionary's transwiki space from which it can be formatted appropriately. <small>If this page does not meet the criteria, please remove this notice. Otherwise, the notice will be automatically removed after transwiki completes. If this template is placed on a [[MOS:GLOSSARIES|glossary article]], it should be {{em|removed}} immediately after the transwiki is completed, and not replaced with {{tl|TWCleanup}}, as there is [[Wikipedia:Consensus#No consensus|no consensus]] for the deletion of [[MOS:GLOSSARIES|glossary articles]].</small> }}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{{category|{{main other|[[Category:Copy to Wiktionary|{{PAGENAME}}]]}}}}}}}</includeonly><!--{{Copy to Wiktionary}} end-->}}<noinclude> {{Documentation}} </noinclude> mrzf4lohsbkduomkcuzga8s888sm6zz Template:Copy to gaming wiki 10 1014 2260 2259 2020-09-29T19:17:34Z Chrisb 1 1 revision imported 2259 wikitext text/x-wiki {{Ambox |name=Copy to gaming wiki |subst=<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> |image=[[Image:Edit-copy purple.svg|40px]] |type=move |issue='''This article or section is a candidate to be [[m:Help:Transwiki|copied]] to a gaming wiki.''' |fix=Articles on video games should not [[Wikipedia:What Wikipedia is not#Wikipedia is not a manual, guidebook, or textbook|read like an instruction manual]] or give [[Wikipedia:Neutral point of view#Undue weight|undue weight to details]]. Unsuitable information should be copied to a gaming wiki, such as [[StrategyWiki:Main Page|StrategyWiki]] or [[wikia:gaming|Wikia Gaming]], and then deleted from Wikipedia.<br /><small>If this article or section can be [[Wikipedia:Manual of Style/Writing about fiction|improved for inclusion in Wikipedia]], please do so and remove this message.</small>{{#if:{{{1<includeonly>|</includeonly>}}}|<div style="font-size:0.9em;"> : '''Notes:''' {{{1}}}. </div>}} |all=Video game cleanup }}<noinclude> {{documentation}} </noinclude> ncewcugskj6bpqlrktyua0plqsq0m2z Template:Copypaste 10 1092 2416 2415 2020-09-29T19:17:46Z Chrisb 1 1 revision imported 2415 wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B= <!--{{Copypaste}} begin-->{{Ambox | name = Copypaste | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = speedy | image = [[File:Copyright-problem paste 2.svg|50x40px]] | issue = This {{{1|article or section}}} '''may have been [[Wikipedia:Copying text from other sources|copied and pasted]] from another location, ''possibly'' in violation of [[Wikipedia:Copyrights|Wikipedia's copyright policy]]'''. | fix = Please review {{#if:{{{url|}}}|{{CVD|{{{url|}}}}}|the source}} and [[Wikipedia:Text Copyright Violations 101|remedy this]] by editing this article to remove any non-free copyrighted content and attributing free content correctly, or flagging the content for deletion. Please be sure that the supposed source of the copyright violation is not itself a [[Wikipedia:Mirrors and forks|Wikipedia mirror]]. | date = {{{date|}}} | cat = Copied and pasted articles and sections{{#if:{{{url|}}}|&#32;with url provided}} | all = All copied and pasted articles and sections }}<!--{{Copypaste}} end--> }}<noinclude> {{Documentation}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --> </noinclude> 0kiyo3ue7k9g7ti3xqo69hphy06e1fz Template:Correct title examples 10 1651 4950 4949 2020-10-11T05:50:41Z Chrisb 1 1 revision imported 4949 wikitext text/x-wiki {| class="wikitable" style="background:transparent" |- ! Template !! Involves !! Correct name !! Actual article name |- ! {{tlp|Italic title}} | Title in italics || ''To Kill a Mockingbird'' || [[To Kill a Mockingbird]] |- ! {{tlp|Lowercase title}} | Lowercase first character || eBay || [[EBay]] |- ! {{tlp|Correct title|reason{{=}}bracket}} | [[bracket|< > [ ] { }]] || Benzo[''a'']pyrene || [[Benzo(a)pyrene]] |- ! {{tlp|Correct title|reason{{=}}#}} | [[Number sign|#]] || Pilot #5 || [[Pilot No. 5]] |- ! {{tlp|Correct title|reason{{=}}:}} | [[Forward slash|/]] [[colon (punctuation)|:]] || DK: King of Swing || [[DK King of Swing]] |- ! {{[[meta:Help:Magic words#Miscellany|DISPLAYTITLE]]}} | Various || _NSAKEY || [[NSAKEY]] |}<noinclude> [[Category:Correct title templates|Examples]] </noinclude> 3dec25gwnuqmv7azvkib91p3m3bhzzp Template:Coverage 10 1018 2268 2267 2020-09-29T19:17:35Z Chrisb 1 1 revision imported 2267 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Coverage}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Coverage | class = ambox-coverage | type = content | image = [[Image:Unbalanced scales.svg|50x40px|link=]] | issue = This {{{1|article}}} '''may focus too much on one aspect of a topic''' and thus damage the article's usefulness or even lend [[Wikipedia:Neutral point of view#Undue weight|undue weight]] in favor of certain viewpoints. | fix = Please [{{SERVER}}{{localurl:{{PAGENAME}}|action=edit}} improve the article] by adding information on neglected viewpoints, or discuss the issue on the [[:{{NAMESPACE}} talk:{{PAGENAME}}|talk page]]. | date = {{{date|}}} }}<includeonly>{{DMCA|Articles needing more viewpoints|from|{{{date|}}}}}</includeonly><!--{{Coverage}} end--> }}<noinclude> {{Documentation}} </noinclude> tbw05nwywuejwlp0tlfmdu5cjdycsl3 Template:Criticism section 10 1019 2270 2269 2020-09-29T19:17:35Z Chrisb 1 1 revision imported 2269 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Criticism section}} begin-->{{Ambox | name = Criticism section | class = ambox-criticism | type = content | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | image = [[File:Ambox scales.svg|50px|link=]] | issue = This article's ''Criticism'' or ''Controversy'' section '''may compromise the article's [[Wikipedia:Neutral point of view|neutral point of view]] of the subject'''. | fix = Please [[Wikipedia:Neutral point of view#Article structure|integrate the section's contents]] into the article as a whole, or rewrite the material. | date = {{{date|}}} | cat = Articles needing POV-check | all = All NPOV disputes }}<!--{{Criticism section}} end--> }}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, please, not here! --> </noinclude> mgqfb3o1vw88zvtnd076hq26qazb5av Template:Cross 10 1634 4916 4915 2020-10-11T05:50:22Z Chrisb 1 1 revision imported 4915 wikitext text/x-wiki [[{{ {{{|safesubst:}}}#switch:{{ {{{|safesubst:}}}lc:{{{color|{{{colour|}}}}}} }} |red |rd |r =File:X mark.svg |darkred |dkred |drd |dr =File:Dark Red x.svg |orange |or |o =File:Orange x.svg |yellow |yel |y =File:Yellow x.svg |black |blk |k =File:Black x.svg |grey |gray |gry |gy =File:SemiTransBlack x.svg <!--default--> |File:X mark.svg }}|{{ {{{|safesubst:}}}#if:{{{1|}}}|{{{1}}}|20}}px|link=|alt=&#9746;]]<span style="display:none">N</span><!--template:cross--><noinclude> {{documentation}} </noinclude> krgazefqy0ht4a37jfoudi2zcd9h6rk Template:Csb-pageincluded 10 1207 2646 2645 2020-09-29T19:18:03Z Chrisb 1 1 revision imported 2645 wikitext text/x-wiki <!--{{Csb-pageincluded}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}<noinclude><center>'''Please do not [[Wikipedia:Template substitution|substitute]] this template.'''<br/></center><br/></noinclude> {{Ambox | name = Csb-pageincluded |type=content |image=[[Image:Copyright-problem.svg|50px|alt=|link=]] |text=The {{#if:{{{2|}}}|[[User:VWBot|VWBot]]|[[User:CorenSearchBot|CorenSearchBot]]}} has detected that the contents of this page may have been copied from the following web page: :{{{1|{{{url}}}}}} ({{Dupdet|{{NAMESPACE}}:{{PAGENAMEE}}|{{{1|{{{url}}}}}}|minwords=3}}{{Dot}}{{Copyvios|url={{{1|{{{url}}}}}}|page={{FULLPAGENAME}}}}) This may be a potential '''infringement''' of the copyright of a third-party. It will soon be reviewed to determine if there are any copyright issues. The content should not be mirrored or otherwise reused until the issue has been resolved. <br/> *'''If this marking was made in error,''' simply note so on the [[Talk:{{PAGENAME}}|this article's discussion page]]. *You can '''write a new article without infringing material.''' Note that simply modifying copyrighted text is ''not'' sufficient to avoid copyright infringement— it is best to write the article ''from scratch'', using web pages or other publications as sources of facts, but not as sources of sentences or phrases. You may want to begin the article as a "[[Wikipedia:Stubs|stub]]". *Or, '''if you hold the copyright to this text and permit its use under the terms consistent with [[Wikipedia:Terms of use|Wikipedia's policies]]''', please see [[Wikipedia:Donating copyrighted materials]] for instructions on how to verify the licensing. *'''If this text is in the public domain, or is already under a license suitable for Wikipedia,''' explain this on [[Talk:{{PAGENAME}}|this article's discussion page]], with reference to evidence. '''Note:''' Articles on Wikipedia must be written from a [[Wikipedia:Neutral point of view|neutral point of view]] and must be [[Wikipedia:Verifiability|verifiable]] in published third-party sources; your text may not be appropriate for inclusion in Wikipedia, legal issues aside. }} <includeonly>[[Category:Possible copyright violations]]</includeonly><!--{{Csb-pageincluded}} end--><noinclude> {{Documentation}} </noinclude> aub5ivmggsb5rr1bfqwpfiwf68zqq43 Template:Csb-pageincludes 10 1020 2272 2271 2020-09-29T19:17:36Z Chrisb 1 1 revision imported 2271 wikitext text/x-wiki <!--{{Csb-pageincludes}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}<noinclude>{{center|'''Please do not [[Wikipedia:Template substitution|substitute]] this template.'''}}<br/></noinclude>{{Ambox | name = Csb-pageincludes |type=delete |image=[[Image:Copyright-problem.svg|50px|alt=|link=]] |text=The {{#if:{{{2|}}}|[[User:VWBot|VWBot]]|[[User:CorenSearchBot|CorenSearchBot]]}} has performed a web search with the contents of this page, and it appears to include material copied directly from: :{{{1|{{{url}}}}}} ({{Dupdet|{{NAMESPACE}}:{{PAGENAMEE}}|{{{1|{{{url}}}}}}|minwords=3}}{{Dot}}{{Copyvios|url={{{1|{{{url}}}}}}|page={{FULLPAGENAME}}}}) It will soon be reviewed to determine if there are any copyright issues. The content should not be mirrored or otherwise reused until the issue has been resolved. If substantial content ''is'' duplicated, unless evidence is provided to the contrary (e.g. evidence of permission to use this content under terms consistent with the [[Wikipedia:Terms of use|Wikimedia Terms of Use]] or public domain status; see [[Wikipedia:Donating copyrighted materials]]), editors will assume that this text is a [[Wikipedia:Copyright FAQ|copyright violation]], and will soon delete the copy. '''Before removing this notice, you should:''' <br/> *'''Check if {{#if:{{{2|}}}|[[User:VWBot|VWBot]]|[[User:CorenSearchBot|CorenSearchBot]]}} is in error:''' If so, simply note so on [[{{TALKPAGENAME}}|this article's discussion page]]. *'''Replace the copyrighted text with your own work.''' Note that simply modified or rephrased text is ''still'' an infringement—to remove the copyrighted contents you will need to completely remove them and then write totally new text to replace it. * '''If you hold the copyright to this text and permit its use under the terms consistent with [[Wikipedia:Terms of use|Wikipedia's policies]]''', please see [[Wikipedia:Donating copyrighted materials]] for instructions on how to verify the licensing. *'''Replace the copyrighted content with a [[WP:REF|wikified reference]]'''. *'''Check whether it is reasonable to revert to one of the previous versions of the article''' *'''Remove the copyrighted content''' if it is not critical to the article. }} <includeonly>[[Category:Possible copyright violations]]</includeonly><!--{{Csb-pageincludes}} end--><noinclude> {{Documentation}} </noinclude> 8izjwo2x1zi2c0839cxbfiu0jq4fqgj Template:Csb-wikipage 10 1021 2274 2273 2020-09-29T19:17:36Z Chrisb 1 1 revision imported 2273 wikitext text/x-wiki <!--{{Csb-wikipage}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}<noinclude><center>'''Please do not [[Wikipedia:Template substitution|substitute]] this template.'''<br/></center><br/></noinclude> {{Ambox | name = Csb-wikipage |type=content |text=The {{#if:{{{2|}}}|[[User:VWBot|VWBot]]|[[User:CorenSearchBot|CorenSearchBot]]}} has performed a web search with the contents of this page, and it appears to be a substantial copy of the Wikipedia page [[:{{{1|{{{page}}}}}}]]. Content copied from one page to another must be properly attributed; see [[Wikipedia:Copying within Wikipedia]]. It will soon be reviewed to determine if there are any copyright issues. *'''If the bot has made an error or the content is properly attributed:''' Simply note so on the [[Talk:{{PAGENAME}}|this article's discussion page]] and remove the tag. *'''If this page was created by error:''' You can request that it be [[WP:CSD|speedily deleted]]. *If appropriate, you can '''convert this page into a [[Wikipedia:Redirect|redirect]] to [[:{{{1|{{{page}}}}}}]]''' by replacing its contents with: <code>#REDIRECT <nowiki>[[</nowiki>{{{1|{{{page}}}}}}]]</code> *Or, '''edit the page''' and remove the tag. }}<!--{{Csb-wikipage}} end--><noinclude> {{Documentation}} </noinclude> cag21euh8j9c1j8fnflytaqfid30dcs Template:Current 10 930 2092 2091 2020-09-29T19:17:24Z Chrisb 1 1 revision imported 2091 wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = Current | type = notice | image = [[File:{{Ambox globe current red}}|50x40px|alt=Graphic of a globe with a red analog clock|link=]] | text = '''This {{#if:{{{1|}}}|{{{1}}}|article}} documents {{#switch:{{lc:{{str left|{{{2|current event}}}|1}}}}|a|e|i|o|u=an|#default=a}} [[Portal:Current events|{{#if:{{{2|}}}|{{{2}}}|current event}}]].''' Information may change rapidly as the event progresses, and initial news reports may be [[Wikipedia:Reliable sources#Breaking news|unreliable]]. The [[Special:History/{{FULLPAGENAME}}|latest updates]] to this {{#if:{{{1|}}}|{{{1}}}|article}} [[Wikipedia:Risk disclaimer|may not reflect]] the most current information. | removalnotice = yes | fix = Please feel free to [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#if:{{{1|}}}|{{{1}}}|article}}] (but note that updates without valid and reliable references will be removed) or discuss changes on the [[{{TALKPAGENAME}}|talk page]]. | cat = Current events | date = {{{date|}}} }} }}<noinclude> {{Documentation}} </noinclude> azddut81cgw8xpfh22aonpy65wnizfi Template:Current disaster 10 1022 2276 2275 2020-09-29T19:17:36Z Chrisb 1 1 revision imported 2275 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Current disaster}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Current disaster | type = notice | removalnotice = yes | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#If: {{{type|}}}|{{{type|}}}|article}}] using [[Wikipedia:Reliable sources|reliable sources]] or help by discussing changes on the [[{{TALKPAGENAME}}|talk page]]. | image = [[File:{{Ambox globe current red}}|50x40px|alt=Globe icon with a red clock.]] | text = This {{#If: {{{type|}}}|{{{type|}}}|article}} is about {{#if:{{{name|}}} | '''&#x20;{{{name}}}''', | }} a {{#if:{{{link|}}} | {{{time|current}}} {{#if:{{{severity|}}} | &#x20;{{{severity}}} | }} {{{event|disaster}}} | '''[[Portal:Current events|{{{time|current}}} {{#if:{{{severity|}}} | &#x20;{{{severity}}} | }} {{{event|disaster}}}]]''' }} where information can [[Wikipedia:Reliable sources#Breaking news|change quickly or be unreliable]]. The [{{fullurl:{{FULLPAGENAME}}|action=history}} latest page updates] [[Wikipedia:Risk disclaimer|may not reflect]] the most up-to-date information. {{#if:{{{areas|}}} | &#x20;{{{areas}}} | }} {{#if:{{{notes|}}} | &#x20;{{{notes}}} | }} | }} {{#if:{{{nocat|}}} |<!-- don't categorize --> |{{DMCA|Current events|from|{{{date|}}}}} }}<!--{{Current disaster}} end--> }}<noinclude>{{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> hytb04f01j5f4dsj9iqk4i4dpgt1tzi Template:Current disaster list 10 1228 2688 2687 2020-09-29T19:18:06Z Chrisb 1 1 revision imported 2687 wikitext text/x-wiki {{Ambox | name = Current disaster list | subst = | small = {{{small|}}} | type = notice | removalnotice=yes | image = [[File:{{Ambox globe current red}}|50x40px|alt=]] | sect = {{{1|}}} | issue = containing a '''list of {{{type|disasters}}}''' may be affected by a [[Portal:Current events|currently active]] incident. Information regarding it may change rapidly as more information becomes available. The last updates to this article [[Wikipedia:Risk disclaimer|may not reflect]] the most current information about this {{{event|disaster}}} for all areas. Initial news reports may be [[Wikipedia:Identifying reliable sources#Breaking news|unreliable]]. | talk = {{{talk|}}} | fix = | date = {{{date|}}} | cat = | all = }}<noinclude>{{documentation}} ekggyb76wdx8serl93wjp1uwxbnz9k8 Template:Current election 10 1229 2690 2689 2020-09-29T19:18:06Z Chrisb 1 1 revision imported 2689 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = Current election | type = notice | image = [[File:A coloured voting box.svg|30px|alt=Voting box|link=]] | text = '''This {{#if:{{{1|}}}|{{{1}}}|article}} documents {{#if:{{{2|}}}|{{{2}}}|a current {{{3|election}}}}}.''' Information may change rapidly as the {{{3|election}}} progresses, until official results have been published. Initial news reports may be [[Wikipedia:Reliable sources#Breaking news|unreliable]], and the [{{fullurl:{{FULLPAGENAME}}|action=history}} last updates] to this {{#if:{{{1|}}}|{{{1}}}|article}} [[Wikipedia:Risk disclaimer|may not reflect]] the most current information. | removalnotice = yes | fix = Please feel free to [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#if:{{{1|}}}|{{{1}}}|article}}] (but note that updates without valid and reliable references will be removed) or discuss changes on the [[{{TALKPAGENAME}}|talk page]]. | all = Current elections | date = {{{date|}}} }} }}<noinclude> {{Documentation}} </noinclude> 9gvq182pe1t8kq9fbwg51a9b3f4gvcq Template:Current music-related 10 1250 2732 2731 2020-09-29T19:18:09Z Chrisb 1 1 revision imported 2731 wikitext text/x-wiki <noinclude>{{pp|vandalism|small=yes|expiry=indef|action=edit|date=August 7, 2016}}</noinclude> {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{ambox | name = Current music-related | type = notice | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | image = [[File:Fifties jukebox.png|60px]] | imageright = [[File:Gibson-sg.svg|60px]] | text = This {{#if:{{{1|}}}|{{{1}}}|article}} '''may be affected by {{#if:{{{2|}}}|the following|a}} [[Wikipedia:WikiProject Music|{{#if:{{{4|}}}|{{{4}}}|current music related event}}]]{{#if:{{{2|}}}|<nowiki>:</nowiki> [[{{{2}}}{{#if:{{{3|}}}|{{!}}{{{3}}}|}}]]|}}'''. Information in this {{#if:{{{1|}}}|{{{1}}}|article}} may change rapidly as the event progresses. Initial news reports may be [[Wikipedia:Identifying reliable sources#Breaking news|unreliable]]. The [{{fullurl:{{FULLPAGENAME}}|action=history}} last updates] to this {{#if:{{{1|}}}|{{{1}}}|article}} [[Wikipedia:Risk disclaimer|may not reflect]] the most current information. | removalnotice = yes | fix = Please feel free to [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#if:{{{1|}}}|{{{1}}}|article}}] (but note that updates without valid and reliable references will be removed) or discuss changes on the [[{{TALKPAGENAME}}|talk page]]. | cat = Current events | date = {{{date|}}} <!--Template:Current music-related--> }} }}<noinclude> {{Documentation}} <!-- Add categories and inter-wikis to the /doc subpage, not here! --> </noinclude> ft5xhhmiw4q1offr5bldyikh26o4feb Template:Current person 10 1023 2278 2277 2020-09-29T19:17:36Z Chrisb 1 1 revision imported 2277 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Current person}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Current person | type = notice | image = [[File:{{Ambox globe current red}}|50x40px]] | text = '''This {{{1|article}}} is about a {{{2|person}}} involved in {{{3|{{{event|a [[Portal:Current events|current event]]}}}}}}.''' Information may change rapidly as the event progresses, and initial news reports may be [[Wikipedia:Identifying reliable sources#Breaking news|unreliable]]. The [{{fullurl:{{FULLPAGENAME}}|action=history}} last updates] to this {{#if:{{{1|}}}|{{{1}}}|article}} [[Wikipedia:Risk disclaimer|may not reflect]] the most current information. | removalnotice = yes | fix = Please feel free to [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#if:{{{1|}}}|{{{1}}}|article}}] (but note that updates without valid and reliable references will be removed) or discuss changes on the [[{{TALKPAGENAME}}|talk page]]. | cat = Current events | date = {{{date|}}} }}<!--{{Current person}} end--> }}<noinclude> {{Documentation}} </noinclude> 936b9lamtzpeyd8g2yx4n19l1g3kok6 Template:Current related 10 1024 2280 2279 2020-09-29T19:17:36Z Chrisb 1 1 revision imported 2279 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Current related}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Current related | type = notice | image = [[File:{{Ambox globe current red}}|50x40px]] | text = This {{#if:{{{1|}}}|{{{1}}}|article}} '''may be affected by {{#if:{{{2|}}}|the following|a}} [[Portal:Current events|{{#if:{{{4|}}}|{{{4}}}|current event}}]]{{#if:{{{2|}}}|<nowiki>:</nowiki> [[{{{2}}}{{#if:{{{3|}}}|{{!}}{{{3}}}|}}]]|}}'''. Information in this {{#if:{{{1|}}}|{{{1}}}|article}} may change rapidly as the event progresses. Initial news reports may be [[Wikipedia:Reliable sources#Breaking news|unreliable]]. The [{{fullurl:{{FULLPAGENAME}}|action=history}} last updates] to this {{#if:{{{1|}}}|{{{1}}}|article}} [[Wikipedia:Risk disclaimer|may not reflect]] the most current information. | removalnotice = yes | fix = Please feel free to [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#if:{{{1|}}}|{{{1}}}|article}}] (but note that updates without valid and reliable references will be removed) or discuss changes on the [[{{TALKPAGENAME}}|talk page]]. | cat = Current events | date = {{{date|}}} }}<!--{{Current related}} end--> }}<noinclude>{{Documentation}}</noinclude> lpfev1m4m6uwptqedxukqrq9yw16apj Template:Current spaceflight 10 1025 2282 2281 2020-09-29T19:17:36Z Chrisb 1 1 revision imported 2281 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Current spaceflight}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Current spaceflight | type = notice | removalnotice = yes | fix = <small>Please feel free to [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#if:{{{1|}}}|{{{1}}}|article or section}}] (but note that updates without valid and reliable references will be removed) or discuss changes on the [[{{TALKPAGENAME}}|talk page]].</small> | image = [[File:{{Ambox globe current red}}|50x40px]] | text = '''This {{{1|article or section}}} documents a [[Portal:Current events|current or recent]] [[spaceflight|{{#if:{{{mission|}}}|space mission|spaceflight}}]]{{#if:{{{related|}}}|-related activity}}.''' {{#if: {{{details|}}}|{{{details}}}|Details may change as the mission progresses. Initial news reports may be [[Wikipedia:Identifying reliable sources#Breaking news|unreliable]]. The [{{fullurl:{{FULLPAGENAME}}|action=history}} last updates] to this {{#if:{{{1|}}}|{{{1}}}|article or section}} [[Wikipedia:Risk disclaimer|may not reflect]] the most current information.<br/><small>For more information please see [[Wikipedia:WikiProject Spaceflight|WikiProject Spaceflight]].</small>}} }}{{DMCA|Current events}}{{ns0|{{#ifexist:Category:{{{year|{{{3|{{CURRENTYEAR}}}}}}}} in spaceflight|[[Category:{{{year|{{{3|{{CURRENTYEAR}}}}}}}} in spaceflight]]|[[Category:Spaceflight]]}}}}<!--{{Current spaceflight}} end--> }}<noinclude> {{Documentation}} </noinclude> 3vqwimibcwem20fyr54yiz9genqr6ma Template:Current sport 10 1246 2724 2723 2020-09-29T19:18:08Z Chrisb 1 1 revision imported 2723 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = Current sport | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = notice <!--- IMPORTANT: When adding new sports/images, please also add them to {{Current sport-related}}. --> | image = {{Current sports event icon|sport={{{sport|}}}|size=40px}} | text = This {{{1|article}}} '''documents a [[Portal:Current events/Sports|current {{{event|sporting event}}}]]'''. Information may change rapidly as the event progresses. Initial news reports, scores, or statistics may be [[Wikipedia:Identifying reliable sources#Breaking news|unreliable]]. The [{{fullurl:{{FULLPAGENAME}}|action=history}} last updates] to this {{#if:{{{1|}}}|{{{1}}}|article}} [[Wikipedia:Risk disclaimer|may not reflect]] the most current information. | removalnotice = yes | fix = Please feel free to [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#if:{{{1|}}}|{{{1}}}|article}}] (but note that updates without valid and reliable references will be removed) or discuss changes on the [[{{TALKPAGENAME}}|talk page]]. | all = {{#switch:{{{category}}} |y |Y=Current sports events }} | date = {{{date|}}} }} }}<noinclude> {{Documentation}} </noinclude> 0ayrns4ag9a4j3hnj8dmm3n2hzg9mih Template:Current sport-related 10 1093 2418 2417 2020-09-29T19:17:46Z Chrisb 1 1 revision imported 2417 wikitext text/x-wiki {{ambox | name = Current sport-related | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = notice | removalnotice = yes | fix = {{#if:{{{mini|}}}|<!-Do not show if mini is enabled-->|Please feel free to [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] (but note that updates without valid and reliable references will be removed) or discuss changes on the [[{{TALKPAGENAME}}|talk page]].}} | image = {{Current sports event icon|sport={{{sport}}}|size={{#if:{{{mini|}}}|30|42}}px}} | text = {{#if:{{{mini|}}} |For current information on this topic, see [[{{{1}}}]]. {{#if:{{{second|}}}|{{{second}}}, see [[{{{2}}}]].}}<!-- used to link to last years seasons articles ---> |This article '''is related to a current [[Portal:Current events/Sports|sports-related event]]'''. For information on the topic, see [[{{{1}}}]]. {{#if:{{{second|}}}|{{{second}}}, see [[{{{2}}}]].}} Information may change rapidly as the event progresses, and initial news reports may be [[Wikipedia:Identifying reliable sources#Breaking news|unreliable]]. The [{{fullurl:{{FULLPAGENAME}}|action=history}} last updates] to these articles [[Wikipedia:Risk disclaimer|may not reflect]] the most current information. }} }}<noinclude> {{Documentation}} <!-- Add categories and inter-wikis to the /doc subpage, not here! --> </noinclude> i5rz3gdbsd75hanxa5putlq8ir2jg1g Template:Current sports transaction 10 1026 2284 2283 2020-09-29T19:17:37Z Chrisb 1 1 revision imported 2283 wikitext text/x-wiki {{Ambox | name = Current sports transaction | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | small = {{{small|}}} | type = notice <!--- IMPORTANT: When adding new sports/images, please also add them to {{Future sport}} and {{Current sport-related}}. --> | image = {{Current sports event icon|sport={{{sport}}}|size=50x40px}} | text = The subject of this {{#if:{{{1|}}}|{{{1}}}|article}} '''is in the news regarding a reported {{lc: {{{trans|transaction}}}}}'''. Information regarding the {{lc: {{{trans|transaction}}}}} {{{reason|may be based on [[Wikipedia:Biographies of living persons#Avoid gossip and feedback loops|anonymous sources]] and/or awaiting an [[Wikipedia:WikiProject Sports/Handling sports transactions|official announcement]].}}} [[Wikipedia:Reliable sources#Breaking news|Breaking news]] reports may be unreliable. | removalnotice = yes | fix = Please feel free to discuss changes on the [[{{TALKPAGENAME}}|talk page]]. }}<noinclude> {{Documentation}} </noinclude> 5fxuwhow56wxoldak85ppyxwk0xs06d Template:D-A 10 1509 4666 4665 2020-10-11T05:35:17Z Chrisb 1 1 revision imported 4665 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #FFD; color: #000; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-debate"|{{{1|A}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> 0yqvkcpj7cfwi55jw21thn4li04mu4h Template:D-I 10 1510 4668 4667 2020-10-11T05:35:17Z Chrisb 1 1 revision imported 4667 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #CFC; color: #000; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-debate"|{{{1|I}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> os5y569e2zze9a76kv0e3usexj41ft9 Template:D-N 10 1511 4670 4669 2020-10-11T05:35:17Z Chrisb 1 1 revision imported 4669 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #FF9090; color: #000; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-debate"|{{{1|N}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> 06x3zho3i1o6odgu2gc2mn56v9j12wp Template:D-Nv 10 1512 4672 4671 2020-10-11T05:35:17Z Chrisb 1 1 revision imported 4671 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #FFD; color: #000; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-debate"|{{{1|NV}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> pwcoeptet19ac8ps5uk44x05cj5ys0b Template:D-O 10 1513 4674 4673 2020-10-11T05:35:17Z Chrisb 1 1 revision imported 4673 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #C5D2EA; color: #000; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-debate"|{{{1|O}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> srunx6ymotudagyf4gaf21qecuwvqg2 Template:D-Out 10 1514 4676 4675 2020-10-11T05:35:17Z Chrisb 1 1 revision imported 4675 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #ececec; color: #2C2C2C; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-debate"|{{{1|Out}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> l06l1iyyn3igzptctlhnkjzid1cqodo Template:D-P 10 1515 4678 4677 2020-10-11T05:35:17Z Chrisb 1 1 revision imported 4677 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #90FF90; color: #000; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-debate"|{{{1|P}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> 2j3t1aulh8vw9c888qahocktv5z9pl8 Template:D-W 10 1516 4680 4679 2020-10-11T05:35:18Z Chrisb 1 1 revision imported 4679 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #f0e68c; color: #000; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-debate"|{{{1|W}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> dcgzlourwd4vgv6pox1rq2h97bpdj6r Template:DMCA 10 1609 4866 4865 2020-10-11T05:39:03Z Chrisb 1 1 revision imported 4865 wikitext text/x-wiki {{Dated maintenance category |onlyarticles=yes |1={{{1|}}} |2={{{2|}}} |3={{{3|}}} |4={{{4|}}} |5={{{5|}}} }}<noinclude> {{documentation|Template:Dated maintenance category/doc}} </noinclude> cl1tba6o83bu6hpmnvwvbcse6qwofoo Template:Dablinks 10 1191 2614 2613 2020-09-29T19:18:00Z Chrisb 1 1 revision imported 2613 wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = Dablinks | type = move | image = [[File:Disambig.svg|40px]] | issue = '''This article currently [[Wikipedia:Disambiguation pages with links|links]] to a large number of [[Help:Disambiguation|disambiguation pages]] (or back to itself).''' | fix = Please [[Wikipedia:Piped link|help direct]] these ambiguous links to articles dealing with the specific meaning intended. <small>Read the [[Template:Dablinks/FAQ|FAQ]]</small>.{{#if:{{{1|}}}| {{hidden|header=|headerstyle = font-weight:3; margin-right:3em|content= <hr style="margin-right:4em">Please find [[H:WIKILINK|wikilinks]] in this article that point to articles in the list below. They may be of the form: <code><nowiki>[[</nowiki>''ArticleName''<nowiki>|...]]</nowiki></code>, with or without [[WP:PIPE|piping]]. {{#if:{{{1|}}}|* [[{{{1}}}]]}}{{#if:{{{2|}}}|* [[{{{2}}}]]}}{{#if:{{{3|}}}|* [[{{{3}}}]]}}{{#if:{{{4|}}}|* [[{{{4}}}]]}}{{#if:{{{5|}}}|* [[{{{5}}}]]}}{{#if:{{{6|}}}|* [[{{{6}}}]]}}{{#if:{{{7|}}}|* [[{{{7}}}]]}}{{#if:{{{8|}}}|* [[{{{8}}}]]}}{{#if:{{{9|}}}|* [[{{{9}}}]]}}{{#if:{{{10|}}}|* [[{{{10}}}]]}} }}}} | date = {{{date|}}} | cat = Pages with excessive dablinks | all = All pages with excessive dablinks }} }}<noinclude> {{documentation}} <!-- Add categories and inter-wikis to the /doc subpage, please, not here! --> </noinclude> bfnwcy0m9kknov2y25mrzoab9i7m1m2 Template:Dated maintenance category 10 1610 4868 4867 2020-10-11T05:39:03Z Chrisb 1 1 revision imported 4867 wikitext text/x-wiki <nowiki/><!--This nowiki helps to prevent whitespace at the top of articles-->{{#ifeq:{{FULLROOTPAGENAME}}|Wikipedia:Template messages|<!--Do not categorize-->|<!-- -->{{#ifexpr:{{#if:{{NAMESPACE}}|0|1}}+{{#ifeq:{{{onlyarticles|no}}}|yes|0|1}} |{{#if:{{{3|}}} |[[Category:{{{1}}} {{{2}}} {{{3}}}]]<!-- -->{{#ifexist:Category:{{{1}}} {{{2}}} {{{3}}} |<!-- -->|[[Category:Articles with invalid date parameter in template]]<!-- -->}} |[[Category:{{#if:{{{5|}}} |{{{5}}}<!-- -->|{{{1}}}<!-- -->}}]]<!-- -->}}{{#if:{{{4|}}} |[[Category:{{{4}}}]]}}<!-- -->}}<!-- -->}}<noinclude> {{documentation}} </noinclude> 7p59j4cq4i8wg65odpv5287yu50sczo Template:Dead end 10 1027 2286 2285 2020-09-29T19:17:37Z Chrisb 1 1 revision imported 2285 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Dead end}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Dead end | class = ambox-dead_end | type = style | image = [[File:MUTCD W14-1.svg|50x40px|link=|alt=]] | issue = This {{{1|article}}} '''has no [[Wikipedia:Manual of Style/Linking|links]] to other Wikipedia articles.''' | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by adding links [[Wikipedia:Manual of Style/Linking#Overlinking and underlinking|that are relevant to the context]] within the existing text. | date = {{{date|}}} | cat = Dead-end pages | all = All dead-end pages | cat2 = Articles covered by WikiProject Wikify | all2 = All articles covered by WikiProject Wikify }}<!--{{Dead end}} end--> }}<noinclude> {{Documentation}} </noinclude> m00l82vyao2vy1xaci1l46hj2g8u1uq Template:Debate 10 1028 2288 2287 2020-09-29T19:17:37Z Chrisb 1 1 revision imported 2287 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = Debate | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = style | class = ambox-debate | sect = {{{1|}}} | issue = '''is written in the style of a debate rather than an encyclopedic summary'''. | fix = It may require [[Wikipedia:Cleanup|cleanup]] to meet Wikipedia's [[:Category:Wikipedia style guidelines|quality standards]] and make it more accessible to a general audience. Please discuss this issue on the [[{{TALKPAGENAME}}|talk page]]. | removalnotice = yes | date = {{{date|}}} }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}} }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 26p221k6qhhl9tym6ojc9967627w7yt Template:Delink 10 1447 3198 3197 2020-10-11T01:32:03Z Chrisb 1 1 revision imported 3197 wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:delink|delink}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> nxxwkb2lon9wgne4irg9ctbsle6zwiy Template:Depends 10 1517 4682 4681 2020-10-11T05:35:18Z Chrisb 1 1 revision imported 4681 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #FED; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="depends table-depends"|{{{1|Depends}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> k5f0tfybyqm7m6yt6plwt0txykkhi7z Template:Devanagari script needed 10 1068 2368 2367 2020-09-29T19:17:42Z Chrisb 1 1 revision imported 2367 wikitext text/x-wiki {{Script needed |language = Devanagari |image = JanaSanskritSans ddhrya.svg }} i5wr9gu2soguym9xdag8vvpq1w4p0fk Template:Dicdef 10 1029 2290 2289 2020-09-29T19:17:37Z Chrisb 1 1 revision imported 2289 wikitext text/x-wiki <!--{{Dicdef}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Dicdef | type = move | image = [[File:Edit-copy purple-wikit.svg|50x40px]] | issue = This {{{1|article}}} '''appears to be a [[Wikipedia:Wikipedia is not a dictionary|dictionary definition]]'''. | all = {{#ifeq:{{yesno-no|{{{nocat|}}}}}|yes||Flagged dictionary definitions}} | fix = Please [[WP:DEVELOP|rewrite it]] to present the subject from an encyclopedic point of view. If it cannot be turned into a full encyclopedia article in the near future, consider moving it to [[Wiktionary]]. {{hidden top|title=Steps for moving to Wiktionary:}} # Check that this {{{1|article}}} meets [[Wiktionary:Wiktionary:Criteria for inclusion|Wiktionary's criteria for inclusion]]. # Check that Wiktionary does not have an article on this word or phrase, as [[wikt:Special:Search/{{PAGENAME}}|verified using the search page]]. If Wiktionary has a definition already, change this tag to {{tl|TWCleanup2}} or else consider a [[Wikipedia:Soft redirect|soft redirect]] to Wiktionary by replacing the text on this page with {{tl|Wi}}. If Wiktionary does not have the definition yet, consider moving the whole {{{1|article}}} to Wiktionary by replacing this tag with the template {{tl|Copy to Wiktionary}}. <small>This template will no longer automatically categorize articles as candidates to move to Wiktionary.</small> {{hidden bottom}} }}<!--{{Dicdef}} end--><noinclude>{{Documentation}}</noinclude> ekdmtg721wdb3djnj7v519tj40j1btw Template:Directory 10 1030 2292 2291 2020-09-29T19:17:37Z Chrisb 1 1 revision imported 2291 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = Directory | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = content | class = ambox-directory | sect = {{{1|}}} | issue = '''reads like [[WP:NOTDIRECTORY|{{#if:{{{2|}}}|{{{2}}}|a directory}}]]'''. | fix = Wikipedia policy generally considers directories in articles to be unencyclopedic and potential [[Wikipedia:spam|spam]]. Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help rewrite it], to better conform with [[Wikipedia:Manual of Style/Lists|the Wikipedia Manual of Style standards on lists]]. If it cannot be properly modified, it may be '''[[WP:DELPRO|considered for deletion]]'''. | removalnotice = yes | date = {{{date|}}} }} }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> eoi72ex496156clhp0n2xsyhd1ox3h0 Template:Disambiguation subject notice 10 1287 2806 2805 2020-09-29T19:18:14Z Chrisb 1 1 revision imported 2805 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||$B= {{Ambox | subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = move | small = {{{small|}}} | text = A request that this page be {{#ifeq:{{{2}}}|delete|deleted is [[{{{1}}}|under discussion]]. Please do not delete this page until the discussion has been closed.|converted to a '''{{c|Disambiguation pages containing one non-primary topic|one non-primary topic}}''' disambiguation page titled {{#ifeq:{{FULLPAGENAME}}|Template:Disambiguation subject notice|"... (disambiguation)"|"{{-r|{{FULLPAGENAME}} (disambiguation)}}"}} is [[{{{1}}}|under discussion]]. It may not be necessary to delete this page if the [[WP:ONEOTHER]] editing guideline applies.}} }} }}<noinclude> {{Documentation|content= ==Usage== This template is used usually on [[WP:TWODABS]] pages during a requested move to a [[WP:Glossary#basename|base name]]. The first unnamed parameter, {{para|1}}, gives the talk page and section where the move request takes place. For example: <pre> {{Disambiguation subject notice|1=Talk:Foo#Bar}} </pre> If instead, the RM requires deletion of the disambiguation or set index page, then the second unnamed parameter, {{para|2}} should be used with the word "delete", as in: <pre> {{Disambiguation subject notice|1=Talk:Foo#Bar|2=delete}} </pre> The notice then becomes: {{Disambiguation subject notice|1=Talk:Foo#Bar|2=delete}} ==See also== * {{tl|Title notice}}, used by the [[User:RMCD bot|RMCD bot]] <!-- Categories below this line; interwikis at Wikidata --> [[Category:Article message templates]] }}</noinclude> d09a3g3hxoqjfl14ewfchvp4anlkxbp Template:Dispute about 10 938 2108 2107 2020-09-29T19:17:25Z Chrisb 1 1 revision imported 2107 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Dispute about}} begin-->{{Ambox | name = Dispute about | subst = <includeonly>{{subst:substcheck}}</includeonly> | image = [[File:System-search.svg|45px]] | type = content | issue = '''The factual accuracy of part of this article is [[Wikipedia:Accuracy dispute|disputed]].''' The dispute is about ''{{{1}}}''. | fix = Please help to ensure that disputed statements are [[Wikipedia:Reliable sources|reliably sourced]]. {{#ifexist:{{TALKPAGENAME}}|See the relevant discussion on the [[{{{talkpage|{{TALKPAGENAME}}#{{{2|{{{1|Disputed}}}}}}}}}|talk page]].}} | date = {{{date|}}} | cat = Accuracy disputes | removalnotice = yes }}<!--{{Dispute about}} end--> }}<noinclude> {{Documentation}} </noinclude> 30k0ejwt3u2b0qsglzpwyh06dze6s0w Template:Disputed 10 1031 2294 2293 2020-09-29T19:17:37Z Chrisb 1 1 revision imported 2293 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = Disputed | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = content | image = [[File:System-search.svg|45px|link=]] | class = ambox-disputed | issue = This {{{what|article}}}'s '''factual accuracy is [[Wikipedia:Accuracy dispute|disputed]]'''. {{#if:{{{details|}}}|{{{details|}}}}} | talk = {{{talkpage|{{{talk|{{{1|#Disputed}}}}}}}}} | fix = Please help to ensure that disputed statements are [[Wikipedia:Reliable sources|reliably sourced]]. | removalnotice = yes | date = {{{date|}}} | cat = Accuracy disputes | all = All accuracy disputes }} }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> lh2t0kfjky1yd1w3iibcrrxz7nf7erc Template:Disputed title 10 1032 2296 2295 2020-09-29T19:17:38Z Chrisb 1 1 revision imported 2295 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Disputed title}} begin-->{{Ambox | name = Disputed title | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | issue = The current title of this {{{what|article}}} '''is [[Wikipedia:Accuracy dispute|disputed]]'''. {{#if:{{{alternate title|}}}|An alternative proposed title is ''{{{alternate title}}}.''}} {{#if:{{{alternate titles|}}}|Alternative proposed titles are: ''{{{alternate titles}}}''.}} | fix = Please see the relevant discussion on the {{#if:{{{page|}}}|[[{{{page}}}|''discussion page'']]|[[:{{NAMESPACE}} talk:{{PAGENAME}}#{{{section|}}}|''talk page'']]}}. | date = {{{date|}}} | cat = Accuracy disputes | all = Wikipedia title cleanup }}<includeonly>{{Main other | [[Category:Wikipedia title cleanup (sorted by template)|D{{PAGENAME}}]] | }}</includeonly><!--{{Disputed title}} end--> }}<noinclude>{{Documentation}}</noinclude> olijv7diq9wz37wyzod36na78bfkby2 Template:Distinguish 10 1629 4906 4905 2020-10-11T05:50:20Z Chrisb 1 1 revision imported 4905 wikitext text/x-wiki {{#invoke:Distinguish|distinguish}}<noinclude><!-- splitting these lines causes {{Documentation}} template to terminate green shading when Distinguish is used in /doc pages. --> {{Documentation}} <!-- Add categories to the /doc subpage and interwikis to Wikidata, not here! --> </noinclude> t4az5q8zekjr0kpgvlz6fgo7i77psk8 Template:Distinguish/doc 10 1635 4918 4917 2020-10-11T05:50:23Z Chrisb 1 1 revision imported 4917 wikitext text/x-wiki {{Documentation subpage}} <!-- Please add categories at the bottom of this page, and interwikis at Wikidata (see Wikipedia:Wikidata) --> {{High-use| 65005 }} {{Lua|Module:Distinguish}} == Description == It renders a [[WP:HAT|hatnote]] to remind readers about the existence of one or more articles or elements whose title(s) is/are similar to this page. It is used in cases where the distinction between the title(s) is/are obvious that it does not need further explanation. For cases where an explanation is required, use {{tl|For}} and {{tl|About}}. For use on category pages, the corresponding template is {{Tl|Category distinguish}}. == Usage == It is the standard usage: {{tlx|Distinguish|Foo}} → {{Distinguish|Foo}} This hatnote can be used to distinguish from multiple articles: {{tlx|Distinguish|Foo|Bar}} → {{Distinguish|Foo|Bar}} {{tlx|Distinguish|Foo|Bar|Gaz}} → {{Distinguish|Foo|Bar|Gaz}} You may customize the text too. Use {{para|text}}. For example: {{tlx|Distinguish|text {{=}} custom &#91;&#91;text]], or &#91;&#91;foo]], a common example term}} → {{Distinguish|text = custom [[text]], or [[foo]], a common example term}} == When to use == This hatnote is generally used when readers have misspelled their desired title, and the error would be apparent by simply displaying the alternative term without further explanation. For example, consider a reader looking for the punctuation mark who instead ends up at [[coma]]: : [[Coma]] : {{Distinguish|Comma}} Readers are presumed to recognize that they actually wanted ''comma'' by merely looking at the spelling, and this case generally requires no further explanation. However, {{tlx|distinguish}} is not suitable when the difference is not readily apparent without additional details. Consider a reader looking for a game they believe is named Reversi: : {{cross}} [[Reversi]] : {{Distinguish|Reversis}} In the above hatnote, it is not generally apparent how the suggested Reversis is different from Reversi, which is also a game. In this case you should use {{tlx|about}} instead of {{tlc|distinguish}}. The difference is to provide explanatation upfront without requiring the reader to click through and differentiate the terms on their own. : {{tick}} [[Reversi]] : {{About|the board game|the card game|Reversis}} {{tlc|Distinguish}} should only be used when the ambiguity exists for a portion of the readership that is sufficient to warrant a hatnote. Care should be taken to [[WP:TRHAT|avoid trivial uses]]. == TemplateData == {{TemplateData header}} <templatedata> { "params": { "1": { "label": "Name of article", "description": "Name of article that you want to link to", "type": "wiki-page-name", "suggested": true }, "2": { "label": "Optional additional article to link (2)", "description": "Optional additional article to link", "type": "wiki-page-name" }, "3": { "label": "Optional additional article to link (3)", "description": "Optional additional article to link", "type": "wiki-page-name" }, "4": { "label": "Optional additional article to link (4)", "description": "Optional additional article to link", "type": "wiki-page-name" }, "text": { "label": "Custom text", "description": "Custom message in wikitext; e.g. \"[[foo]] and [[bar]]\" produces \"Not to be confused with [[foo]] and [[bar]].\"", "type": "string" }, "selfref": { "label": "Self reference", "description": "If set, marks note as being a self reference, to not be shown when content is reused", "type": "boolean" } }, "description": "A hatnote used when there is an ambiguity in an article's title.", "paramOrder": [ "1", "2", "3", "4", "text", "selfref" ], "format": "inline" } </templatedata> == Redirects == * {{tl|Confused}} * {{tl|Confuse}} * {{tl|Misspelling}} == See also == * {{tl|About}} * {{tl|Category distinguish}} * {{tl|For}} * {{tl|Redirect}} * {{tl|R from misspelling}} {{Hatnote templates}} <includeonly>{{sandbox other|| <!-- Add categories below this line, and interwikis at Wikidata --> [[Category:Disambiguation and redirection templates]] [[Category:Hatnote templates]] }}</includeonly> bastyrxykyp7bsm7o1ua0s10yequkw2 Template:Dmbox 10 922 2076 2075 2020-09-29T19:17:23Z Chrisb 1 1 revision imported 2075 wikitext text/x-wiki <templatestyles src="Dmbox/styles.css" /> <table id=" {{#switch:{{{type|}}} | setindex = setindexbox | disambig | #default = disambigbox }}" class="metadata plainlinks dmbox {{#switch:{{{type|}}} | setindex = dmbox-setindex | disambig | #default = dmbox-disambig }} {{{class|}}}" style="{{{style|}}}" role="presentation"> <tr> {{#ifeq:{{{image|}}}|none | <!-- No image. Cell with some width or padding necessary for text cell to have 100% width. --><td class="mbox-empty-cell"></td> | <td class="mbox-image" style="padding: 2px 0 2px 0.4em;"> {{#if:{{{image|}}} | {{{image}}} | [[File:{{#switch:{{{type|}}} | setindex = DAB list gray.svg | disambig <!-- disambig = default --> | #default = Disambig gray.svg }}|30px|alt=Disambiguation icon]] }}</td> }} <td class="mbox-text" style="padding: 0.25em 0.4em; font-style: italic; {{{textstyle|}}}"> {{{text}}} </td> {{#if:{{{imageright|}}} | <td class="mbox-imageright" style="padding: 2px 0.4em 2px 0;"> {{{imageright}}} </td> }} </tr> </table><!-- Detect and report usage with faulty "type" parameter: -->{{#switch:{{{type|}}} | <!-- No type fed, is also valid input --> | disambig | setindex = <!-- Do nothing, valid "type" --> | #default = <div style="text-align: center;">This message box is using an invalid "type={{{type|}}}" parameter and needs fixing.</div>[[Category:Wikipedia message box parameter needs fixing|{{main other|Main:}}{{FULLPAGENAME}}]]<!-- Sort on namespace --> }}<!-- Magic word for disambiguation pages: -->{{#if:{{{nocat|}}}||{{#ifeq:{{{type|}}}|disambig|__DISAMBIG__|}}}}<!-- Categorization: -->{{#switch:{{{type|}}} | setindex = {{category handler | main = [[Category:All set index articles]] | nocat = {{{nocat|}}} <!--So "nocat=true" works--> | page = {{{page|}}} <!--For testing--> }} | disambig <!-- disambig = default --> | #default = {{category handler | main = [[Category:All article disambiguation pages]][[Category:All disambiguation pages]] | template = <!-- Don't categorize on template pages. --> | other = [[Category:All disambiguation pages]] | nocat = {{{nocat|}}} <!--So "nocat=true" works--> | page = {{{page|}}} <!--For testing--> }} }}<noinclude> {{documentation}} <!-- Add categories to the /doc subpage and interwikis to Wikidata, not here! --> </noinclude> n6r7u9qq70c0wdfbtg7ybyimkk47x0t Template:Documentation 10 1294 2820 2819 2020-09-29T19:18:15Z Chrisb 1 1 revision imported 2819 wikitext text/x-wiki {{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude> <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> o4ddn701tao1ufdnkxe1wdgz5b5ga84 Template:Documentation subpage 10 1295 2822 2821 2020-09-29T19:18:15Z Chrisb 1 1 revision imported 2821 wikitext text/x-wiki <includeonly><!-- -->{{#ifeq:{{lc:{{SUBPAGENAME}}}} |{{{override|doc}}} | <!--(this template has been transcluded on a /doc or /{{{override}}} page)--> </includeonly><!-- -->{{#ifeq:{{{doc-notice|show}}} |show | {{Mbox | type = notice | style = margin-bottom:1.0em; | image = [[File:Edit-copy green.svg|40px|alt=|link=]] | text = '''This is a [[Wikipedia:Template documentation|documentation]] [[Wikipedia:Subpages|subpage]] for {{{1|[[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]}}}'''.<br />It contains usage information, [[Wikipedia:Categorization|categories]] and other content that is not part of the original {{#if:{{{text2|}}} |{{{text2}}} |{{#if:{{{text1|}}} |{{{text1}}} |{{#ifeq:{{SUBJECTSPACE}} |{{ns:User}} |{{lc:{{SUBJECTSPACE}}}} template page |{{#if:{{SUBJECTSPACE}} |{{lc:{{SUBJECTSPACE}}}} page|article}}}}}}}}. }} }}<!-- -->{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}<!-- -->{{#if:{{{inhibit|}}} |<!--(don't categorize)--> | <includeonly><!-- -->{{#ifexist:{{NAMESPACE}}:{{BASEPAGENAME}} | [[Category:{{#switch:{{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Wikipedia}} documentation pages]] | [[Category:Documentation subpages without corresponding pages]] }}<!-- --></includeonly> }}<!-- (completing initial #ifeq: at start of template:) --><includeonly> | <!--(this template has not been transcluded on a /doc or /{{{override}}} page)--> }}<!-- --></includeonly><noinclude>{{Documentation}}</noinclude> iwoex9r4jjje2jlwm8eygcyef0s6hzx Template:Draw 10 1518 4684 4683 2020-10-11T05:35:18Z Chrisb 1 1 revision imported 4683 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background:#c5d2ea; color:black; vertical-align:middle; text-align:{{{align|center}}}; {{{style|}}}" class="table-draw" |{{{1|}}}<noinclude> |} {{documentation|Template:Table cell templates/doc}} </noinclude> syo1yjnhgk2f3q5596y2d9areyggabo Template:Dropped 10 1519 4686 4685 2020-10-11T05:35:18Z Chrisb 1 1 revision imported 4685 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #FED; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="dropped table-dropped"|{{{1|Dropped}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> e844dty585c314f15fdd5knxzjfuo52 Template:Dunno 10 1520 4688 4687 2020-10-11T05:35:18Z Chrisb 1 1 revision imported 4687 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>{{Unknown|{{{1|?}}}|{{{align|}}}|{{{style|}}}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> exqdy5k57eyslr79m98xly11nqy5vv3 Template:Duplicated citations 10 1184 2600 2599 2020-09-29T19:17:59Z Chrisb 1 1 revision imported 2599 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Duplicated citations}} begin-->{{Ambox | name = Duplicated citations | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | class = ambox-cleanup-link_rot | image = [[File:Text document with red question mark.svg|50x40px|link=|alt=]] | issue = This {{{1|article}}} '''lists the same citations more than once.''' | fix = Please consider using [[Help:Footnotes#WP:NAMEDREFS|named references]] to ensure each citation appears only one time. | cat = Wikipedia references cleanup | all = All articles needing references cleanup | cat2 = Articles covered by WikiProject Wikify | all2 = All articles covered by WikiProject Wikify |all3 = All articles with duplicate citations | date = {{{date|}}} | removalnotice = yes }}<!--{{Duplicated citations}} end--> }}<noinclude> {{Documentation}} </noinclude> 3d89bkamqguio7cdpmb28ljwexhmzjx Template:Duplication 10 1154 2540 2539 2020-09-29T19:17:55Z Chrisb 1 1 revision imported 2539 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Duplication}} begin-->{{Ambox |name = Duplication |subst = <includeonly>{{subst:substcheck}}</includeonly> |type = style |sect = {{{1|{{#if:{{yesno|{{{section|}}}}}|section|article}}}}} |small = {{{small|{{#if:{{yesno|{{{section|}}}}}|left|{{#ifeq:{{{1|}}}|section|left|no}}}}}}} |issue = '''[[WP:CFORK|duplicates]] the scope of other {{#if:{{yesno|{{{section|}}}}}|sections|articles}}'''{{#if:{{{dupe|}}}|, specifically, [[:{{{dupe}}}]]{{#if:{{{dupe2|}}}|&nbsp;and [[:{{{dupe2}}}]]}}}}. |fix = Please [[{{{discuss|{{TALKPAGENAME}}}}}|discuss]] this issue on the talk page and edit it to conform with [[Wikipedia:Summary style|Wikipedia's Manual of Style]]{{#if:{{yesno|{{{section|}}}}}|&nbsp;by replacing the section with a link and a [[Wikipedia:Summary style|summary]] of the repeated material, or by spinning off the repeated text into an article in its own right.|.}} |date = {{{date|}}} |all = {{#if:{{{dupe|}}}|Duplicate articles|Articles in need of internal merging}} }}<!--{{Duplication}} end--> }}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> 7qhsujy95ilzyyuf14f0jswxbaqftjd Template:Egyptian hieroglyphic script needed 10 987 2206 2205 2020-09-29T19:17:32Z Chrisb 1 1 revision imported 2205 wikitext text/x-wiki {{Script needed |language = Egyptian hieroglyphic |image = Nbw.wy.svg }}<noinclude> [[ar:قالب:نص هيروغليفية مصرية]] </noinclude> futj6vcow4aagvxe62wuxd4einlto5j Template:Election results missing 10 969 2170 2169 2020-09-29T19:17:29Z Chrisb 1 1 revision imported 2169 wikitext text/x-wiki {{ambox | name=Election results missing | subst=<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type=content | image=[[File:Ballot box current.svg|40px]] | issue='''Election results are missing from this {{{1|article}}}.''' | fix=Using a [[Wikipedia:Reliable sources|reliable source]], please add results from elections that are unlisted or incompletely listed. | date= | cat= | all= }} <noinclude> {{documentation}} [[Category:Temporal templates]]</noinclude> 5f3r4p96q654p6pznlfidkfhmbrs7qh Template:Eliminated 10 1521 4690 4689 2020-10-11T05:35:18Z Chrisb 1 1 revision imported 4689 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background:#F99; color:black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-no" | {{{1|Eliminated}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> 5fpl2i1pa8vs5le42gs9td79zi3p17q Template:Em 10 1314 2860 2859 2020-09-29T19:18:21Z Chrisb 1 1 revision imported 2859 wikitext text/x-wiki <em {{#if:{{{role|}}}|role="{{{role}}}"}} {{#if:{{{class|}}}|class="{{{class}}}"}} {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{style|}}}|style="{{{style}}}"}} {{#if:{{{title|}}}|title="{{{title}}}"}}>{{{1}}}</em><noinclude> {{documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> qihth5vbfna026aqh87kteifb1nb5ot Template:Empty section 10 961 2154 2153 2020-09-29T19:17:28Z Chrisb 1 1 revision imported 2153 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Empty section}} begin-->{{Ambox | name = Empty section | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | small = {{{small|left}}} | image = [[File:Wiki letter w cropped.svg|20px|alt=&#91;icon&#93;]] | text = '''This section is empty.''' <small>You can help by [{{fullurl:{{FULLPAGENAME}}|action=edit&section={{{section|}}}}} adding to it].</small> | cat = Articles to be expanded | all = All articles to be expanded | date = {{{date|}}} | cat2 = Articles with empty sections | all2 = All articles with empty sections | date2 = {{{date|}}} }}<!--{{Empty section}} end--> }}<noinclude> {{Documentation}} </noinclude> n5fpyel15004cloibxo7o12iw8orf7r Template:Ensure AA contrast ratio 10 1522 4692 4691 2020-10-11T05:35:18Z Chrisb 1 1 revision imported 4691 wikitext text/x-wiki <includeonly>{{#if:{{{base|}}}|{{#ifexpr:{{#invoke:Color contrast|ratio|{{{base}}}|{{{other|}}}|error=21}} < 4.5 OR {{#invoke:Color contrast|ratio|{{{base}}}|black|error=0}} < 4.5 AND {{#invoke:Color contrast|ratio|{{{base}}}|white|error=0}} < 4.5|{{{category|}}}}}}}</includeonly><noinclude> {{Documentation}} </noinclude> eefhmsqnkmcglwrvnc7ewpotwcv7p7d Template:Essay-like 10 1033 2298 2297 2020-09-29T19:17:38Z Chrisb 1 1 revision imported 2297 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = Essay-like | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = style | class = ambox-essay-like | sect = {{{1|}}} | issue = '''is written like {{#if:{{{2|}}}|{{{2}}}|a [[Wikipedia:What Wikipedia is not#Wikipedia is not a publisher of original thought|personal reflection, personal essay, or argumentative essay]]|an [[WP:EDITORIAL|editorial]] or [[WP:NOTESSAY|personal essay]]}}''' that states a Wikipedia editor's personal feelings or presents an original argument about a topic. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] by rewriting it in an [[Wikipedia:Writing better articles#Information style and tone|encyclopedic style]]. | removalnotice = yes | date = {{{date|}}} }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}} }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 6v5wrax5mirgbe8h1z8244hy5by9ixy Template:Example farm 10 1034 2300 2299 2020-09-29T19:17:38Z Chrisb 1 1 revision imported 2299 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Example farm}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Example farm | type = content | issue = This {{{1|article}}} '''may contain [[Wikipedia:What Wikipedia is not#Wikipedia is not an indiscriminate collection of information|indiscriminate]], [[Wikipedia:Manual of Style/Embedded lists#List size|excessive]], or [[Wikipedia:Neutral point of view#Due and undue weight|irrelevant]] examples'''. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve the article] by adding more descriptive text and removing [[Wikipedia:Example cruft|less pertinent examples]]. See Wikipedia's [[Wikipedia:Writing better articles|guide to writing better articles]] for further suggestions. | date = {{{date|}}} | all = All articles with too many examples | cat = Articles with too many examples }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}||Wikipedia articles with style issues by month}}<!--{{Example farm}} end--> }}<noinclude> {{Documentation}} </noinclude> 3ywb6lpf2kgind6kzqju1rlho8xingx Template:Excessive citations 10 1233 2698 2697 2020-09-29T19:18:06Z Chrisb 1 1 revision imported 2697 wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B= <!--{{Excessive citations}} begin-->{{Ambox | name = Excessive citations | type = style | small = {{{small|}}} | class = ambox-citation_style | sect = {{{1|}}} | issue = '''may contain [[Wikipedia:Citation overkill|an excessive number of citations]]'''. | fix = Please consider [[Wikipedia:Citation_overkill#How_to_trim_excessive_citations|removing references to unnecessary or disreputable sources]], [[Wikipedia:Citation_overkill#Citation_Merging|merging citations]] where possible, or, if necessary, flagging the content for deletion. {{#if:{{{details|}}}|<em>{{{details}}}</em>.}} | cat = Wikipedia references cleanup | all = All articles needing references cleanup | cat2 = Articles covered by WikiProject Wikify | all2 = All articles covered by WikiProject Wikify | date = {{{date|}}} | removalnotice = yes }}<!--{{Excessive citations}} end--> }}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 67l289l7s76dtl9ge7tsvzkdk1srl2y Template:Exempt 10 1523 4694 4693 2020-10-11T05:35:19Z Chrisb 1 1 revision imported 4693 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: limegreen; vertical-align: middle; text-align: {{{align|center}}}; {{{style|text-transform: capitalize;}}}" class="table-cast"|{{{1|exempt}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} [[Category:Television table cell templates]] f4b5xj9ishddj0g1e30xi7xyi6o8sr2 Template:Exit list 10 1035 2302 2301 2020-09-29T19:17:38Z Chrisb 1 1 revision imported 2301 wikitext text/x-wiki <!--{{Exit list}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Exit list | type = content | image = [[Image:Jct plate.svg|50x40px|link=|alt=]] | text = '''This section is missing a table that represents a list of exits or junctions.'''<br>Please help by <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} adding the missing exit or junction list]</span>. }}{{main other | [[Category:Road articles needing a junction list|{{PAGENAME}}]] | }}<!--{{Exit list}} end--><noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> n2osr64q7lwvzr73t1fwgvhkocpqtdy Template:Expand Spanish 10 1177 2586 2585 2020-09-29T19:17:58Z Chrisb 1 1 revision imported 2585 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Expand language |name=Expand Spanish |langcode=es |google=yes |section={{{section|}}} |otherarticle={{{1|}}} |set={{{1|}}} |no interwiki={{{no interwiki|}}} |date={{{date|}}} |fa={{{fa|}}} |demospace={{{demospace|<noinclude>main</noinclude>}}} |topic={{#switch: {{{topic}}} | geo = Geography | gov = Government and politics | cult | culture = Culture | hist = History | sci = Science | tech = Technology | sport = Sports | transport = Transport | struct = Building and structure }} |nodoc={{{nodoc|}}} }} }} gnwqjhqog6p18k54e8xzuo2ws36u59z Template:Expand Tibetan 10 1179 2590 2589 2020-09-29T19:17:58Z Chrisb 1 1 revision imported 2589 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Expand language |name=Expand Tibetan |langcode=bo |google=yes |otherarticle={{{1|}}} |set={{{1|}}} |no interwiki={{{no interwiki|}}} |date={{{date|}}} |fa={{{fa|}}} |demospace={{{demospace|<noinclude>main</noinclude>}}} |topic={{#switch: {{{topic}}} | geo = Geography | gov = Government and politics | cult | culture = Culture | hist = History | sci = Science | tech = Technology | sport = Sports | transport = Transport | struct = Building and structure }} |nodoc={{{nodoc|}}} }} }} ar2f13c33d0dm4wzkdtddy0gqsbi0jh Template:Expand language 10 1157 2546 2545 2020-09-29T19:17:55Z Chrisb 1 1 revision imported 2545 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Expand language}} begin-->{{ambox | name = {{{name|Expand language}}} | subst = <includeonly>{{{subst|{{subst:substcheck}}}}}</includeonly> | type = notice | image = [[File:Translation to english arrow.svg|50x40px|alt=|link=]] | text = {{hidden | 1 =<!-- Multiple languages --> {{#if:{{{langcode2|}}}|This {{#ifeq:yes|{{yesno|def=|{{{section|}}}}}|section|article}} '''may be expanded with text translated from the corresponding articles in {{#if:{{{otherarticle|}}}|[[:{{{langcode|}}}:{{{otherarticle}}}|{{#language:{{{langcode|}}}|en}}]]|{{#if:{{Wikidata sitelink|lang={{{langcode}}}}}|[[:{{{langcode}}}:{{Wikidata sitelink|lang={{{langcode}}}}}|{{#language:{{{langcode|}}}|en}}]]|{{#language:{{{langcode|}}}|en}}}}}}{{#if:{{{langcode3|}}}|{{#if:{{{otherarticle3|}}}|, [[:{{{langcode3|}}}:{{{otherarticle3}}}|{{#language:{{{langcode3|}}}|en}}]]|{{#if:{{Wikidata sitelink|lang={{{langcode3}}}}}|, [[:{{{langcode3}}}:{{Wikidata sitelink|lang={{{langcode3}}}}}|{{#language:{{{langcode3|}}}|en}}]]|, {{#language:{{{langcode3|}}}|en}}}}}}}} and {{#if:{{{otherarticle2|}}}|[[:{{{langcode2|}}}:{{{otherarticle2}}}|{{#language:{{{langcode2|}}}|en}}]]|{{#if:{{Wikidata sitelink|lang={{{langcode2}}}}}|[[:{{{langcode2}}}:{{Wikidata sitelink|lang={{{langcode2}}}}}|{{#language:{{{langcode2|}}}|en}}]]|{{#language:{{{langcode2|}}}|en}}}}}}'''.<!-- One language -->|This {{#ifeq:yes|{{yesno|def=|{{{section|}}}}}|section|article}} '''may be expanded with text translated from {{#if:{{{langcode|}}}|the {{#if:{{{otherarticle|}}}|[[:{{{langcode|}}}:{{{otherarticle}}}|corresponding article]]|{{#if:{{Wikidata sitelink|lang={{{langcode}}}}}|[[:{{{langcode}}}:{{Wikidata sitelink|lang={{{langcode}}}}}|corresponding article]]|corresponding article}}}} in {{#language:{{{langcode|}}}|en}}|a corresponding article in another language}}'''.}} {{#if:{{{date|}}}| &#32;''<small>({{{date}}})</small>''}} <small>Click [show] for important translation instructions.</small> | 2 = {{#switch: {{{langcode|}}} <!--all languages with machine translate-->|af |am |ar |az |be |be-tarask |bg |bn |bs |ca |ceb |co |cs |cy |da |de |el |en |eo |es |et |eu |fa |fi |fr |fy |ga |gd |gl |gu |ha |haw |he |hi |hr |ht |hu |hy |id |ig |is |it |ja |jv |ka |kk |km |kn |ko |ku |ky |la |lb |lo |lt |lv |mg |mi |mk |ml |mn |mr |ms |mt |my |ne |nl |nn |no |ny |pa |pl |ps |pt |ro |ru |sd |sh |si |sk |sl |sm |sn |so |sq |sr |st |su |sv |sw |ta |te |tg |th |tl |tr |uk |ur |uz |vi |xh |yi |yo |zh |zu = * {{#if:{{{otherarticle|}}}|[https://translate.google.com/translate?&u=https%3A%2F%2F{{{langcode|}}}.wikipedia.org%2Fwiki%2F{{urlencode:{{{otherarticle}}}}}&sl={{{googlelangcode|{{{langcode|}}}}}}&tl=en&prev=_t&hl=en View] a machine-translated version of the {{#language:{{{langcode|}}}|en}} article.|}} * Machine translation like [https://deepl.com DeepL] or [https://translate.google.com/ Google Translate] is a useful starting point for translations, but translators must revise errors as necessary and confirm that the translation is accurate, rather than simply copy-pasting machine-translated text into the English Wikipedia. |#default = }} * Do not translate text that appears unreliable or low-quality. If possible, verify the text with references provided in the foreign-language article. * You '''must''' provide [[Wikipedia:Copying within Wikipedia|copyright attribution]] in the [[Help:Edit summary|edit summary]] accompanying your translation by providing an [[Help:Interlanguage links|interlanguage link]] to the source of your translation. A model attribution edit summary {{#if: {{Mw lang|fn=is_code|{{{langcode}}}}} | <code>Content in this edit is translated from the existing {{#language:{{{langcode|}}}|en}} Wikipedia article at <nowiki>[[:</nowiki>{{{langcode}}}<nowiki>:</nowiki>{{{otherarticle|Exact name of German article}}}<nowiki>]]</nowiki>; see its history for attribution.</code> | (using German): <code>Content in this edit is translated from the existing German Wikipedia article at <nowiki>[[:de:Exact name of German article]]</nowiki>; see its history for attribution.</code> }} * You should also add the template {{#if:{{{otherarticle|}}}|<code><nowiki>{{Translated|</nowiki>{{{langcode|}}}<nowiki>|</nowiki>{{{otherarticle}}}<nowiki>}}</nowiki></code>|{{tl|Translated page}}}} to the [[{{TALKPAGENAME}}|talk page]]. * For more guidance, see [[Wikipedia:Translation]]. | headerstyle = padding-right: 3em; font-weight: normal; text-align: left }} |demospace={{{demospace|}}} }}{{DMCA|Articles to be expanded|from|{{{date|}}}|All articles to be expanded}}<includeonly>{{#ifeq:{{NAMESPACE}}|Template | {{Sandbox other||[[Category:Expand by language Wikipedia templates|{{#language:{{{langcode|}}}|en}}]]}}{{#if:{{{nodoc|}}}| | {{documentation}} }} | {{{category|{{#ifeq:{{{fa}}}|yes|<!-- Featured articles -->{{Main other|[[Category:Featured articles needing translation from {{#language:{{{langcode|}}}|en}} Wikipedia]]{{#if:{{{langcode2|}}}|[[Category:Featured articles needing translation from {{#language:{{{langcode2|}}}|en}} Wikipedia]]}}{{#if:{{{langcode3|}}}|[[Category:Featured articles needing translation from {{#language:{{{langcode3|}}}|en}} Wikipedia]]}} }} }}<!--Topic -->{{#if:{{{topic|}}}|{{Main other|[[Category:{{{topic|}}} articles needing translation from {{#language:{{{langcode|}}}|en}} Wikipedia]]{{#if:{{{langcode2|}}}|[[Category:{{{topic|}}} articles needing translation from {{#language:{{{langcode2|}}}|en}} Wikipedia]]}}{{#if:{{{langcode3|}}}|[[Category:{{{topic|}}} articles needing translation from {{#language:{{{langcode3|}}}|en}} Wikipedia]]}}}}|<!--No topic -->{{Main other|{{#ifexist:Category:Articles needing translation from {{#language:{{{langcode|}}}|en}} Wikipedia|[[Category:Articles needing translation from {{#language:{{{langcode|}}}|en}} Wikipedia]]|[[Category:Articles needing translation from foreign-language Wikipedias]]}}}}{{#if:{{{langcode2|}}}|{{#ifexist:Category:Articles needing translation from {{#language:{{{langcode2|}}}|en}} Wikipedia|[[Category:Articles needing translation from {{#language:{{{langcode2|}}}|en}} Wikipedia]]|[[Category:Articles needing translation from foreign-language Wikipedias]]}} }}{{#if:{{{langcode3|}}}{{#ifexist:Category:Articles needing translation from {{#language:{{{langcode3|}}}|en}} Wikipedia|[[Category:Articles needing translation from {{#language:{{{langcode3|}}}|en}} Wikipedia]]|[[Category:Articles needing translation from foreign-language Wikipedias]]}} }} }} }}} }}{{Main other|{{#if:{{{otherarticle|}}}|<!-- a target article has been set we need do nothing -->|{{#if:{{Wikidata sitelink|lang={{{langcode}}}}}||{{#ifeq:{{{no interwiki}}}|yes|[[Category:pages with no translate target and no interwiki]]|[[Category:pages with no translate target]]}}}}}}}}</includeonly><!--{{Expand language}} end--> }}<noinclude> {{Documentation}} </noinclude> ljsgz6hy1cxma52zw2f9hpnujpcu0le Template:Expand section 10 1094 2420 2419 2020-09-29T19:17:46Z Chrisb 1 1 revision imported 2419 wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B= <!--{{Expand section}} begin-->{{Ambox | name = Expand section | type = content | small = {{{small|left}}} | image = [[File:Wiki letter w cropped.svg|{{#ifeq:{{{small|}}}|no|44px|20px}}|alt=&#91;icon&#93;]] | issue = This section '''needs expansion'''{{#if:{{{with|{{{for|{{{1|}}}}}}}}} | &#32;with: {{{with|{{{for|{{{1}}}}}}}}}}}{{#ifeq:{{{punctuation|{{{period|}}}}}}|no||.}} <small>You can help by [{{fullurl:{{FULLPAGENAME}}|action=edit&section={{{section|}}}}} adding to it].</small> | talk = {{{talk|{{{discuss|{{{talksection|}}}}}}}}} | all = All articles to be expanded | cat = Articles to be expanded | date = {{{date|}}} }}<!--{{Expand section}} end--> }}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> mtgickm0iqn9cvtlkr3hkm6ds7bxe9a Template:Expert needed 10 1208 2648 2647 2020-09-29T19:18:03Z Chrisb 1 1 revision imported 2647 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||Expert needed|date=__DATE__|$B= {{Ambox | name = Expert needed | subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | sect = {{{2|}}} | issue= '''needs attention from an expert {{#if:{{{1|}}} |in {{{1}}}{{#if:{{{ex2|}}} |{{#if:{{{ex3|}}} | , {{{ex2}}}{{#if:{{{ex4|}}} | , {{{ex3}}}{{#if:{{{ex5|}}} | , {{{ex4}}} or {{{ex5}}} | &nbsp;or {{{ex4}}}}} | &nbsp;or {{{ex3}}}}} | &nbsp;or {{{ex2}}}}} |}} |on the subject}}'''. {{#if:{{{reason|}}} |The specific problem is: '''{{{reason}}}.''' }} | fix = {{#if:{{{talk|}}} |See the [[{{TALKPAGENAME}}&#x23;{{{talk}}}|talk page]] for details. |{{#if:{{{reason|}}}| |Please add a ''reason'' or a ''talk'' parameter to this template to explain the issue with the {{{2|article}}}.<includeonly>{{#ifeq:{{lc:{{{nocat|}}} }}|true||[[Category:Articles needing expert attention with no reason or talk parameter]]}}</includeonly> }} }} {{#if: {{{1|}}} |[[Wikipedia:WikiProject {{ucfirst:{{{1}}}}}|WikiProject {{ucfirst:{{{1}}}}}]]{{#if:{{{ex2|}}} |{{#if:{{{ex3|}}} |, [[Wikipedia:WikiProject {{ucfirst:{{{ex2}}}}}|WikiProject {{ucfirst:{{{ex2}}}}}]]{{#if:{{{ex4|}}} |, [[Wikipedia:WikiProject {{ucfirst:{{{ex3}}}}}|WikiProject {{ucfirst:{{{ex3}}}}}]]{{#if:{{{ex5|}}} |, [[Wikipedia:WikiProject {{ucfirst:{{{ex4}}}}}|WikiProject {{ucfirst:{{{ex4}}}}}]] or [[Wikipedia:WikiProject {{ucfirst:{{{ex5}}}}}|WikiProject {{ucfirst:{{{ex5}}}}}]] |&nbsp;or [[Wikipedia:WikiProject {{ucfirst:{{{ex4}}}}}|WikiProject {{ucfirst:{{{ex4}}}}}]]}} |&nbsp;or [[Wikipedia:WikiProject {{ucfirst:{{{ex3}}}}}|WikiProject {{ucfirst:{{{ex3}}}}}]]}} |&nbsp;or [[Wikipedia:WikiProject {{ucfirst:{{{ex2}}}}}|WikiProject {{ucfirst:{{{ex2}}}}}]]}} |}} may be able to help recruit an expert. |<br /><small>''When placing this tag, consider [[:Template:Expert needed#Parameters|associating this request]] with a [[WP:WikiProject|WikiProject]].''</small><includeonly>[[Category:Articles needing unspecified expert attention]]</includeonly> }} | date = {{{date|<noinclude>{{CURRENTMONTHNAME}} {{CURRENTYEAR}}</noinclude>}}} | cat = Articles needing expert attention | all = All articles needing expert attention }}<!-- Additional categories -->{{category handler |nocat={{{nocat|<noinclude>true</noinclude>}}} |main={{Expert needed/catcheck|{{{1|}}}}}{{Expert needed/catcheck|{{{ex2|}}}}}{{Expert needed/catcheck|{{{ex3|}}}}}{{Expert needed/catcheck|{{{ex4|}}}}}{{Expert needed/catcheck|{{{ex5|}}}}} }} }}<noinclude> {{Documentation}}<!-- Add category links to the /doc subpage --> </noinclude> esfuyyznuiihmagdrvlencruhk2ap2d Template:External links 10 1216 2664 2663 2020-09-29T19:18:04Z Chrisb 1 1 revision imported 2663 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{External links}} begin-->{{Ambox | name = External links | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | class = ambox-external_links | issue = This {{{1|article}}}'s '''use of [[Wikipedia:External links|external links]] may not follow Wikipedia's policies or guidelines'''. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by removing [[Wikipedia:What Wikipedia is not#Wikipedia is not a mirror or a repository of links, images, or media files|excessive]] or [[Wikipedia:External links|inappropriate]] external links, and converting useful links where appropriate into [[Wikipedia:Citing sources|footnote references]]. | removalnotice = yes | date = {{{date|}}} | cat = Wikipedia external links cleanup | cat2 = Wikipedia spam cleanup }}<!--{{External links}} end--> }}<noinclude> {{Documentation}} </noinclude> oswxw585s6irmfqbnk1ad7r07yrmnr7 Template:FULLROOTPAGENAME 10 1611 4870 4869 2020-10-11T05:39:03Z Chrisb 1 1 revision imported 4869 wikitext text/x-wiki {{ {{{|safesubst:}}}#if: {{ {{{|safesubst:}}}Ns has subpages | {{ {{{|safesubst:}}}#if:{{{1|}}}|{{ {{{|safesubst:}}}NAMESPACE:{{{1}}}}}|{{ {{{|safesubst:}}}NAMESPACE}}}} }} | {{ {{{|safesubst:}}}#titleparts:{{ {{{|safesubst:}}}#if:{{{1|}}}|{{{1}}}|{{ {{{|safesubst:}}}FULLPAGENAME}}}}|1}} | {{ {{{|safesubst:}}}#if:{{{1|}}}|{{{1}}}|{{ {{{|safesubst:}}}FULLPAGENAME}}}} }}<noinclude> {{documentation}} </noinclude> t4jn967jlk6ph7qu71w2b8f5083yjrl Template:Failure 10 1524 4696 4695 2020-10-11T05:35:19Z Chrisb 1 1 revision imported 4695 wikitext text/x-wiki <noinclude> {| class="wikitable" |</noinclude>style="background: #ffbbbb; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-failure" | {{{1|Failure}}}<noinclude> |} {{documentation|Template:Table cell templates/doc}} </noinclude> f2jdefnlea6j0wlemidra76kc6vp8ye Template:Fake heading 10 1612 4872 4871 2020-10-11T05:39:03Z Chrisb 1 1 revision imported 4871 wikitext text/x-wiki {{main other |1={{error|Per [[WP:PSEUDOHEADING]] fake headings should not be used in articles.}}[[Category:Pages with templates in the wrong namespace]] |2=<div style="color: #000000; background: none; overflow: hidden; page-break-after: avoid; {{#switch: {{{level|{{{sub|}}}}}} | 1 = font-size: 1.8em; font-family: Georgia,Times,serif; margin-top: 1em; margin-bottom: 0.25em; line-height: 1.3; padding: 0; border-bottom: 1px solid #AAAAAA; | 2 | #default = font-size: 1.5em; font-family: Georgia,Times,serif; margin-top: 1em; margin-bottom: 0.25em; line-height: 1.3; padding: 0; border-bottom: 1px solid #AAAAAA; | 3 = font-size: 1.17em; font-weight: bold; margin-top: 0.3em; margin-bottom: 0; line-height: 1.6; padding-top: 0.5em; padding-bottom: 0; | 4 = font-size: 100%; font-weight: bold; margin-top: 0.3em; margin-bottom: 0; line-height: 1.6; padding-top: 0.5em; padding-bottom: 0; | 5 = font-size: 100%; font-weight: bold; margin-top: 0.3em; margin-bottom: 0; line-height: 1.6; padding-top: 0.5em; padding-bottom: 0; | 6 = font-size: 100%; font-weight: bold; margin-top: 0.3em; margin-bottom: 0; line-height: 1.6; padding-top: 0.5em; padding-bottom: 0; }}">{{{1|Section}}}</div>}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 9omj4duudfxptan2ocabdv8801hlacq Template:False version 10 1283 2798 2797 2020-09-29T19:18:13Z Chrisb 1 1 revision imported 2797 wikitext text/x-wiki {{Template for discussion/dated|action=|page=False version|link=Wikipedia:Templates for discussion/Log/2020 September 27#Template:False version|help=off|bigbox={{#invoke:Noinclude|noinclude|text=yes}}}} {{Ambox | name = False version | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = content | style = {{{style|}}} | image = | imageright = [[File:Echo chat icon.svg|40px|link=]] | issue = '''An outdated or falsified version of this {{{what|article}}} has been spreading on social media'''. | talk = {{{talk|}}} | fix = Please verify that any screenshots you may have seen are consistent with the actual content on this page. | removalnotice = | date = {{{date|}}} | cat = | all = }}<noinclude> {{Documentation}} </noinclude> b7ikea53dwdeexmjrwnz8uqxrfmk4x9 Template:Famous 10 1240 2712 2711 2020-09-29T19:18:07Z Chrisb 1 1 revision imported 2711 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= <!--{{Famous}} begin-->{{Ambox | name = {{{name|Famous}}} | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = content | class = ambox-famous | sect = list | issue = of "famous" or "notable" {{{category|}}} persons '''has no clear [[WP:V|inclusion]] or [[WP:V|exclusion criteria]]'''. Please help to define clear inclusion criteria and edit the list to contain only subjects that fit those criteria. | talk = {{{talk|}}} | removalnotice = yes | date = {{{date|}}} | cat = Unverifiable lists of {{{category|}}} persons }}<!--{{Famous}} end--> }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> oj4z3cdu3t4bbxmthrzsor3jb5cckza Template:Fanpov 10 1149 2530 2529 2020-09-29T19:17:54Z Chrisb 1 1 revision imported 2529 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Fanpov}} begin-->{{Ambox | name = Fanpov | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | class = ambox-fanpov | issue = This {{{1|article}}} '''may be written from a [[Wikipedia:Fancruft|fan's point of view]], rather than a [[Wikipedia:Neutral point of view|neutral point of view]]'''. | fix = Please [[Wikipedia:Cleanup|clean it up]] to conform to a [[:Category:Wikipedia style guidelines|higher standard]] of quality, and to make it neutral in tone. | removalnotice = yes | date = {{{date|}}} | cat = Articles with a promotional tone | all = All articles with a promotional tone }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Fanpov}} end--> }}<noinclude> {{Documentation}} </noinclude> rk4cdnr0i5wbcsf189cbiy4b6jxb97f Template:Fiction 10 927 2086 2085 2020-09-29T19:17:23Z Chrisb 1 1 revision imported 2085 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = Fiction | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | class = ambox-fiction | issue = This {{{1|article or section}}} '''may fail to make a clear distinction between fact and [[Wikipedia:Fiction|fiction]]'''. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] so that it meets Wikipedia's [[Wikipedia:Manual of Style/Writing about fiction|fiction guidelines]] and [[:Category:Wikipedia style guidelines|quality standards]]. | removalnotice = yes | cat = Articles that need to differentiate between fact and fiction | all = All articles that need to differentiate between fact and fiction | date = {{{date|}}} }} }}<noinclude> {{Documentation}} </noinclude> o98pev513x7w77gr5ygvzu104aj3b50 Template:Fiction trivia 10 963 2158 2157 2020-09-29T19:17:28Z Chrisb 1 1 revision imported 2157 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = Fiction trivia | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | small = {{{small|}}} | type = content | sect = {{{1|}}} | issue = '''may contain [[WP:IINFO|minor, trivial or unrelated fictional references]]'''. | talk = {{{talk|}}} | fix = [[WP:TRIVIA|Trivia]] or references unimportant to the overall [[Plot (narrative)|plot]] of a work of fiction should be edited to explain their importance or deleted. | date = {{{date|}}} | cat = Articles with fictioncruft }} }}<noinclude> {{Documentation}} </noinclude> bmcpdmx7xgo48xwn40h1ahxv7r1t5op Template:File page NFCC concerns tag 10 1161 2554 2553 2020-09-29T19:17:56Z Chrisb 1 1 revision imported 2553 wikitext text/x-wiki {{ambox | name = File page NFCC concerns tag | type = delete | class = ambox-Copy_edit | image = [[File:Ambox warning pn.svg|40px|alt=|link=]] | text = This file lacks a [[WP:NFUR|non-free use rationale]] for the following articles:<br/> :{{{1|''None given: see [[#File usage|File usage]] below''}}}<br/> Every single use of a non-free file needs a separate non-free use rationale on the file page including the components necessary per [[Wikipedia:Non-free use rationale guideline]]. Please either add a valid rationale for each use if appropriate, remove the file from the article if a valid rationale cannot be created or start a discussion at [[WP:NFCR]] if in doubt. A rationale is required for the file to be in compliance with the [[WP:NFCC|non-free content policy]]. If no valid rationale for each of the above articles has been added within '''7 days''' from the placement of this message, then the file might be removed from the articles where a rationale is lacking.<br/><small>''Note that a rationale might already exist but may not match the article name due to typos or complex page-move operations.'' '''''If possible, you may correct the rationale's article name and safely remove this warning.'''''</small> }}<includeonly>{{#if:{{{2|{{{timestamp|{{{date|}}}}}}}}}|{{file other <!-- Only categorise when on file pages. --> | [[Category:Non-free files lacking a non-free use rationale as of {{#time:F Y|{{{2|{{{timestamp|{{{date|}}}}}}}}}}}|{{PAGENAME}}]] }}}}{{#ifexpr:{{#time:U}}>{{#time:U|{{{2|{{{timestamp|{{{date|30200000000000}}}}}}}}} +7 days}} |{{ambox | name = File page NFCC concerns tag | type = speedy | image = [[File:Deletion icon.svg|40px|alt=|link=]] | text = This message has remained in place for seven days and so the files may be [[Wikipedia:Criteria for speedy deletion#F6|removed without further notice]].}}{{file other | [[Category:Non-free files lacking a non-free use rationale for more than 7 days|{{PAGENAME}}]] }} }}</includeonly>{{file other | [[Category:All non-free files lacking a non-free use rationale|{{PAGENAME}}]] }}<noinclude> {{documentation}} </noinclude> 3ea6hfsrnr1ehcre5e4gyyemjd4t2ul Template:Fix 10 1448 3200 3199 2020-10-11T01:32:03Z Chrisb 1 1 revision imported 3199 wikitext text/x-wiki {{#switch:{{{subst|¬}}} |¬={{category handler |template=[[Category:Templates needing substitution checking]] |nocat={{{nocat|<noinclude>true</noinclude>}}} }} |SUBST=[[Category:Pages with incorrectly substituted templates]] }}{{Category handler |main={{Fix/category |cat-date={{{cat-date|}}} |cat={{{cat|}}} |cat-date2={{{cat-date2|}}} |cat2={{{cat2|}}} |cat-date3={{{cat-date3|}}} |cat3={{{cat3|}}} |date={{{date|}}} }} |template={{#if:{{{name|}}}|{{#ifeq:{{{name}}}|{{ROOTPAGENAME}}||{{#if:{{{date|}}}||[[Category:Templates including undated clean-up tags]]}}}}}} |subpage=no }}{{#if:{{{text|}}} |<sup class="noprint Inline-Template {{{class|}}}" style="white-space:nowrap;">&#91;<i>{{#if:{{{pre-text|}}} |{{{pre-text}}}&#32; }}[[{{{link|Wikipedia:Cleanup}}}|<span title="{{delink|1={{{title|{{{link|Wikipedia:Cleanup}}}}}}{{#if:{{{date|}}}|&#32;({{{date}}})}}}}">{{{text|}}}</span>]]{{#if:{{{post-text|}}} |&#32;{{{post-text}}} }}</i>&#93;</sup>|{{{special|}}} }}<noinclude> {{Documentation}} <!-- Add cats and interwikis to the /doc subpage, not here! --> </noinclude> owg7pdp6e9nqycfh3g7fuee1rm3t159 Template:Fix/category 10 1449 3202 3201 2020-10-11T01:32:03Z Chrisb 1 1 revision imported 3201 wikitext text/x-wiki <noinclude>{{pp-template|small=yes}}</noinclude>{{{cat|[[Category:All pages needing cleanup]]}}}{{#if:{{{cat-date|}}} |[[{{{cat-date}}} {{#if:{{{date|}}} |from {{{date}}} }}]]{{#if:{{{date|}}} |{{#ifexist:{{{cat-date}}} from {{{date}}}| |[[Category:Articles with invalid date parameter in template]] }} }} }}{{#if:{{{cat2|}}}|{{{cat2}}}}}{{#if:{{{cat-date2|}}} |[[{{{cat-date2}}} {{#if:{{{date|}}} |from {{{date}}} }}]]{{#if:{{{date|}}} |{{#ifexist:{{{cat-date2}}} from {{{date}}}| |[[Category:Articles with invalid date parameter in template]] }} }} }}{{#if:{{{cat3|}}}|{{{cat3}}}}}{{#if:{{{cat-date3|}}} |[[{{{cat-date3}}} {{#if:{{{date|}}} |from {{{date}}} }}]]{{#if:{{{date|}}} |{{#ifexist:{{{cat-date3}}} from {{{date}}}| |[[Category:Articles with invalid date parameter in template]] }} }} }} gpikm5p2yggfosi6w5maxtx5my3u9im Template:Fmbox 10 919 2070 2069 2020-09-29T19:17:23Z Chrisb 1 1 revision imported 2069 wikitext text/x-wiki {{#invoke:Message box|fmbox}}<noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> q4qfnrd9je1n71bknyj9gdhs02g2rws Template:For 10 1525 4698 4697 2020-10-11T05:35:19Z Chrisb 1 1 revision imported 4697 wikitext text/x-wiki <includeonly>{{#invoke:For|For}}</includeonly><noinclude> {{Documentation}} </noinclude> 7es2p1mk6qse8zlwn5qqya2ysrq1rcr Template:For2 10 1613 4874 4873 2020-10-11T05:39:03Z Chrisb 1 1 revision imported 4873 wikitext text/x-wiki {{Hatnote|For {{{1}}}, see {{{2}}}{{#if:{{{4|}}}|. For {{{3}}}, see {{{4}}}{{#if:{{{6|}}}|. For {{{5}}}, see {{{6}}}.|.}}{{#if:{{{8|}}}|&nbsp;For {{{7}}}, see {{{8}}}.}}{{#if: {{{9|}}}|&nbsp;For {{{9}}}, see {{{10}}}.}}|{{#if:{{{3|}}}|&nbsp;and {{{3}}}.|.}}}}}}<noinclude>{{Documentation}}</noinclude> bfctflzfy1ei8y5h6039tg3phnliqcu Template:Format 10 1153 2538 2537 2020-09-29T19:17:54Z Chrisb 1 1 revision imported 2537 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Very long}} begin-->{{Ambox | name = {{{name|Format}}} | subst = {{{subst|<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>}}} | type = style | class = ambox-format | issue = This {{#if:{{NAMESPACE}}|page|{{{1|article}}} }}{{#ifeq:{{{1|}}}|section||{{space}}or section}} '''may need to be [[Wikipedia:Manual of Style/Text formatting|formatted]].''' | fix = You can help Wikipedia by '''formatting''' it if you know how. Please also consider [[Wikipedia:Template messages/Cleanup#Structure, formatting and sections|changing this notice to be more specific]]. | date = {{{date|}}} | small = {{{small|}}} | smalltext = This {{#if:{{NAMESPACE}}|page|{{{1|article}}} }}{{#ifeq:{{{1|}}}|section||{{space}}or section}} may need to be [[Wikipedia:Manual of Style/Text formatting|formatted]].<br><small>Please also consider [[Wikipedia:Template messages/Cleanup#Structure, formatting and sections|changing this notice to be more specific]].</small> | cat = Articles needing cleanup | all = All pages needing cleanup }}<!--{{Format}} end--> }}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> f9or46pz0ywxb5a11yxal84rxf1lzwp Template:Format footnotes 10 964 2160 2159 2020-09-29T19:17:28Z Chrisb 1 1 revision imported 2159 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Format footnotes}} begin-->{{Ambox | name = Format footnotes | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | issue = This {{{1|article}}} includes [[WP:CITE#Types of citation|inline citations]], but '''they are not [[Help:Footnotes|properly formatted]].''' | fix = Please [[{{SITENAME}}:WikiProject Fact and Reference Check|improve]] this article by <span class="plainlinks">[{{fullurl:{{SUBJECTPAGENAME}}|&action=edit}} correcting them]</span>. | date = {{{date|}}} | all = Articles needing footnote reformatting | cat = Articles covered by WikiProject Wikify | all2 = All articles covered by WikiProject Wikify | removalnotice = yes }}<!--{{Format footnotes}} end--> }}<noinclude> {{Documentation}} </noinclude> i86fyga81fmp4trzstmpkz38e3bp96a Template:Formula missing descriptions 10 1218 2668 2667 2020-09-29T19:18:04Z Chrisb 1 1 revision imported 2667 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Formula missing descriptions}} begin-->{{Ambox | name = Formula missing descriptions | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | issue = Some or all of the formulas presented in this {{#if:{{{section|}}}|section|article}} have '''missing or incomplete descriptions of their variables, symbols or constants''' which may create ambiguity or prevent full interpretation. | fix = Please assist in recruiting an expert or [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] yourself. See the [[{{TALKPAGENAME}}|talk page]] for details. | date = {{{date|}}} | cat = Articles needing expert attention | cat2 = Wikipedia articles needing factual verification }}<!--{{Formula missing descriptions}} end--> }}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> ocm6gaw8a5a7ue6ckpin25lifosse6s Template:Free 10 1526 4700 4699 2020-10-11T05:35:19Z Chrisb 1 1 revision imported 4699 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #9FF; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="free table-free"|{{{1|Free}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} [[Category:Software table cell templates]] </noinclude> gzmoj3251y0apqmfe58r81s4ygmen41 Template:Fringe theories 10 951 2134 2133 2020-09-29T19:17:27Z Chrisb 1 1 revision imported 2133 wikitext text/x-wiki <noinclude> {{For|the Fringe television show|Template:Fringe (TV series)}} </noinclude>{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = Fringe theories | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = content | class = ambox-fringe-theories | image = [[File:Ambox scales.svg|50px|link=]] | sect = {{{1|}}} | issue = '''may present [[WP:FRINGE|fringe theories]], without giving [[WP:UNDUE|appropriate weight]] to the mainstream view''', and explaining the responses to the fringe theories. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] or discuss the issue on the {{#if:{{{talk|}}}|[[{{TALKPAGENAME}}#{{{talk}}}{{!}}talk page]]|[[{{TALKPAGENAME}}{{!}}talk page]]}}. | removalnotice = yes | date = {{{date|}}} | cat = Articles needing more viewpoints }} }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 8dhee76umpsnl95848045cku5tglt7o Template:Further 10 1450 3204 3203 2020-10-11T01:32:03Z Chrisb 1 1 revision imported 3203 wikitext text/x-wiki <includeonly>{{#invoke:labelled list hatnote|labelledList|Further information{{#if:{{{topic|}}}|&#32;on {{{topic|}}}}}}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> pu1ae8is2dmdurv2yovsfwxjajnhn2s Template:Further reading cleanup 10 965 2162 2161 2020-09-29T19:17:28Z Chrisb 1 1 revision imported 2161 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Further reading cleanup}} begin-->{{Ambox | name = Further reading cleanup | subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | text = This '''[[Wikipedia:Manual_of_Style/Layout#Further_reading|further reading]]''' section may contain inappropriate or excessive suggestions that may not follow Wikipedia's [[Wikipedia:External links|guidelines]]. Please ensure that only a [[Wikipedia:What_Wikipedia_is_not#Wikipedia_is_not_a_directory|reasonable number]] of [[Wikipedia:Neutral point of view|balanced]], [[WP:MEDDATE|topical]], [[Wikipedia:Reliable sources|reliable]], and notable further reading suggestions are given; removing less relevant or redundant publications with the [[WP:WEIGHT|same point of view]] where appropriate. Consider utilising appropriate texts as [[Wikipedia:Inline citation|inline sources]] or creating a [[Wikipedia:WikiProject_Bibliographies#Relevant_guidelines_and_manual_of_style|separate bibliography article]]. | date = {{{date|}}} | cat = Wikipedia spam cleanup | all = Wikipedia further reading cleanup | all2 = {{#if:{{{1|}}}|Further reading cleanup templates with parameter 1}} |removalnotice = yes }}<!--{{Further reading cleanup}} end--> }}<noinclude> {{Documentation}} </noinclude> oxq4qyt1eudwpzl0phm0t6im33djlqt Template:GOCEinuse 10 974 2180 2179 2020-09-29T19:17:30Z Chrisb 1 1 revision imported 2179 wikitext text/x-wiki <!--{{GOCEinuse}} begin-->{{Ambox | name = GOCEinuse | type = notice | class = ambox-GOCEinuse | image = [[File:Ambox clock.svg|55px|alt=|link=]] | text = This '''{{yesno|{{{section}}}|yes=section|no=article|def=article}}''' is currently undergoing a major edit by the '''[[Wikipedia:WikiProject Guild of Copy Editors|Guild of Copy Editors]]'''. As a courtesy, '''please do not edit this page''' while this message is displayed.<br /><span style="font-size: 88%">The copy editor who added this notice is listed in the [{{safesubst:<noinclude />fullurl:{{safesubst:<noinclude />FULLPAGENAMEE}}|action=history}} page history]. {{safesubst:<noinclude />#if:{{{time|}}}|This message was added at {{{time|}}}.|}} This page was last revised at {{#time:H:i, j F Y|{{REVISIONTIMESTAMP}}}} (UTC) ({{time ago|{{REVISIONTIMESTAMP}}}}) by {{User|{{REVISIONUSER}}}} ({{Purge|Click here to refresh this time calculation.}}). {{main other|{{#ifexpr:{{#time:U}}-{{#time:U|{{REVISIONTIMESTAMP}}}}<86400||Please remove {{Tlc|GOCEinuse}} from this page as this page has not been edited for at least 24 hours.<includeonly>[[Category:Pages with a stale GOCEinuse template on them]]</includeonly>}}}} <br/>If you have any questions or concerns, please direct them to the [[Wikipedia talk:WikiProject Guild of Copy Editors|Guild of Copy Editors' talk page]]. Thank you for your patience.</span> | all = Pages actively undergoing a major edit }}<!--{{GOCEinuse}} end--><noinclude> {{Documentation}} </noinclude> eyqgad922cb1anui78l6qiyjzycnj5l Template:GOCEuc 10 975 2182 2181 2020-09-29T19:17:30Z Chrisb 1 1 revision imported 2181 wikitext text/x-wiki <!--{{GOCEinuse}} begin-->{{Ambox | name = GOCEuc | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = notice | image = [[File:Ambox clock.svg|55px|alt=|link=]] | text = This article is in the middle of an expansion or major revamping by the '''[[WP:PACE|Guild of Copy Editors]]'''. {{#ifeq: {{{contest}}} | yes |If you are a fellow copyeditor participating in a Backlog Elimination Drive, please do not copyedit this page. |You are welcome to assist in its construction by editing it as well. }} <br /><span style="font-size: 88%">The copy editor who added this notice is listed in the [{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=history}} page history]. If this page has not been edited for several days, please remove this template. If you have any questions or concerns, please direct them to our [[Wikipedia talk:WikiProject Guild of Copy Editors|talk page]]. Thanks for your patience and cooperation while we improve the quality of Wikipedia.</span> }}<!--{{GOCEinuse}} end--><noinclude> [[Category:WikiProject user templates]] [[Category:WikiProject Guild of Copy Editors templates]] </noinclude> hecp0dcqce4nxhxamwg43tzfckjbryy Template:Game guide 10 970 2172 2171 2020-09-29T19:17:29Z Chrisb 1 1 revision imported 2171 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Game guide}} begin-->{{Ambox | name = Game guide | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | imageright = {{WPVG icon|40px}} | issue = This {{#if:{{{section|}}}|section|{{#ifeq:{{{1|}}}|section|section|article}}}} '''may contain material discouraged by the [[Wikipedia:Manual of Style/Video games|manual of style for video game subjects]]'''. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help] by removing content such as lists of minutiae or a detailed description of how to play a game, and rewriting the article in an [[Wikipedia:Writing better articles#Information style and tone|encyclopedic style]]. {{#if:{{{serious|}}}|To copy to a gaming wiki, replace this template with <tt>{{tl|Copy to gaming wiki}}</tt>.}} | date = {{{date|}}} | cat = Articles needing cleanup | all = All pages needing cleanup | all2 = Video game cleanup }}<!--{{Game guide}} end--> }}<noinclude> {{Documentation}} <!-- PLEASE ADD CATEGORY AND LANGUAGE LINKS TO THE /doc PAGE, ''not'' HERE </noinclude> n7d9v9hzxawjxwe4bsfqnba7e7pyla4 Template:Game trivia 10 1183 2598 2597 2020-09-29T19:17:59Z Chrisb 1 1 revision imported 2597 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Game trivia}} begin-->{{Ambox | name = Game trivia | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | imageright = {{WPVG icon|40px}} | issue = This {{#if:{{{section|}}}|section|article}} '''may contain excessive or off-topic [[Wikipedia:Manual of Style/Video games#Article content|gaming-related detail]]'''. | fix = Please help by removing [[Wikipedia: What Wikipedia is not#Wikipedia is not an indiscriminate collection of information|purely indiscriminate information]], relocating encyclopedic material to more appropriate pages, and adding relevant information written in an [[Wikipedia:Writing better articles#Information style and tone|encyclopedic style]]. | date = {{{date|}}} | cat = Articles needing cleanup | all = All pages needing cleanup | all2 = Video game cleanup }}<!--{{Game trivia}} end--> }}<noinclude> {{Documentation}} <!-- PLEASE ADD CATEGORY AND LANGUAGE LINKS TO THE /doc PAGE, ''not'' HERE </noinclude> n2vkcbgjy13t9xz04iitvl3sm84xqzy Template:Gameplay 10 971 2174 2173 2020-09-29T19:17:29Z Chrisb 1 1 revision imported 2173 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= <!--{{Gameplay}} begin-->{{Ambox | name = Gameplay | subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | issue = The [[gameplay]] summary in this {{{1|article}}} is '''too long or detailed compared to the rest of the article.''' | fix = Please [{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} edit the {{{1|article}}}] to [[Wikipedia:Manual of Style (writing about fiction)|focus on discussing the work]] rather than merely [[Wikipedia:What Wikipedia is not#Wikipedia is not a manual, guidebook, or textbook|detailing the gameplay]]. | cat = Wikipedia articles with plot summary needing attention | all = All Wikipedia articles with plot summary needing attention | date = {{{date|}}} }}<!--{{Gameplay}} end--> }}<noinclude> {{Documentation}} </noinclude> hdxm3pczue2r8rjuy160deh5j06505t Template:Ge'ez script needed 10 1169 2570 2569 2020-09-29T19:17:57Z Chrisb 1 1 revision imported 2569 wikitext text/x-wiki {{Script needed |language = Ge'ez |image = Ge'ez.svg |info = Wikipedia:Manual of Style/Ethiopia-related articles }} ftpjatk3om8qk5tg60mc8txjf4tmgr1 Template:GenderPOV 10 1204 2640 2639 2020-09-29T19:18:02Z Chrisb 1 1 revision imported 2639 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{GenderPOV}} begin-->{{Ambox | name = GenderPOV | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = content | class = ambox-POV | style = {{{style|}}} | image = [[File:Ambox scales.svg|50px|link=]] | issue = The '''[[Wikipedia:Neutral point of view|neutrality]] of this gender-related {{{what|article}}} is [[Wikipedia:NPOV dispute|questioned]] because it may show [[Wikipedia:WikiProject Countering systemic bias#Selection based on gender bias|systemic bias]]'''. | fix = Please see the discussion on the [[{{TALKPAGENAME}}#{{{1|}}}|talk page]]. Please do not remove this message until the issue is resolved. | date = {{{date|}}} | removalnotice = yes | cat = NPOV disputes | all = All NPOV disputes }}<!--{{GenderPOV}} end--> }}<noinclude> {{Documentation}} </noinclude> cgykue9c6r22nhrvdecxiw62w51tct4 Template:Gender unclear 10 1175 2582 2581 2020-09-29T19:17:58Z Chrisb 1 1 revision imported 2581 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{ambox | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style<!-- | class = ambox-Gender --> | issue = The '''gender of this {{#if:{{{1|}}}|{{{1}}}|article}}'s subject is not apparent'''. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve the {{#if:{{{1|}}}|{{{1}}}|article}}] by stating their gender, or by using a gender-specific pronoun such as "he", "she", "his", "her", etc. {{#if: {{wikidata|label|raw}} | You may also wish to add the gender to the [[d:Special:EntityPage/{{wikidata|label|raw}}|corresponding Wikidata entry]]. }} | cat = Wikipedia articles with unclear gender | date = {{{date|}}} | all = All Wikipedia articles with unclear gender | name = Gender unclear }} }}<noinclude> <!-- Add categories to the /doc subpage, not here! --> {{documentation}} </noinclude> b5x25cerluryvasnc6ws3qf3hk5kk5p Template:Generalize 10 972 2176 2175 2020-09-29T19:17:29Z Chrisb 1 1 revision imported 2175 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Generalize}} begin-->{{Ambox | name = Generalize | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | small = {{{small|}}} | type = content | issue = This {{{1|article}}} '''only describes one highly specialized aspect of its associated subject'''. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by adding more general information. {{#ifeq:{{SUBJECTSPACE}}|{{NAMESPACE}}|The [[{{TALKPAGENAME}}|talk page]] may contain suggestions.}} | date = {{{date|}}} | cat = Wikipedia articles needing context }}<!--{{Generalize}} end--> }}<noinclude> {{Documentation}} </noinclude> c7yp405rwt4resuickgbxr105elpbv1 Template:Geographical imbalance 10 973 2178 2177 2020-09-29T19:17:30Z Chrisb 1 1 revision imported 2177 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Geographical imbalance}} begin-->{{Ambox | name = Geographical imbalance | class = ambox-geographical-imbalance | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | image = [[Image:Ambox globe content.svg|50x40px|link=]] | imageright = [[Image:Ambox scales.svg|50px|link=]] | issue = This {{{2|article}}} '''may not provide [[Wikipedia:WikiProject Countering systemic bias|balanced geographical coverage]] on {{{1|the region in question}}}'''. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] or discuss the issue on the [[{{TALKPAGENAME}}|talk page]]. | cat = Articles with limited geographic scope | date = {{{date|}}} }}<!--{{Geographical imbalance}} end--> }}<noinclude> {{Documentation}} </noinclude> jojtmtdaq7zgvsttrduuv4pxkodcqso Template:Georgian script needed 10 994 2220 2219 2020-09-29T19:17:32Z Chrisb 1 1 revision imported 2219 wikitext text/x-wiki {{Script needed |language = Georgian |image = ღ.png }} 0gtom64j3vy92hso90yqach2gow8jze Template:Globalize 10 1148 2528 2527 2020-09-29T19:17:54Z Chrisb 1 1 revision imported 2527 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!-- {{Globalize}} begin -->{{ambox | name = Globalize | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | class = ambox-globalize | image = [[File:ambox globe content.svg|50x40px|alt=Globe icon.|link=]] | issue = The examples and perspective in this {{{1|article}}} '''{{#if:{{{2|}}}{{{3|}}}{{{4|}}}|deal primarily with {{#if:{{{4|}}}|{{{2name|{{Globalize/name|{{Globalize/name|{{{2}}}}}|displayname}}}}}, {{{3name|{{Globalize/name|{{Globalize/name|{{{3}}}}}|displayname}}}}}, and {{{4name|{{Globalize/name|{{Globalize/name|{{{4}}}}}|displayname}}}}}|{{#if:{{{3|}}}|{{{2name|{{Globalize/name|{{Globalize/name|{{{2}}}}}|displayname}}}}} and {{{3name|{{Globalize/name|{{Globalize/name|{{{3}}}}}|displayname}}}}}|{{{2name|{{Globalize/name|{{Globalize/name|{{{2}}}}}|displayname}}}}}}}}} and do|may}} not represent a [[Wikipedia:WikiProject Countering systemic bias|worldwide view]] of the subject'''. {{#if:{{{reason|}}}|The specific issue is: '''{{{reason}}}'''}} | fix = You may [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{{1|article}}}], discuss the issue on the {{#if:{{{discussion|}}}{{{discuss|}}}{{{talk|}}} |[[{{{discussion|}}}{{{discuss|}}}{{{talk|}}}|talk page]], or {{#ifeq:{{{1|article}}}|article|[[Wikipedia:Article wizard|create a new article]]|create a new {{{1}}}}}, as appropriate |[[{{TALKPAGENAME}}|talk page]], or {{#ifeq:{{{1|article}}}|article|[[Wikipedia:Article wizard|create a new article]]|create a new {{{1}}}}}, as appropriate }}. | removalnotice = yes | date = {{{date|}}} | small = {{{small|}}} | cat = Articles with limited geographic scope | all = {{#if:{{{2|}}}|{{#ifexist:Category:{{Globalize/name|{{{2}}}}}-centric|{{Globalize/name|{{{2}}}}}-centric|Pages in non-existent country centric categories}}}} | all2 = {{#if:{{{3|}}}|{{#ifexist:Category:{{Globalize/name|{{{3}}}}}-centric|{{Globalize/name|{{{3}}}}}-centric|Pages in non-existent country centric categories}}}} | all3 = {{#if:{{{4|}}}|{{#ifexist:Category:{{Globalize/name|{{{4}}}}}-centric|{{Globalize/name|{{{4}}}}}-centric|Pages in non-existent country centric categories}}}} }}<!-- {{Globalize}} end --> }}<noinclude> {{Documentation}} <!-- Add categories and inter-wikis to the /doc subpage, not here! --> </noinclude> 64rs141jcxtzkuy0cmf6fzy18kk5wse Template:Good 10 1527 4702 4701 2020-10-11T05:35:19Z Chrisb 1 1 revision imported 4701 wikitext text/x-wiki <noinclude> {| class="wikitable" |</noinclude>style="background: #bfd; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="yes2 table-yes2"| {{{1|Good}}}<noinclude> |} {{documentation|Template:Table cell templates/doc}} </noinclude> ozn5kq60ba8pfdh06596rcpyqj2uzx3 Template:Greek script needed 10 995 2222 2221 2020-09-29T19:17:32Z Chrisb 1 1 revision imported 2221 wikitext text/x-wiki {{Script needed |language = Greek |image = Omega uc lc.svg }} a0g6ii62w1fy8zm8vb81331nv5zsvo9 Template:Hasty 10 976 2184 2183 2020-09-29T19:17:30Z Chrisb 1 1 revision imported 2183 wikitext text/x-wiki {{{{{|safesubst:}}}#invoke:Unsubst||$B={{Ambox | name = Hasty | type = notice | image = [[Image:Ambox clock.svg|left|50px|alt=|link=]] | text = Because the speedy deletion tag(s) shown below was placed very shortly after this page's creation, at a time when the creator may not have finished the initial entry, and the CSD criteria it was tagged under is not critical (unlike attack pages, copyright violations, obvious tests, vandalism, patent nonsense, etc., all of which should be deleted immediately) the {{#switch: {{{role}}}|admin=''[[WP:ADMIN|administrator]]''|editor=uninvolved ''[[Wikipedia:Wikipedians|editor]]''|''[[WP:ADMIN|administrator]]'' or other uninvolved ''[[Wikipedia:Wikipedians|editor]]''}} who reviewed the speedy deletion tag(s) is asking, by this notice's placement, for a customary [[Wikipedia:Criteria_for_speedy_deletion#cite_note-Hasty-7|10-15 minute courtesy window]] for the original contributor to address any deficiencies. The article should not be deleted before {{#if:{{{1|}}}|{{{1}}} (UTC); current time: {{CURRENTTIME}} (UTC))|that time}}.<br/><small>''This template should only be applied to short articles with insufficient content for assessment purposes – always placed above (and never in place of) an existing speedy deletion tag''</small> }}}}<noinclude> {{Documentation}} </noinclude> egwokm2vevtrygzl8ufji9zos07cijg Template:Hatnote 10 1614 4876 4875 2020-10-11T05:39:03Z Chrisb 1 1 revision imported 4875 wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|hatnote}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 8nnude79i1y2v6yy2z7j285k1k4v8p3 Template:Hatnote templates 10 1478 3260 3259 2020-10-11T01:41:28Z Chrisb 1 1 revision imported 3259 wikitext text/x-wiki {{Navbox | name = Hatnote templates | state = {{{state|<includeonly>autocollapse</includeonly>}}} | bodyclass = hlist | belowclass = hlist | title = [[WP:Hatnote#Hatnote templates|Hatnote templates]] | above = *[[Wikipedia:Hatnote]] *[[Wikipedia:Disambiguation]] *[[Wikipedia:Redirect]] | group1 = Generic | list1 = *{{tl|Hatnote}} *{{tl|Selfref}} (for self-references) | group2 = For and about | list2 = *{{tl|For}} *{{tl|For2}} (for custom text) *{{tl|About}} *Variations: {{tl|Other uses}} *{{tl|Other uses of}} | group3 = Other topics | list3 = *{{tl|Other people}} *{{tl|About other people}} (adds "about" description) *{{tl|Similar names}} *{{tl|Other places}} *{{tl|Other ships}} *{{tl|Other hurricanes}} | group4 = Redirect | list4 = *{{tl|Redirect}} *{{tl|Redirect2}} (for two redirects) *{{tl|Redirect-multi}} (for multiple redirects) *{{tl|Redirect-several}} (for several redirects, without listing each) *{{tl|Redirect-synonym}} *{{tl|Redirect-distinguish}} *{{tl|Technical reasons}} | group5 = Distinguish | list5 = *{{tl|Distinguish}} (supports custom text too) *{{tl|Redirect-distinguish}} *{{tl|Redirect-distinguish2}} (for custom text) *{{tl|Redirect-distinguish6}} *{{tl|About-distinguish}} *{{tl|About-distinguish2}} (for custom text) | group6 = For use in sections | list6 = *{{tl|Main}} *{{tl|Further}} *{{tl|Further2}} (for custom text) *{{tl|See also}} *{{tl|See also if exists}} *{{tl|For outline}} | group7 = Special | list7 = *{{tl|Broader}} *{{tl|See introduction}} *{{tl|See Wiktionary}} *{{tl|Transcluding article}} *{{tl|Transcluded section}} | group8 = Subject specific | list8 = * {{tl|Year dab}} * {{tl|Highway detail hatnote}} * {{tl|For LMST}} * {{tl|WikiIPA}} * {{tl|Other MeSH codes}} | below = *{{Icon|cat}} [[:Category:Hatnote templates]] **[[:Category:Hatnote modules|modules]] **[[:Category:Hatnote templates for names|for [family] names]] **[[:Category:Hatnote templates for lists|for lists]] *[[Template:Category hatnote templates|hatnote templates for category pages]] }}<noinclude> {{Documentation}} </noinclude> o6w460x052zj98f5i9nxv8ajkcyn8sj Template:Hebrew script needed 10 1000 2232 2231 2020-09-29T19:17:32Z Chrisb 1 1 revision imported 2231 wikitext text/x-wiki {{Script needed |language = Hebrew |image = Shalom.svg |category = Articles needing modern Hebrew script or text }} kmary6d832fanv4wfofhcyljqcn5ldy Template:High-risk 10 1296 2824 2823 2020-09-29T19:18:15Z Chrisb 1 1 revision imported 2823 wikitext text/x-wiki #REDIRECT [[Template:High-use]] {{Rcat shell| {{Wikidata redirect}} {{R from merge}} {{R from template shortcut}} }} 5ypw8nzs5x9l9hs9og1m6vi8vbxlq11 Template:High-use 10 873 1978 1977 2020-09-29T19:15:36Z Chrisb 1 1 revision imported 1977 wikitext text/x-wiki {{#invoke:High-use|main|1={{{1|}}}|2={{{2|}}}|all-pages={{{all-pages|}}}|info={{{info|}}}|demo={{{demo|}}}|form={{{form|}}}|expiry={{{expiry|}}}}}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage; interwiki links go to Wikidata, thank you! --> </noinclude> irrlemrylj34lyo95ruko5p2ows0l5r Template:High Quality Article 10 1280 2792 2791 2020-09-29T19:18:13Z Chrisb 1 1 revision imported 2791 wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = {{{name|High Quality Article}}} | small = {{#if:{{{small|}}}|left}} | type = content | class = ambox-Refimprove | image = [[File:Diamond_Document.png|60x120px|]] | issue = The information in this {{#if:{{{1|}}}|{{{1}}}|article}} '''is correct and up to date'''. To suppress vandalism and/or disruptive editing, this page has been [[Wikipedia:Protection policy|protected]] until further notice. Please leave a message on the talk page if you wish to improve this article. | talk = {{{talk|}}} | date = {{{date|}}} | cat = High-quality articles with no reason to be edited | all = All high-quality articles with correct information with no reason to be edited }} }}<noinclude> <!-- Please add categories to the /doc subpage, thanks --> {{Documentation}} </noinclude> 8ccj5lsxz6yfcb8hcmkwjlb2reokjeo Template:Historical congressional article 10 978 2188 2187 2020-09-29T19:17:31Z Chrisb 1 1 revision imported 2187 wikitext text/x-wiki <!--{{Historical congressional article}} begin-->{{Ambox | name = Historical congressional article | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | image = [[File:Seal of the United States Congress.svg|40px]] | text = '''This is a historical article, not necessarily a current listing.'''<br>Therefore, if someone steps down or dies, don't erase them. Write that they stepped down, died, etc. }}<!--{{Historical congressional article}} end--><noinclude> {{documentation}} </noinclude> ojjmuwunxh7ujf9zvpvd7r89udthizy Template:Hlist 10 1451 3206 3205 2020-10-11T01:32:03Z Chrisb 1 1 revision imported 3205 wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:list|horizontal}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> ihcdy525o8nnmq114czc48dpk6pnojd Template:Hoax 10 1273 2778 2777 2020-09-29T19:18:12Z Chrisb 1 1 revision imported 2777 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= <!--{{Hoax}} begin-->{{Ambox | name = Hoax | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = delete | image = [[File:OOjs UI icon helpNotice-ltr-destructive.svg|40px|Suspected hoax]]<!--see talk page--> | class = ambox-hoax | issue = '''The truthfulness of this {{#if:{{{section|}}}|section|article}} has been questioned.''' It is believed that some or all of its content ''may'' constitute a [[WP:Do not create hoaxes|hoax]]. | fix = Please carefully verify any [[WP:Reliable sources|reliable sources]] used to support the claims in the {{{1|article or section}}}, and add reliable sources for any uncited claims. If the claims cannot be reliably sourced, consider {{{2|placing the article at [[WP:AFD|articles for deletion]] and/or }}} removing the section in question. ''For blatant hoaxes, use {{tl|db-hoax}} to identify it for [[WP:CSD#G3|speedy deletion]] instead.'' Further information and discussion may be on the article's [[{{TALKPAGENAME}}|talk page]]. | date = {{{date|}}} | all = Wikipedia suspected hoax articles }}<!--{{Hoax}} end--> }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> ipvvk4yjuploedrmqq477y6w8nr6aur Template:Hook 10 1159 2550 2549 2020-09-29T19:17:55Z Chrisb 1 1 revision imported 2549 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = Hook | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = style | class = ambox-hook | sect = [[Wikipedia:How to write a plot summary|plot summary]] | issue = '''may be [[Narrative hook|a hook]] or written as if for a [[listings magazine]].''' | talk = {{{talk|}}} | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] by ensuring it covers the whole story, however briefly, and in an [[Wikipedia:Encyclopedic style|encyclopedic style]]. | removalnotice = yes | date = {{{date|}}} | cat = Wikipedia articles with plot summary needing attention | all = All Wikipedia articles with plot summary needing attention }} }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> qb8zcaii5muhu0wrqkk3dy470coo7nq Template:Ibid 10 949 2130 2129 2020-09-29T19:17:26Z Chrisb 1 1 revision imported 2129 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = {{{name|Ibid}}} | subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | text = Constructs such as ''[[ibid.]]'', ''[[loc. cit.]]'' and ''[[idem]]'' are '''discouraged by [[WP:IBID|Wikipedia's style guide]] for footnotes''', as they are easily broken. Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by replacing them with [[Wikipedia:Footnotes#Naming a ref tag so it can be used more than once|named references]] (''[[Template:Refref/core|quick guide]]''), or an abbreviated title. | removalnotice = yes | cat = Articles with ibid | date = {{{date|}}} }} }}<noinclude> <!-- Add categories and interwikis to the /doc subpage, not here! --> {{documentation}} </noinclude> 9zkyxwy8g7k6wnrkjqckygs9eacgqo9 Template:Icon 10 1452 3208 3207 2020-10-11T01:32:04Z Chrisb 1 1 revision imported 3207 wikitext text/x-wiki {{#invoke:Icon|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> m4ab9noabl8v4ki5cx6t5ksjcjh5u8o Template:ImageAnnotation 10 1768 5250 5248 2020-11-22T00:21:05Z Chrisb 1 5250 wikitext text/x-wiki <noinclude> This is the "ImageAnnotation" template. It should be called in the following format: <pre> {{ImageAnnotation |AnnotationOf= |AnnotationComment= |LastModificationDate= |LastModificationUser= |AnnotationMetadata= }} </pre> Edit the page to see the template text. </noinclude><includeonly>{| class="wikitable" ! Annotation of | [[Annotation of::{{{AnnotationOf|}}}]] |- ! Annotation Comment | [[AnnotationComment::{{{AnnotationComment|}}}]] |- ! Last Modification Date | [[LastModificationDate::{{{LastModificationDate|}}}]] |- ! Last Modification User | [[LastModificationUser::{{{LastModificationUser|}}}]] |- ! Annotation Metadata | [[AnnotationMetadata::{{{AnnotationMetadata|}}}]] |} [[Category:ImageAnnotation]] </includeonly> 16dvimlz40mhg0p6vxztf6104dyqclu Template:Image captions for cleanup 10 1231 2694 2693 2020-09-29T19:18:06Z Chrisb 1 1 revision imported 2693 wikitext text/x-wiki <!-- {{{|safesubst:}}} begin -->{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Image captions for cleanup}} begin-->{{Ambox | name= Image captions for cleanup<!-- --> | type= style<!-- --> | subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly><!-- --> | image= {{#ifeq:{{{shrink|}}}|file||[[Image:Camera-photo.svg|none|alt=Small camera icon|{{#ifeq:{{{link|}}}|y|link=https://en.wikipedia.org/wiki/File:Camera-photo.svg|{{#ifeq:{{{link|}}}|yes|link=https://en.wikipedia.org/wiki/File:Camera-photo.svg|link={{{link}}} }} }}|{{#ifeq:{{{shrink|}}}||40px|20px}}]]}}<!-- --> | issue= {{#ifeq:{{{shrink|}}}|file|{{#if:{{{clarify|{{{c|{{{cl|}}} }}} }}}|'''This caption''' does not clearly '''[[Wikipedia:Manual of Style/Captions#Clear identification of the subject|identify the subject]]'''.<includeonly>[[Category:Image captions for cleanup/With examples/With unclear subject identification]]</includeonly>|{{#if:{{{succinct|{{{sc|{{{s|}}} }}} }}}|'''This caption''' is not '''[[Wikipedia:Manual of Style/Captions#Succinctness|succinct]]'''.<includeonly>[[Category:Image captions for cleanup/With examples/Not succinct]]</includeonly>|{{#if:{{{relevance|{{{re|{{{r|}}} }}} }}}|'''This caption''' does not establish '''[[Wikipedia:Manual of Style/Captions#Establishing relevance to the article|the image's relevance]]'''.<includeonly>[[Category:Image captions for cleanup/With examples/With no established relevance]]</includeonly>|{{#if:{{{context|{{{ct|{{{con|}}} }}} }}}|'''This caption''' provides insufficient '''[[Wikipedia:Manual of Style/Captions#Providing context for the picture|context]]'''.<includeonly>[[Category:Image captions for cleanup/With examples/With inadequate context]]</includeonly>|{{#if:{{{allure|{{{al|{{{a|}}} }}} }}}|'''This caption''' does not '''[[Wikipedia:Manual of Style/Captions#Drawing the reader into the article|draw readers in]]'''.<includeonly>[[Category:Image captions for cleanup/With examples/With no allure]]</includeonly>|{{#if:{{{wording|{{{wo|{{{w|}}} }}} }}}|'''This caption''' uses '''[[Wikipedia:Manual of Style/Captions#Wording|trivial wording]]'''.<includeonly>[[Category:Image captions for cleanup/With examples/With trivial wording]]</includeonly>|{{#if:{{{format|{{{fm|{{{f|}}} }}} }}}|'''This caption''' is improperly '''[[Wikipedia:Manual of Style/Captions#Formatting and punctuation|formatted]]'''.<includeonly>[[Category:Image captions for cleanup/With examples/With improper formatting and punctuation]]</includeonly>|'''This caption''' requires '''[[Wikipedia:Manual of Style/Captions#Some criteria for a good caption|cleanup]]'''.<includeonly>[[Category:Image captions for cleanup/With examples]]</includeonly>}} }} }} }} }} }} }}|{{#if:{{{onefile|{{{o|{{{of|}}} }}} }}}|<includeonly>[[Category:Image captions for cleanup/With examples]]</includeonly>'''The image caption|{{#if:{{{allfiles|{{{all|{{{af|}}} }}} }}}|<includeonly>[[Category:Image captions for cleanup/With examples]]</includeonly>'''The image captions|Some of '''the image captions}} }}''' in this {{#if:{{{subset|}}}|{{{subset}}}|{{#if:{{{sub|}}}|{{{sub}}}|{{#if:{{{su|}}}|{{{su}}}|{{#ifeq:{{NAMESPACE}}|Wikipedia|{{NAMESPACE}} page|{{#ifeq:{{NAMESPACE}}||article|{{lc:{{NAMESPACE}} }} }} }} }} }} }} '''{{#if:{{{onefile|{{{o|{{{of|}}} }}} }}}|[[Wikipedia:Cleanup|requires cleanup]]|{{#if:{{{1|{{{example|{{{e|{{{es|{{{examples|{{{allfiles|{{{all|{{{af|{{{o|{{{of|}}} }}} }}} }}} }}} }}} }}} }}} }}} }}}|[[Wikipedia:Cleanup|require cleanup]]|[[Wikipedia:Cleanup|may require cleanup]]<includeonly>[[Category:Image captions for cleanup/Without examples]]</includeonly>}} }}''' to comply with '''[[Wikipedia:Manual of Style/Captions#Some criteria for a good caption|Wikipedia guidelines]]'''{{#if:{{{clarify|{{{c|{{{cl|}}} }}} }}}|&nbsp;for '''[[Wikipedia:Manual of Style/Captions#Clear identification of the subject|clearly identifying the image's subject]]'''.{{#if:{{{1|{{{example|{{{e|{{{examples|{{{es|{{{onefile|{{{allfiles|{{{all|{{{af|{{{o|{{{of|}}} }}} }}} }}} }}} }}} }}} }}} }}} }}} }}}|<includeonly>[[Category:Image captions for cleanup/With examples/With unclear subject identification]]</includeonly>|<includeonly>[[Category:Image captions for cleanup/Without examples/With unclear subject identification]]</includeonly>}}|{{#if:{{{succinct|{{{sc|{{{s|}}} }}} }}}|&nbsp;for '''[[Wikipedia:Manual of Style/Captions#Succinctness|succinctness]]'''.{{#if:{{{1|{{{example|{{{e|{{{examples|{{{es|{{{onefile|{{{allfiles|{{{all|{{{af|{{{o|{{{of|}}} }}} }}} }}} }}} }}} }}} }}} }}} }}} }}}|<includeonly>[[Category:Image captions for cleanup/With examples/Not succinct]]</includeonly>|<includeonly>[[Category:Image captions for cleanup/Without examples/Not succinct]]</includeonly>}}|{{#if:{{{relevance|{{{re|{{{r|}}} }}} }}}|&nbsp;for '''[[Wikipedia:Manual of Style/Captions#Establishing relevance to the article|establishing an image's relevance to the article]]'''.{{#if:{{{1|{{{example|{{{e|{{{examples|{{{es|{{{onefile|{{{allfiles|{{{all|{{{af|{{{o|{{{of|}}} }}} }}} }}} }}} }}} }}} }}} }}} }}} }}}|<includeonly>[[Category:Image captions for cleanup/With examples/With no established relevance]]</includeonly>|<includeonly>[[Category:Image captions for cleanup/Without examples/With no established relevance]]</includeonly>}}|{{#if:{{{context|{{{ct|{{{con|}}} }}} }}}|&nbsp;for '''[[Wikipedia:Manual of Style/Captions#Providing context for the picture|providing context for the picture]]'''.{{#if:{{{1|{{{example|{{{e|{{{examples|{{{es|{{{onefile|{{{allfiles|{{{all|{{{af|{{{o|{{{of|}}} }}} }}} }}} }}} }}} }}} }}} }}} }}} }}}|<includeonly>[[Category:Image captions for cleanup/With examples/With inadequate context]]</includeonly>|<includeonly>[[Category:Image captions for cleanup/Without examples/With inadequate context]]</includeonly>}}|{{#if:{{{allure|{{{al|{{{a|}}} }}} }}}|&nbsp;for '''[[Wikipedia:Manual of Style/Captions#Drawing the reader into the article|drawing readers into the article]]'''.{{#if:{{{1|{{{example|{{{e|{{{examples|{{{es|{{{onefile|{{{allfiles|{{{all|{{{af|{{{o|{{{of|}}} }}} }}} }}} }}} }}} }}} }}} }}} }}} }}}|<includeonly>[[Category:Image captions for cleanup/With examples/With no allure]]</includeonly>|<includeonly>[[Category:Image captions for cleanup/Without examples/With no allure]]</includeonly>}}|{{#if:{{{wording|{{{wo|{{{w|}}} }}} }}}|&nbsp;for '''[[Wikipedia:Manual of Style/Captions#Wording|trivial wording]]'''.{{#if:{{{1|{{{example|{{{e|{{{examples|{{{es|{{{onefile|{{{allfiles|{{{all|{{{af|{{{o|{{{of|}}} }}} }}} }}} }}} }}} }}} }}} }}} }}} }}}|<includeonly>[[Category:Image captions for cleanup/With examples/With trivial wording]]</includeonly>|<includeonly>[[Category:Image captions for cleanup/Without examples/With trivial wording]]</includeonly>}}|{{#if:{{{format|{{{fm|{{{f|}}} }}} }}}|&nbsp;for '''[[Wikipedia:Manual of Style/Captions#Formatting and punctuation|formatting and punctuating image captions]]'''.{{#if:{{{1|{{{example|{{{e|{{{examples|{{{es|{{{onefile|{{{allfiles|{{{all|{{{af|{{{o|{{{of|}}} }}} }}} }}} }}} }}} }}} }}} }}} }}} }}}|<includeonly>[[Category:Image captions for cleanup/With examples/With improper formatting and punctuation]]</includeonly>|<includeonly>[[Category:Image captions for cleanup/Without examples/With improper formatting and punctuation]]</includeonly>}}|.}} }} }} }} }} }} }} }}<!-- --> | fix=<span style="font-size:85%;">{{#if:{{{example|}}}|<br />In particular, the caption for '''{{{example}}}''' should be cleaned-up right away.|{{#if:{{{1|}}}|<br />In particular, the caption for '''{{{1|<noinclude>{{{1}}}</noinclude>}}}''' should be cleaned-up right away.|{{#if:{{{e|}}}|<br />In particular, the caption for '''{{{e}}}''' should be cleaned-up right away.|{{#if:{{{examples|}}}|<br />In particular, the captions for '''{{{examples}}}''' should be cleaned-up right away.|{{#if:{{{es|}}}|<br />In particular, the captions for '''{{{es}}}''' should be cleaned-up right away.|<br />}} }} }} }} }} ''See '''Wikipedia's [[Wikipedia:Picture tutorial|picture tutorial]]''' and '''[[:Category:Wikipedia image help|image help pages]]''' – review '''[[Wikipedia:Image use policy|policy on image use]]''' {{#ifexist:{{TALKPAGENAME}}|and check the '''[[{{TALKPAGENAME}}|talk page]]''' – visit the '''[[Wikipedia:Graphics Lab|Graphics Lab]]''' and '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#ifeq:{{NAMESPACE}}|Wikipedia|{{NAMESPACE}} page|{{#ifeq:{{NAMESPACE}}||article|{{lc:{{NAMESPACE}} }} }} }}]''' if you can.|and visit the '''[[Wikipedia:Graphics Lab|Graphics Lab]]''' – And '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#ifeq:{{NAMESPACE}}|Wikipedia|{{NAMESPACE}} page|{{#ifeq:{{NAMESPACE}}||article|{{lc:{{NAMESPACE}} }} }} }}]''' if you can.}}''</span><!-- --> | removalnotice = {{#ifeq:{{{shrink|}}}|file||yes}} | talk = {{{talk|}}} | date = {{{date|}}} |small={{#if:{{{shrink|}}}|{{{small|left}}}|}} |cat=Image captions for cleanup |all=All image captions for cleanup }}<!-- end {{Image captions for cleanup}} --> <!-- {{File other}} begin -->{{file other | <includeonly>[[Category:Image captions for cleanup|{{PAGENAME}}]]</includeonly> }}<!-- end {{File other}}--> }}<!-- end {{{|safesubst:}}} --><noinclude> {{documentation}}<!-- Please add categories and interwikis to the /doc subpage, not here! --> </noinclude> kevbnhvsxosbpp11y30fgaq3r0yi2x1 Template:Imbox 10 916 2064 2063 2020-09-29T19:17:22Z Chrisb 1 1 revision imported 2063 wikitext text/x-wiki {{#invoke:Message box|imbox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 90yqkd9klfkh2s7isb6vikemdvm668g Template:Imbox/doc 10 1323 2878 2877 2020-09-29T19:18:24Z Chrisb 1 1 revision imported 2877 wikitext text/x-wiki {{Documentation subpage}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE --> {{High-use| 850,000+ }} {{Lua|Module:Message box}} {{Mbox templates (small)}} This is the {{tl|Imbox}} (['''I''']mage ['''m''']essage ['''box''']) metatemplate. It is used to build message box templates for file (image) pages, such as {{tl|cleanup-image}} etc. It offers several different colours, uses default images if no image parameter is given and it has some other features. This template works almost exactly like {{tl|Ambox}} and uses the same parameters. <!-- ===We are deploying!=== After long discussion on the [[Template talk:Imbox|talk page]] of this template and at other places we are finally deploying this template. Feel free to convert any message boxes used on file pages to use this meta-template. If you find any tricky cases then list them on the talk page of this template and you'll get help. When this template is used to build image message boxes those boxes should contain explanatory texts just like before. (The same texts as before or new improved texts.) If there are more specific images in the boxes or you know a better image, then use them instead of the default images shown here. --> ===Usage=== Simple usage example: <pre> {{Imbox |text=Some text.}} </pre> {{Imbox |text=Some text.}} Complex example: <pre> {{Imbox | type = style | style = width:400px; | image = [[File:Emblem-question-yellow.svg|40px]] | textstyle = font-style:italic; font-weight:bold; color:red; | text = The message body text. }} </pre> {{Imbox | type = style | style = width:400px; | image = [[File:Emblem-question-yellow.svg|40px]] | textstyle = font-style:italic; font-weight:bold; color:red; | text = The message body text. }} ===Image message box types=== The following examples use different '''type''' parameters but use no image parameters thus they use the default images for each type. {{Imbox | type = speedy | text = type=<u>speedy</u> – Speedy deletion templates such as {{tl|isd}}. }} {{Imbox | type = delete | text = type=<u>delete</u> – Deletion templates such as {{tl|ifd}}. }} {{Imbox | type = content | text = type=<u>content</u> – Major warnings and problems, such as {{tl|non-free reduce}}. }} {{Imbox | type = style | text = type=<u>style</u> – Minor warnings and problems, such as {{tl|cleanup-image}}. }} {{Imbox | type = notice | text = type=<u>notice</u> – Notices and messages of any kind, both permanent and temporary. }} {{Imbox | type = move | text = type=<u>move</u> – Move and rename messages and proposals, such as {{tl|Requested move}}. }} {{Imbox | type = protection | text = type=<u>protection</u> – Protection templates such as {{tl|pp-protected}} when shown on an image page. }} {{Imbox | type = license | text = type=<u>license</u> – License templates such as {{tl|GFDL}}. }} {{Imbox | type = featured | text = type=<u>featured</u> – Featured image templates such as {{tl|FeaturedPicture}}. }} ===Other images=== The default images shown above are mostly for convenience. In many cases it is more appropriate to use more specific images. These examples use the '''image''' parameter to specify an image other than the default images. {{Imbox | type = style | image = [[File:Gnome-dev-camera.svg|42px]] | text = type = style<br/>image = <nowiki>[[File:Gnome-dev-camera.svg|42px]]</nowiki><br/>This image is used for {{tl|cleanup-image}}. }} {{Imbox | type = move | image = [[File:To Commons.svg|52px]] | text = type = move<br/>image = <nowiki>[[File:To Commons.svg|52px]]</nowiki><br/>This image is used for {{tl|copy to Wikimedia Commons}}. }} {{Imbox | type = license | image = [[File:Heckert GNU white.svg|48px]] | text = type = license<br/>image = <nowiki>[[File:Heckert GNU white.svg|48px]]</nowiki><br/>This image is used for the GFDL license templates such as {{tl|GFDL}}. }} ===Special=== Some other parameter combinations. {{Imbox | text = No type and no image given ('''default''') }} {{Imbox | image = none | text = No type and '''image=none''' – No image is used and the '''text''' uses the whole message box area. }} {{Imbox | type = license | image = [[File:Imbox license.svg|40px]]<br/>[[File:Ambox warning yellow.svg|40px]] | imageright = [[File:Shuttle.svg|30px]] | text = type = license<br/>image = <nowiki>[[File:Imbox license.svg|40px]]&lt;br/>[[File:Ambox warning yellow.svg|40px]]</nowiki><br/>imageright = <nowiki>[[File:Shuttle.svg|30px]]</nowiki> }} {{Imbox | type = license | image = [[File:Imbox license.svg|40px]]<br/>[[File:Ambox warning yellow.svg|40px]] | imageright = [[File:Shuttle.svg|30px]] | text = '''This file is in the [[public domain]] because it was created by [[NASA]].'''<br/>Note that use of NASA logos, insignia and emblems are restricted per US law. }} {{Imbox | type = license | image = [[File:Imbox license.svg|40px]] | text = type = license<br/>image = <nowiki>[[File:Imbox license.svg|40px]]</nowiki><br/>below = <nowiki>{{Imbox |type=content |text='''This license tag is deprecated!'''}}</nowiki> | below = {{Imbox |type=content |text='''This license tag is deprecated!'''}} }} ===Parameters=== List of all parameters: <pre> {{Imbox | name = name of the template | type = speedy / delete / content / style / notice / move / protection / license / featured | image = none / [[File:Some image.svg|40px]] | imageright = [[File:Some image.svg|40px]] | style = CSS value | textstyle = CSS value | text = The message body text. | below = More text or another imbox. | plainlinks = no }} </pre> '''name''' :(Optional) Name of the template. This adds a CSS class with name <code>box-''name''</code> to the HTML element, for use by bots or scripts. '''type''' :If no '''type''' parameter is given the template defaults to type '''notice'''. That means it gets a blue border. '''image''' :'''No parameter''' = If no '''image''' parameter is given the template uses a default image. Which default image it uses depends on the '''type''' parameter. :'''An image''' = Should be an image with usual wiki notation. 40px - 50px width are usually about right depending on the image height to width ratio. (But the message box can handle images of any size.) For example: ::<code><nowiki>image = [[File:Gnome-dev-camera.svg|40px]]</nowiki></code> :'''none''' = Means that no image is used. '''imageright''' :'''No parameter''' = If no '''imageright''' parameter is given then no image is shown on the right side. :'''An image''' = Should be an image with usual wiki notation. 40px - 50px width are usually about right depending on the image height to width ratio. (But the message box can handle images of any size.) For example: ::<code><nowiki>imageright = [[File:Nuvola apps bookcase.png|40px]]</nowiki></code> :'''Anything''' = Any other object that you want to show on the right side. '''style''' :An optional [[Cascading Style Sheets|CSS]] value used by the entire message box table. Without quotation marks <code>" "</code>. For example: ::<code>style = margin-bottom: 0.5em;</code> '''textstyle''' :An optional [[Cascading Style Sheets|CSS]] value used by the text cell. For example: ::<code>textstyle = text-align: center;</code> '''text''' :The message body text. '''below''' :A full width area below the images and text area. Can take a text or any kind of object, for instance another imbox: ::<code><nowiki>below = {{Imbox |type=content |text=This license tag is deprecated.}}</nowiki></code> '''plainlinks''' :Defaults to yes. If external link arrows - [[File:External.svg|10px]] - are desired, specify: ::<code><nowiki>plainlinks = no</nowiki></code> ===Technical details=== Namespace "Image:" was renamed to "File:" on 11 December 2008. This template was created long before that, and that is why it is named "imbox" as in "image message box". If you need to use special characters in the text parameter then you need to escape them like this: <pre> {{Imbox | text = <div> Equal sign = and a start and end brace { } work fine as they are. But here is a pipe {{!}} and two end braces &lt;nowiki>}}&lt;/nowiki>. And now a pipe and end braces &lt;nowiki>|}}&lt;/nowiki>. </div> }} </pre> {{Imbox | text = <div> Equal sign = and a start and end brace { } work fine as they are. But here is a pipe {{!}} and two end braces <nowiki>}}</nowiki>. And now a pipe and end braces <nowiki>|}}</nowiki>. </div> }} This template uses the imbox CSS classes in [[MediaWiki:Common.css]] for most of its looks, thus it is fully skinnable. Internally this meta-template uses HTML markup instead of wiki markup for the table code. That is the usual way we make meta-templates since wiki markup has several drawbacks. For instance it makes it harder to use [[m:Help:ParserFunctions|parser functions]] and special characters in parameters. The default images for this meta-template are in png format instead of svg format. The main reason is that some older web browsers have trouble with the transparent png images. For those older browsers these png images have been modified so that the color of their default backgrounds match the background color of the template. The default background that MediaWiki renders for svg images is always white. This creates a white box around the images when displayed in older browsers. For more technical details see the [[Template talk:Imbox|talk page]]. Since this template works almost exactly like the other mboxes their talk pages and related pages might also contain more details, see the "See also" section below. ===See also=== {{Mbox templates see also}} <includeonly>{{Sandbox other| | <!-- CATEGORIES BELOW THIS LINE, PLEASE --> [[Category:Mbox and messagebox templates]] [[Category:File namespace templates|*]] }}</includeonly> 95avn3bln0faup74erj79tg40mdnxom Template:Improve categories 10 979 2190 2189 2020-09-29T19:17:31Z Chrisb 1 1 revision imported 2189 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Improve categories}} begin-->{{Ambox | name = Improve categories | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | class = ambox-cat_improve | image = [[File:Wiki letter w.svg|50x40px]] | issue = This article '''needs additional or more specific [[Wikipedia:Categorization|categories]]'''. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help out] by [[Wikipedia:FAQ/Categorization#How do I add an article to a category?|adding categories]] to it so that it can be listed with similar articles. | date = {{{date|}}} | cat = Articles needing additional categories }}<!--{{Improve categories}} end--> }}<noinclude> {{Documentation}} </noinclude> pxvvtec1128hdc3ces9c9st9sditnkk Template:In-universe 10 982 2196 2195 2020-09-29T19:17:31Z Chrisb 1 1 revision imported 2195 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{In-universe}} begin-->{{Ambox | name = In-universe | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | class = ambox-in-universe | issue = This {{#if:{{{subject<includeonly>|</includeonly>}}}|{{{subject}}}-related|}} {{{1|article}}} '''describes {{{described_object|a work or element of fiction}}} in a primarily [[Wikipedia:Manual of Style/Writing about fiction#The problem with in-universe perspective|in-universe]] style'''. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help rewrite it] to [[Wikipedia:Manual of Style/Writing about fiction|explain the fiction more clearly and provide non-fictional perspective]]. | removalnotice = yes | date = {{{date|}}} | cat = Articles that need to differentiate between fact and fiction | all = All articles that need to differentiate between fact and fiction | all2 = {{#if:{{{category|}}}|{{{category}}} articles that need to differentiate between fact and fiction}} }}<!--{{In-universe}} end--> }}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, please, not here! --> </noinclude> bkbhwx4tvio4n0wsi3miav0tzo3mqrm Template:In popular culture 10 980 2192 2191 2020-09-29T19:17:31Z Chrisb 1 1 revision imported 2191 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = In popular culture | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | small = {{{small|}}} | type = content | sect = {{{1|}}} | issue = '''appears to contain [[Wikipedia:What Wikipedia is not#Wikipedia is not an indiscriminate collection of information|trivial, minor, or unrelated]] references to [[Wikipedia:Manual of Style/Trivia sections#"In popular culture" and "Cultural references" material|popular culture]]'''. | talk = {{{talk|}}} | fix = Please reorganize this content to explain the subject's impact on popular culture, [[Wikipedia:Citing sources|providing citations]] to [[Wikipedia:No original research#Primary, secondary and tertiary sources|reliable, secondary sources]], rather than simply listing appearances. Unsourced material may be challenged and removed. | date = {{{date|}}} | cat = Articles with trivia sections }} }}<noinclude>{{documentation}}</noinclude> 3vucubkw0bels0xt0b85vciz7296m03 Template:In translation 10 981 2194 2193 2020-09-29T19:17:31Z Chrisb 1 1 revision imported 2193 wikitext text/x-wiki <!--{{Intranslation}} begin-->{{Ambox | name = In translation | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = notice | image = [[File:Translation arrow.svg|60px|translation icon]] | text = '''This article is actively undergoing [[Wikipedia:Edit lock|translation from another Wikipedia]] {{{for|for}}} {{{2|}}}{{{1|a while}}}.'''<br /> <small>As a courtesy, please do not edit this article while this message is displayed. The person who added this notice will be listed in the article's [{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=history}} edit history] should you wish to contact them. This page was last edited at {{#time:H:i, j F Y|{{REVISIONTIMESTAMP}}}} (UTC) ({{time ago|{{REVISIONTIMESTAMP}}}})</small> | all = Articles in translation }}<!--{{Intranslation}} end--><noinclude>{{Documentation}}</noinclude> eo00v1i6hrc2jrhrlqt37569fbv4hcv Template:Inadequate lead 10 948 2128 2127 2020-09-29T19:17:26Z Chrisb 1 1 revision imported 2127 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Inadequate lead}} begin-->{{Ambox | subst = <includeonly>{{subst:substcheck}}</includeonly> | name = Inadequate lead | type = style | issue = This article's '''[[Wikipedia:Manual of Style/Lead section|lead section]] may not adequately [[Wikipedia:summary style|summarize]] its contents'''. {{#if:{{{reason|}}}|The reason given is: '''{{{reason}}}'''}} | fix = To comply with Wikipedia's [[Wikipedia:Manual of Style/Lead section#Introductory text|lead section guidelines]], please consider modifying the lead to [[Wikipedia:Manual of Style/Lead section#Provide an accessible overview|provide an accessible overview]] of the article's key points in such a way that it can stand on its own as a concise version of the article. | cat = Wikipedia introduction cleanup | all = All pages needing cleanup | cat2 = Articles covered by WikiProject Wikify | all2 = All articles covered by WikiProject Wikify | date = {{{date|}}} | talk = {{{talk|}}} }}<!--{{Inadequate lead}} begin--> }}<noinclude> <!-- Add categories and interwikis to the /doc subpage, not here! --> {{Documentation}} </noinclude> a1fj60is4uue558hkv6qi7enz17d28d Template:Inappropriate person 10 983 2198 2197 2020-09-29T19:17:31Z Chrisb 1 1 revision imported 2197 wikitext text/x-wiki <noinclude>{{Distinguish|Template:Infobox person}} </noinclude>{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = Inappropriate person | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = style | class = ambox-inappropriate-person | sect = {{{1|}}} | issue = '''uses [[grammatical person|{{#switch: {{lc: {{{2|}}}}} | i | first-person ("i") = first-person ("I") | we | first-person ("we") = first-person ("we") | first-person = first-person ("I" or "we") | you | second-person | second-person ("you") = second-person ("you") | = first-person ("I"; "we") or second-person ("you") | {{{2}}} }}]] {{{3|inappropriately}}}'''. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} rewrite it] to use a more [[WP:TONE|formal, encyclopedic tone]]. | removalnotice = yes | cat = Wikipedia articles needing copy edit | date = {{{date|}}} }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}} }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> lc3st1yzqibrm5iyygaulr7d4ym3ena Template:Inappropriate title 10 984 2200 2199 2020-09-29T19:17:31Z Chrisb 1 1 revision imported 2199 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Inappropriate title}} begin-->{{Ambox | name = Inappropriate title | subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | text = The title of this article '''seems not to accurately describe the article's subject matter'''. {{#if:{{{reason|}}}|{{{reason|}}}}} | fix = Please help to decide an appropriate title on the {{#if:{{{section|}}}|[[{{TALKPAGENAME}}#{{{section}}}|talk page]]|[[{{TALKPAGENAME}}|talk page]]}}. | date = {{{date|}}} | removalnotice = yes | all = Wikipedia title cleanup }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Inappropriate title}} end--> }}<includeonly>{{main other | [[Category:Wikipedia title cleanup (sorted by template)|I{{PAGENAME}}]] | }}</includeonly><noinclude> {{documentation}} </noinclude> o1k1vpos6eq463k0tr0wm63mhcdamko Template:Included 10 1528 4704 4703 2020-10-11T05:35:19Z Chrisb 1 1 revision imported 4703 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #DDFBFF; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="included table-included"|{{{1|Included}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> 320keqw0plxusilaewuywchiyngldxy Template:Incoming links 10 985 2202 2201 2020-09-29T19:17:32Z Chrisb 1 1 revision imported 2201 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = Incoming links | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = style | class = ambox-incoming-links | image = [[File:Disambig.svg|50x40px|link=]] | sect = [[Help:Disambiguation|disambiguation page]] | issue = '''is currently [[Wikipedia:Disambiguation pages with links|linked]] from [{{fullurl:Special:Whatlinkshere/{{FULLPAGENAME}}|namespace=0}} a large number] of articles'''. | fix = Please [[Wikipedia:Piped link|help direct]] these ambiguous links to articles dealing with the specific meaning intended. The [//dplbot.toolforge.org/dab_fix_list.php?title={{FULLPAGENAMEE}} Dab Fix List & Dab Solver] can be used to fix these links. | removalnotice = yes | date = {{{date|}}} | cat = Disambiguation pages with many incoming links }} }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> dz5i794fndt5ionu9l0t6cw4ji7d8lw Template:Incomplete disambiguation 10 946 2124 2123 2020-09-29T19:17:26Z Chrisb 1 1 revision imported 2123 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Incomplete disambiguation}} begin-->{{Ambox | name = Incomplete disambiguation | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | image = [[File:Edit-clear.svg|40x40px|link=|alt=]] | imageright = [[File:Merge-arrow.svg|alt=|link=]] | issue = This page '''appears to be an [[Wikipedia:Disambiguation#Incomplete disambiguation|incomplete disambiguation]].''' | fix = This page may need to be merged into the complete disambiguation page for this subject. Alternatively, this page may be kept as a separate page if it is converted into a list, index, or other non-ambiguous topic. | date = {{{date|}}} | cat = Incomplete disambiguation }}<!--{{Incomplete disambiguation}} end--> }} <noinclude> {{Documentation}} <!--Please add this template's categories to the /doc subpage, not here - thanks!--> </noinclude> d9ccwdxs1r1yw1qqjh6aaaz1z9hf6l8 Template:Incomprehensible 10 1203 2638 2637 2020-09-29T19:18:02Z Chrisb 1 1 revision imported 2637 wikitext text/x-wiki {{{{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B={{Ambox | name = Incomprehensible | small = {{{small|}}} | type = content | image = [[File:Ambox question.svg|link=]] | sect = {{#ifeq:{{yesno|def=|1={{{sect|{{{section|{{{1|}}}}}}}}}}}|yes|section|{{{sect|{{{section|{{{1|}}}}}}}}}}} | issue = '''may be incomprehensible or very hard to understand'''. {{#ifeq:{{yesno|def=no|1={{{machine|no}}}}}|yes|Sometimes this can be due to [[WP:MACHINETRANSLATION|machine translation]].}} {{#if:{{{reason|}}}|In particular, {{{reason}}}.}} | fix = Please help by rewording it if the intended meaning can be determined. The [[{{TALKPAGENAME}}#{{{talk|{{{2|}}}}}}|talk page]] may have details. | removalnotice = yes | date = {{{date|}}} | cat = Wikipedia articles that are incomprehensible | all = All Wikipedia articles that are incomprehensible }} }}<noinclude> {{Documentation}} </noinclude> 409ooo0n5yhv2hw2o9ganwjc0cca4jp Template:Incorrect 10 1529 4706 4705 2020-10-11T05:35:19Z Chrisb 1 1 revision imported 4705 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #F90; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="incorrect"|{{{1|Incorrect}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> 1dtocjms1sk850kgq52jufjfaq8p3fx Template:Indic script needed 10 1171 2574 2573 2020-09-29T19:17:57Z Chrisb 1 1 revision imported 2573 wikitext text/x-wiki <noinclude><!--{{Indic script needed}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{talk other | demospace={{{demospace|}}} | <!-- Don't show on talk pages --> | {{Ambox | name = Indic script needed | subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | image= [[File:JanaSanskritSans ddhrya.svg|40px]] | text = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} add] [[Brahmic family|Indic script]] to this article, where needed. }} }}{{main other | demospace={{{demospace|}}} | <!-- Don't show in main (article) space --> | {{tmbox | type = style | image = [[File:JanaSanskritSans ddhrya.svg|40px]] | text = This article is about a person, place, or concept whose name is originally rendered in one of the multiple '''[[Brahmic family|Indic script]]s'''; however the article does not have that version of its name in the article's lead paragraph. Anyone who is knowledgeable enough with the original language is invited to assist in adding the Indic script.<br /> <small>For more information, see [[Wikipedia:Naming conventions (Indic)|Wikipedia:Manual of Style (Indic)]].</small> }} }}<includeonly><!--[[Category:Articles needing Indic script or text|{{PAGENAME}}]]--></includeonly><!--{{Indic script needed}} end--><noinclude> {{Documentation}} </noinclude> gosnwxzcg6bdg6mbfkzg2sad2mjwj78 Template:Indigenous 10 1272 2776 2775 2020-09-29T19:18:12Z Chrisb 1 1 revision imported 2775 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!-- {{Indigenous}} begin -->{{ambox | name = Indigenous | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | class = ambox-indigenous | image = [[File:ambox globe content.svg|50x40px|alt=Globe icon.|link=]] | issue = The examples and perspective in this {{{1|article}}} or section '''{{#if:{{{2|}}}{{{3|}}}{{{4|}}}|deal primarily with {{#if:{{{4|}}}|{{{2name|{{Indigenous/name|{{Indigenous/name|{{{2}}}}}|displayname}}}}}, {{{3name|{{Indigenous/name|{{Indigenous/name|{{{3}}}}}|displayname}}}}}, and {{{4name|{{Indigenous/name|{{Indigenous/name|{{{4}}}}}|displayname}}}}}|{{#if:{{{3|}}}|{{{2name|{{Indigenous/name|{{Indigenous/name|{{{2}}}}}|displayname}}}}} and {{{3name|{{Indigenous/name|{{Indigenous/name|{{{3}}}}}|displayname}}}}}|{{{2name|{{Indigenous/name|{{Indigenous/name|{{{2}}}}}|displayname}}}}}}}}} and do|may}} not represent an [[Wikipedia:WikiProject Countering systemic bias|indigenous view]] of the subject'''. | fix = You may [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#ifeq:{{{1|}}}|section|section|article}}], discuss the issue on the {{#if:{{{discussion|}}}{{{discuss|}}}{{{talk|}}} |[[{{{discussion|}}}{{{discuss|}}}{{{talk|}}}|talk page]], or [[Wikipedia:Article wizard|create a new article]], as appropriate |[[{{TALKPAGENAME}}|talk page]], or [[Wikipedia:Article wizard|create a new article]], as appropriate }}. | removalnotice = yes | date = {{{date|}}} | small = {{{small|}}} | cat = Articles with limited geographic scope | all = {{#if:{{{2|}}}|{{#ifexist:Category:{{Indigenous/name|{{{2}}}}}-centric|{{Indigenous/name|{{{2}}}}}-centric|Pages in non-existent country centric categories}}}} | all2 = {{#if:{{{3|}}}|{{#ifexist:Category:{{Indigenous/name|{{{3}}}}}-centric|{{Indigenous/name|{{{3}}}}}-centric|Pages in non-existent country centric categories}}}} | all3 = {{#if:{{{4|}}}|{{#ifexist:Category:{{Indigenous/name|{{{4}}}}}-centric|{{Indigenous/name|{{{4}}}}}-centric|Pages in non-existent country centric categories}}}} }}<!-- {{Indigenous}} end --> }}<noinclude> {{Documentation}} <!-- Add categories and inter-wikis to the /doc subpage, not here! --> </noinclude> 3kpptxu3x78axp6ju6esxbi05lw3jkw Template:Infobox 10 1297 2826 2825 2020-09-29T19:18:16Z Chrisb 1 1 revision imported 2825 wikitext text/x-wiki {{#invoke:Infobox|infobox}}<includeonly>{{template other|{{#ifeq:{{PAGENAME}}|Infobox||{{#ifeq:{{str left|{{SUBPAGENAME}}|7}}|Infobox|[[Category:Infobox templates|{{remove first word|{{SUBPAGENAME}}}}]]}}}}|}}</includeonly><noinclude> {{documentation}} <!-- Categories go in the /doc subpage, and interwikis go in Wikidata. --> </noinclude> f4hgwrnr11ahhwyo266vcd10dpi92pe Template:Infobox information appliance 10 1632 4912 4911 2020-10-11T05:50:21Z Chrisb 1 1 revision imported 4911 wikitext text/x-wiki {{Infobox | title = {{{name|<includeonly>{{{Name|{{{title|{{PAGENAMEBASE}} }}} }}}</includeonly> }}} | bodyclass = hproduct vevent | titleclass = fn summary | image = {{#invoke:InfoboxImage|InfoboxImage|image={{{logo|}}}|size={{{logo_size|}}}|upright={{{logo_upright|1}}}|alt={{{logo_alt|}}}}} | caption = {{{logo caption|}}} | image2 = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|{{{Image|{{{photo|{{{Photo|}}} }}} }}} }}}|size={{{image_size|{{{ImageWidth|}}}}}}|sizedefault=300px|upright={{{image_upright|1}}}|alt={{{alt|}}}}} | caption2 = {{{caption|}}} | label1 = {{nowrap|Also known as}} | data1 = {{{aka|}}} | label2 = Developer | data2 = {{{developer|{{{Developer|}}}}}} | label3 = Manufacturer | data3 = {{{manufacturer|}}} | label4 = Product family | data4 = {{{family|}}} | label5 = Type | data5 = {{{type|{{{Type|}}} }}} | label6 = Generation | data6 = {{{generation|}}} | label7 = Release date | data7 = {{{release date|{{{releasedate|{{{first_release_date|{{{Released|{{{Introduced|}}} }}} }}} }}} }}} | label8 = Retail availability | data8 = {{{retail availability|}}} | label9 = Lifespan | data9 = {{{lifespan|}}} | label10 = Introductory price | data10 = {{{price|{{{baseprice|{{{Baseprice|{{{MSRP|}}} }}} }}} }}} | label11 = Discontinued | data11 = {{{discontinuation_date|{{{discontinued|{{{Discontinued|}}} }}} }}} | label12 = Units sold | data12 = {{{units sold|{{{unitssold|}}}}}} | label13 = Units shipped | data13 = {{{units shipped|{{{unitsshipped|}}}}}} | label14 = Media | data14 = {{{media|{{{Media|}}} }}} | label15 = [[Operating system]] | data15 = {{{operatingsystem|{{{os|{{{OS|}}} }}} }}} | label16 = [[System on a chip|System-on-chip]] used | data16 = {{{soc|{{{SOC|{{{system-on-chip|{{{System-on-chip|}}} }}} }}} }}} | label17 = [[Central processing unit|CPU]] | data17 = {{{cpu|{{{CPU|{{{processor|{{{Processor|}}} }}} }}} }}} {{#if:{{{CPUspeed|}}}|@ {{{CPUspeed}}} }} | label18 = Memory | data18 = {{{memory|{{{Memory|{{{RAM|}}} }}} }}} {{#if:{{{RAMtype|}}}|({{{RAMtype}}})}} | label19 = Storage | data19 = {{{storage|}}} | label20 = [[Removable media|Removable storage]] | data20 = {{{memory card|}}} | label21 = Display | data21 = {{{display|{{{Display|}}} }}} | label22 = Graphics | data22 = {{{graphics|{{{Graphics|{{{GPU|}}} }}} }}} | label23 = Sound | data23 = {{{sound|{{{Sound|}}} }}} | label24 = Input | data24 = {{{input|{{{Input|}}} }}} | label25 = Controller input | data25 = {{{controllers|}}} | label26 = Camera | data26 = {{{camera|}}} | label27 = Touchpad | data27 = {{{touchpad|}}} | label28 = Connectivity | data28 = {{{connectivity|{{{Connectivity|}}} }}} | label29 = Power | data29 = {{{power|{{{Power|}}}}}} | label30 = [[Computing platform|Platform]] | data30 = {{{platform|}}} | label31 = Current firmware | data31 = {{{currentfw|}}} | label32 = Online services | data32 = {{{online service|{{{onlineservice|{{{service|}}} }}} }}} | label33 = Dimensions | data33 = {{{dimensions|{{{Casing|}}} }}} | label34 = Mass | data34 = {{{weight|}}} | label35 = [[List of best-selling video games|Best-selling game]] | data35 = {{{top game|{{{topgame|}}}}}} | label36 = [[Backward compatibility|Backward<br/>compatibility]] | data36 = {{{compatibility|}}} | label37 = Predecessor | data37 = {{{predecessor|}}} | label38 = Successor | data38 = {{{successor|}}} | label39 = Related articles | data39 = {{{related|}}} | label40 = Website | data40 = {{{website|{{{Website|}}} }}} }}{{#invoke:Check for unknown parameters|check|ignoreblank=y |unknown={{main other|[[Category:Pages using Infobox information appliance with unknown parameters|_VALUE_{{PAGENAME}}]]}} |preview=Page using [[Template:Infobox information appliance]] with unknown parameter "_VALUE_" | aka | alt | Baseprice | baseprice | camera | caption | Casing | compatibility | Connectivity | connectivity | controllers | CPU | cpu | CPUspeed | currentfw | Developer | developer | dimensions | discontinuation_date | Discontinued | discontinued | Display | display | family | first_release_date | generation | GPU | Graphics | graphics | Image | image | image_size | image_upright | ImageWidth | Input | input | Introduced | retail availability | lifespan | logo | logo caption | logo_alt | logo_size | logo_upright | manufacturer | Media | media | Memory | memory | memory card | MSRP | Name | name | online service | onlineservice | operatingsystem | OS | os | Photo | photo | platform | Power | power | predecessor | price | Processor | processor | RAM | RAMtype | related | release date | Released | releasedate | service | soc | SOC | system-on-chip | System-on-chip | Sound | sound | storage | successor | title | top game | topgame | touchpad | Type | type | units shipped | units sold | unitsshipped | unitssold | Website | website | weight }}<noinclude> {{documentation}} </noinclude> ooj530hyh1d11r3i61c8y999pm66qht Template:Infobox information appliance/doc 10 1662 4972 4971 2020-10-11T05:50:43Z Chrisb 1 1 revision imported 4971 wikitext text/x-wiki {{Documentation subpage}} <!-- Place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> {{Lua|Module:Infobox|Module:InfoboxImage|Module:Check for unknown parameters}} == Usage == {{Parameter names example | name | title | aka | logo | image | caption | developer | manufacturer | family | type | generation | release date | retail availability | lifespan | price | discontinued | units sold | units shipped | media | os | power | soc | cpu | memory | storage | memory card | display | graphics | sound | input | controllers | camera | touchpad | connectivity | currentfw | platform | service | dimensions | weight | topgame | compatibility | predecessor | successor | related | website }} <pre style="overflow: auto;"> {{Infobox information appliance | name = | title = | aka = | logo = | image = | caption = | developer = | manufacturer = | family = | type = | generation = | release date = {{Start date|YYYY|MM|DD}} | retail availability = | lifespan = | price = | discontinued = | units sold = | units shipped = | media = | os = | power = | soc = | cpu = | memory = | storage = | memory card = | display = | graphics = | sound = | input = | controllers = | camera = | touchpad = | connectivity = | currentfw = | platform = | service = | dimensions = | weight = | topgame = | compatibility= | predecessor = | successor = | related = | website = {{URL|example.org}} }} </pre> ==Parameters== {{TemplateData header}} <templatedata> { "params": { "name": { "label": "Name", "type": "string", "required": false, "description": "Name of the appliance. Default it the article name. However it is a required parameter as it does not accept null.", "default": "PAGENAME", "aliases": ["Name", "Title"] }, "logo": { "label": "Logo", "type": "string", "required": false, "description": "File name of the logo to be appeared at the top of the infobox" }, "logo_size": { "label": "Logo size", "type": "string", "required": false, "description": "Size of the logo. Default is 250px. Must not normally be changed.", "default": "250px" }, "logo_upright": { "label": "Logo upright", "type": "string", "required": false, "description": "Size of the logo, scaling per user preferences. Default is 1. Must not normally be changed.", "default": "1" }, "logo_alt": { "label": "Logo alternative text", "type": "string", "required": false, "description": "Alternative text for the logo, used when the web browser cannot display the image or when a visually-impaired person uses a screen reader." }, "logo caption": { "label": "Logo caption", "type": "string", "required": false, "description": "Caption for the logo. Must only be used to provide anything far more important than 'This is the logo of X'. e.g. used for inserting {{ffdc}} or {{deletable image-caption}}." }, "image": { "label": "Image", "type": "string", "required": false, "description": "File name of the image of the appliance to be appeared at the top of the infobox.", "aliases": ["Image", "photo", "Photo"] }, "image_size": { "label": "Image size", "type": "string", "required": false, "description": "Image size. Defaults to 300px. The best practice is to ensure the image is displayed at the default resolution. Hence, use of this parameter is discouraged.", "default": "300px", "aliases": ["ImageWidth"] }, "image_upright": { "label": "Image upright", "type": "string", "required": false, "description": "Size of the logo, scaling per user preferences. Default is 1.", "default": "1" }, "alt": { "label": "Image alternative text", "type": "string", "required": false, "description": "Alternative text for the screenshot (used by the blind and when web browsers cannot or do not load the image)" }, "caption": { "label": "Image caption", "type": "string", "required": false, "description": "Caption for the image of the appliance. " }, "aka": { "label": "Also known as? (\"AKA\")", "type": "string", "required": false, "description": "Device nickname" }, "developer": { "label": "Developer", "type": "string", "required": false, "description": "Name of the developer, if applicable", "aliases": ["Developer"] }, "manufacturer": { "label": "Manufacturer", "type": "string", "required": false, "description": "Name of the manufacturer, if applicable" }, "family": { "label": "Family", "type": "string", "required": false, "description": "Product family" }, "type": { "label": "Type", "type": "string", "required": false, "description": "Type of the device", "aliases": ["Type"] }, "generation": { "label": "Generation", "type": "string", "required": false, "description": "Name of the device generation, if it is part of a line of products developed iteratively" }, "release date": { "label": "Release date", "type": "string", "required": false, "description": "Date introduced", "aliases": ["releasedate", "first_release_date", "Released", "Introduced"] }, "retail availability": { "label": "Retail availability", "type": "string", "required": false, "description": "Average expected retail availability (date first available in retail to date last available in retail (i.e. the date no more units are being sold, which may be years after production stops))" }, "lifespan": { "label": "Lifespan", "type": "string", "required": false, "description": "Average expected lifespan (release date to discontinuation date (i.e. end of production))" }, "baseprice": { "label": "Base price", "type": "string", "required": false, "description": "Base price or MSRP (manufacturer suggested retail price) of the appliance at its initial release. Per [[WP:NOTCATALOGUE]], \"An article should not include product pricing information unless there is an independent source and a justified reason for the mention. Encyclopedic significance may be indicated if mainstream media sources (not just product reviews) provide commentary on these details instead of just passing mention.", "aliases": ["baseprice", "price", "MSRP"] }, "discontinued": { "label": "Discontinuation date", "type": "string", "required": false, "description": "Date of when the appliance was discontinued / pulled from sale.", "aliases": ["discontinued", "discontinuation_date"] }, "units sold": { "label": "Units sold", "type": "string", "required": false, "description": "Number of units sold, including pre-orders", "aliases": ["unitssold"] }, "units shipped": { "label": "Units shipped", "type": "string", "required": false, "description": "Number of units shipped", "aliases": ["unitsshipped"] }, "media": { "label": "Media", "type": "string", "required": false, "description": "Supported media. Where applicable, consider using \"removable storage\" parameter instead.", "aliases": ["Media"] }, "os": { "label": "Operating system", "type": "string", "required": false, "description": "Operating system bundled with the product", "aliases": ["OS", "operatingsystem"] }, "power": { "label": "Power", "type": "string", "required": false, "description": "Power consumption specifications", "aliases": ["Power"] }, "soc": { "label": "System-on-chip used", "type": "string", "required": false, "description": "System-on-chip used by the appliance, if applicable.", "aliases": ["SOC", "system-on-chip", "System-on-chip"] }, "cpu": { "label": "CPU make and model", "type": "string", "required": false, "description": "Central processing unit's brand name and model", "aliases": ["CPU", "Processor", "processor"] }, "CPUspeed": { "label": "CPU clock speed", "type": "string", "required": false, "description": "Central processing unit's clock speed, expressed in hertz" }, "memory": { "label": "Amount of memory installed", "type": "string", "required": false, "description": "Amount of volatile random-access memory installed on the appliance", "aliases": ["Memory", "RAM"] }, "RAMtype": { "label": "Memory type", "type": "string", "required": false, "description": "Make and model of the volatile random-access memory modules used" }, "storage": { "label": "Storage device", "type": "string", "required": false, "description": "Type(s) and specifications of non-volatile internal storage device(s)" }, "memory card": { "label": "Removable storage", "type": "string", "required": false, "description": "Type(s) and specifications of non-volatile removable storage device(s) supported." }, "display": { "label": "Display", "type": "string", "required": false, "description": "Specifications of included or supported display devices; e.g. the resolutions that can be outputted.", "aliases": ["Display"] }, "graphics": { "label": "Graphics", "type": "string", "required": false, "description": "Specifications of the included graphics component, which is responsible for outputting content to display devices", "aliases": ["Graphics", "GPU"] }, "sound": { "label": "Sound", "type": "string", "required": false, "description": "Specifications of the audio subsystem.", "aliases": ["Sound"] }, "input": { "label": "Input", "type": "string", "required": false, "description": "Input devices included with / supported by the appliance. Specialized versions of this parameter include Controllers, Camera, and Touchpad.", "aliases": ["Input"] }, "controllers": { "label": "Controllers", "type": "string", "required": false, "description": "Controller(s) included with / supported by the appliance." }, "camera": { "label": "Camera", "type": "string", "required": false, "description": "Specifications of the camera included with / supported by the appliance." }, "touchpad": { "label": "Touchpad", "type": "string", "required": false, "description": "Specifications of the touchpad included with the appliance; e.g. make, model, the number of buttons, and whether or not it supports multitouch input." }, "connectivity": { "label": "Connectivity", "type": "string", "required": false, "description": "Specifications of any components that support data transfer in and out of the device, including networking subsystems.", "aliases": ["Connectivity"] }, "currentfw": { "label": "Current firmware", "type": "string", "required": false, "description": "The current firmware version of the given appliance." }, "platform": { "label": "Underlying platform", "type": "string", "required": false, "description": "Name of any underlying platforms." }, "online service": { "label": "Online service", "type": "string", "required": false, "description": "Name of any associated online service(s).", "aliases": ["onlineservice", "service"] }, "dimensions": { "label": "Dimensions", "type": "string", "required": false, "description": "The dimensions (width, height, depth) of the appliance. If multiple / newer models of the base appliance are available, please include the dimensions for each.", "aliases": ["Casing"] }, "weight": { "label": "Mass", "type": "string", "required": false, "description": "Mass" }, "top game": { "label": "Best-selling video game", "type": "string", "required": false, "description": "Name of the best selling video game that works on the appliance, if appliable. Please include source and sale stats.", "aliases": ["topgame"] }, "compatibility": { "label": "Compatibility", "type": "string", "required": false, "description": "Details of backward compatibility with the appliance's predecessor(s)." }, "predecessor": { "label": "Predecessor", "type": "string", "required": false, "description": "Name of the appliance's predecessor, if applicable." }, "successor": { "label": "Successor", "type": "string", "required": false, "description": "Name of the appliance's successor, if applicable." }, "related": { "label": "Related", "type": "string", "required": false, "description": "Names of any sibling devices to the appliance." }, "website": { "label": "Website", "type": "string", "required": false, "description": "URL of the official website, in a printer-friendly form. (consider using the {{URL}} template for cleaner URL output)", "aliases": ["Website"] } }, "format": "block" } </templatedata> == Important notes == Under [[WP:NOPRICES]], "product prices should not be quoted in an article unless they can be sourced ''and'' there is a justified reason for their mention". Use of the "price" field should therefore be the exception rather than the norm. In addition to the tracking category below, using this template without including at least one of parameters besides "title", "image", and "caption" will add the page to [[:Category:Articles which use infobox templates with no data rows]]. == Microformats == {{UF-hcal}} {{UF-hprod}} == Tracking category == * {{clc|Pages using Infobox information appliance with unknown parameters}} == See also == * {{tl|Infobox robot}} <includeonly>{{Sandbox other|| <!-- Categories go here and interwikis go in Wikidata. --> [[Category:Technology and applied science infobox templates|Information appliance]] [[Category:Computer hardware infobox templates| ]] [[Category:Templates that add a tracking category]] [[Category:Information appliances|τ]] }}</includeonly> lx3epzb8odd533u48wb8wucwrd7djvy Template:InterTransWiki 10 986 2204 2203 2020-09-29T19:17:32Z Chrisb 1 1 revision imported 2203 wikitext text/x-wiki <!--{{InterTransWiki}} begin-->{{Ambox |name=InterTransWiki |subst=<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> |image=[[Image:Edit-copy purple.svg|40px]] |type=move |text='''This page is a candidate to be [[meta:Help:Transwiki|copied]] to the [[{{{1}}} Wikipedia]]'''. <br /> <small>Before you move this content to the {{{1}}} Wikipedia, verify that it conforms to the {{{1}}} Wikipedia's policies of acceptable content. </small> }}<!--{{InterTransWiki}} end--><noinclude> {{Documentation}} </noinclude> 6h4zzdq62uwhriuviea8x4s38kgfwd9 Template:Interlanguage link info 10 1288 2808 2807 2020-09-29T19:18:14Z Chrisb 1 1 revision imported 2807 wikitext text/x-wiki {{Ambox| | name = Interlanguage link info | small = {{#if:{{{sect|{{{section|{{{1|}}}}}}}}}|{{#if:{{{small|{{{left|}}}}}}|left}} }} | sect = {{#ifeq:{{yesno|def=|1={{{sect|{{{section}}}}}} }}|yes|section|{{{sect|{{{section|{{{1|}}}}}}}}} }} | text = contains numerous links to pages on [[List of Wikipedias#Detailed list|foreign language Wikipedias]]. They are shown as {{color|red|red links}} with the language codes in [{{color|blue|<small>small blue letters</small>}}] in brackets. Click on the language code to see the page in that language. }}<noinclude> {{Documentation}} </noinclude> rh5fth4gehgdopbmbzcy20ps95mytnn Template:Ivory messagebox 10 917 2066 2065 2020-09-29T19:17:22Z Chrisb 1 1 revision imported 2065 wikitext text/x-wiki <table class="messagebox {{{{{|safesubst:}}}#if:{{{plainlinks|}}}|plainlinks}}" style="border: 1px solid {{{border|#AAA}}}; background: {{{bg|ivory}}}; padding: 0.5em; width: 100%;{{{extracss|}}}"> <tr>{{{{{|safesubst:}}}#if:{{{image|{{{2|}}}}}} |<td style="vertical-align:{{{valign|middle}}}; padding-left:{{{p-l|1px}}}; padding-right:{{{p-r|0.5em}}};">{{{{{|safesubst:}}}#invoke:InfoboxImage|InfoboxImage|image={{{image|{{{2}}}}}}|size={{{imagesize|25px}}}|link={{{image link|}}}|alt={{{image alt|}}}}}</td> }}<td>{{{text|{{{1}}}}}}</td></tr> </table><noinclude> {{Documentation}} </noinclude> 50z4340vg32k2old3uik6qb88tifi5y Template:Jagged 85 cleanup 10 966 2164 2163 2020-09-29T19:17:29Z Chrisb 1 1 revision imported 2163 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = Jagged 85 cleanup | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = content | class = ambox-jagged-85-cleanup | sect = {{{1|}}} | issue = '''may misquote or misrepresent many of its sources.''' Please see the [[Wikipedia talk:Requests for comment/Jagged 85/Cleanup|cleanup page]] for more information. | fix = <small>Editors: please remove this warning only after the diffs listed [[Wikipedia talk:Requests for comment/Jagged 85/{{{subpage}}}|here]] have been checked for accuracy.</small> | date = {{{date|}}} | cat = Accuracy disputes | all = All accuracy disputes }} }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 4nkpzlmxa14muxz8k1lwqzt83lal13v Template:Japanese script needed 10 992 2216 2215 2020-09-29T19:17:32Z Chrisb 1 1 revision imported 2215 wikitext text/x-wiki {{script needed |language = Japanese |image = 書.svg |info = MOS:JAPAN |nocat={{{nocat|}}} }} g8dfw0mpjsq1oeip4fgltoahzz21uss Template:Karen script needed 10 1230 2692 2691 2020-09-29T19:18:06Z Chrisb 1 1 revision imported 2691 wikitext text/x-wiki {{Script needed |language = Karen |image = Karen text.svg }} mj78d5faim24ae2zwv6yv076dcxw40y Template:Kayfabe 10 1245 2722 2721 2020-09-29T19:18:08Z Chrisb 1 1 revision imported 2721 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Game guide}} begin-->{{Ambox | name = Kayfabe | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | imageright = [[File:Mascara Blue Demon.svg|40px]] | issue = This {{#if:{{{section|}}}|section|{{#ifeq:{{{1|}}}|section|section|article}}}} '''may contain material discouraged by the [[Wikipedia:WikiProject Professional wrestling/Style guide|manual of style for professional wrestling]]'''. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help] by removing content such as information written in [[Kayfabe]], or an in-universe perspective, and rewrite in an [[Wikipedia:Writing better articles#Information style and tone|encyclopedic style]]. {{#if:{{{serious|}}}|To copy to a Pro Wrestling wiki, replace this template with <code>{{tl|Copy to Pro Wrestling wiki}}</code>.}} | date = {{{date|}}} | cat = Articles needing cleanup | all = All pages needing cleanup | all2 = Pro Wrestling articles written in Kayfabe }}<!--{{Game guide}} end--> }}<noinclude> {{Documentation}} <!-- PLEASE ADD CATEGORY AND LANGUAGE LINKS TO THE /doc PAGE, ''not'' HERE </noinclude> nv5gx9v7kd799093kk15u95zyvcq35a Template:Khmer script needed 10 1001 2234 2233 2020-09-29T19:17:33Z Chrisb 1 1 revision imported 2233 wikitext text/x-wiki {{Script needed |language = Khmer |image = Khmer language.svg }} 3hygsftojhw5hntthwwq1yaj98h1egw Template:Kmposts 10 968 2168 2167 2020-09-29T19:17:29Z Chrisb 1 1 revision imported 2167 wikitext text/x-wiki {{Mileposts |subst=<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> |name=Kmposts |km=yes }} 1eqv0hu0zgnnr5lowdqdd8ztd9gid70 Template:Korean script needed 10 993 2218 2217 2020-09-29T19:17:32Z Chrisb 1 1 revision imported 2217 wikitext text/x-wiki {{Script needed |language = Korean |image = Hangeul.svg }}<noinclude> [[Category:Korea templates]] </noinclude> 4esvo1541wtlb654gn3yh16jj7c24rz Template:Lacking overview 10 1036 2304 2303 2020-09-29T19:17:38Z Chrisb 1 1 revision imported 2303 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Lacking overview}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Lacking overview | type = style | text = This {{{1|article}}} '''contains an enumeration of examples, but lacks a general overview of its topic.''' You can help by adding an appropriate [[Wikipedia:Manual of Style (lists)#Lead paragraphs in embedded lists|introductory section]]. [[Help:Editing|Editing help]] is available. {{#if:{{{date|}}}|<small>''({{{date}}})''</small>}} }}{{DMCA|Articles needing cleanup|from|{{{date|}}}|All pages needing cleanup}}{{DMCA|Articles with sections that need to be turned into prose|from|{{{date|}}}}}<!--{{Prose}} end--> }}<noinclude> {{Documentation}} </noinclude> sxm0l50j229yb240b68mgy2gbpqwj0x Template:Lao script needed 10 1003 2238 2237 2020-09-29T19:17:33Z Chrisb 1 1 revision imported 2237 wikitext text/x-wiki {{Script needed |language = Lao |image = Laos in Lao.svg }} rsefchxpo4v8ffdct7mkpstioinr7t1 Template:Lead missing 10 1037 2306 2305 2020-09-29T19:17:38Z Chrisb 1 1 revision imported 2305 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Lead missing}} begin-->{{Ambox | name = Lead missing | type = content | image = [[File:Wiki letter w.svg|40px]] | class = ambox-lead_missing | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | issue = This article '''has no [[Wikipedia:Manual of Style/Lead section|lead section]]'''. | fix = Please help by adding an introductory section to this article. For more information, see the [[Wikipedia:Manual of Style/Layout|layout guide]], and Wikipedia's [[Wikipedia:Manual of Style/Lead section|lead section guidelines]] to ensure the section will be inclusive of all the essential details. Please discuss this issue on the article's [[{{TALKPAGENAME}}|talk page]]. | removalnotice = yes | date = {{{date|}}} | cat = Wikipedia introduction cleanup | all = All pages needing cleanup | all2 = Pages missing lead section | cat3 = Articles covered by WikiProject Wikify | all3 = All articles covered by WikiProject Wikify }}<!--{{Lead missing}} end--> }}<noinclude> {{Documentation}} </noinclude> 5mfxa2vhoydb424n25szcshxfu1ptxp Template:Lead rewrite 10 1224 2680 2679 2020-09-29T19:18:05Z Chrisb 1 1 revision imported 2679 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Lead rewrite}} begin-->{{Ambox | name = Lead rewrite | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | class = ambox-lead_rewrite | issue = The '''[[Wikipedia:Manual of Style/Lead section|lead section of this article]] may need to be rewritten'''. {{#if:{{{reason|}}}|The reason given is: '''{{{reason}}}'''}} | fix = Use the [[Wikipedia:Manual of Style/Lead section|lead layout guide]] to ensure the section follows Wikipedia's norms and is inclusive of all essential details. | removalnotice = yes | cat = Wikipedia introduction cleanup | all = All pages needing cleanup | cat2 = Articles covered by WikiProject Wikify | all2 = All articles covered by WikiProject Wikify | date = {{{date|}}} | talk = {{{talk|}}} }}<!--{{Lead rewrite}} end--> }}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> gqcye3kk5p1i2lerjldnxd5w9k5gtn1 Template:Lead too long 10 1038 2308 2307 2020-09-29T19:17:38Z Chrisb 1 1 revision imported 2307 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Lead too long}} begin-->{{Ambox | name = Lead too long | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | class = ambox-lead_too_long | issue = This article's '''[[Wikipedia:Manual of Style/Lead section|lead section]] may be too long for the length of the article'''. | fix = Please help by moving some material from it into the body of the article. Please read the [[Wikipedia:Manual of Style/Layout|layout guide]] and [[Wikipedia:Manual_of_Style/Lead_section#Length|lead section guidelines]] to ensure the section will still be inclusive of all essential details. Please discuss this issue on the article's [[{{TALKPAGENAME}}|talk page]]. | cat = Wikipedia introduction cleanup | all = All pages needing cleanup | cat2 = Articles covered by WikiProject Wikify | all2 = All articles covered by WikiProject Wikify | date = {{{date|}}} }}<!--{{Lead too long}} end--> }}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 0m01yp78kvoi3f2xd3f4rq392p43ona Template:Lead too short 10 1039 2310 2309 2020-09-29T19:17:39Z Chrisb 1 1 revision imported 2309 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Lead too short}} begin-->{{Ambox | name = Lead too short | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | image = [[File:Wiki letter w.svg|40px]] | class = ambox-lead_too_short | issue = This article's '''[[Wikipedia:Manual of Style/Lead section|lead section]] does not adequately [[Wikipedia:summary style|summarize]] key points of its contents'''. {{#if:{{{reason|}}}|The reason given is: '''{{{reason}}}'''}} | fix = Please consider expanding the lead to [[Wikipedia:Manual of Style/Lead section#Provide an accessible overview|provide an accessible overview]] of all important aspects of the article. Please discuss this issue on the article's [[{{TALKPAGENAME}}|talk page]]. | cat = Wikipedia introduction cleanup | all = All pages needing cleanup | cat2 = Articles covered by WikiProject Wikify | all2 = All articles covered by WikiProject Wikify | date = {{{date|}}} | talk = {{{talk|}}} }}<!--{{Lead too short}} end--> }}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 7v6tr1khy8x3qtkp48lur7y3lbi1uit Template:Like resume 10 1106 2444 2443 2020-09-29T19:17:48Z Chrisb 1 1 revision imported 2443 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Like resume}} begin-->{{Ambox | name = Like resume | subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | issue= This biographical {{{1|article}}} '''is written [[Wikipedia:Wikipedia is not the place to post your résumé|like a résumé]]'''. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] by revising it to be [[WP:NPOV|neutral]] and [[WP:MOSBIO|encyclopedic]]. | date = {{{date|}}} | cat = Articles with a promotional tone | all = All articles with a promotional tone }}<!--{{Like resume}} end--> }}<noinclude> {{documentation}} </noinclude> j3iized311jmzl3ms6h7meymbwqj4ap Template:List dispute 10 1040 2312 2311 2020-09-29T19:17:39Z Chrisb 1 1 revision imported 2311 wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__|$B={{Ambox | name = List dispute | type = content | issue = The '''inclusion or exclusion of items''' from this list or '''length of this list''' is disputed. | fix = Please discuss this issue on the [[{{TALKPAGENAME}}#{{{1|}}}|talk page]]. | date = {{{date|}}} }} }}<noinclude> {{Documentation}}</noinclude> 9v2mfgdwa9g1gg9t81e4bjcvsea2s62 Template:List missing criteria 10 1041 2314 2313 2020-09-29T19:17:39Z Chrisb 1 1 revision imported 2313 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{List missing criteria}} begin-->{{Ambox | name = List missing criteria | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | issue = This list has no '''[[WP:LSC|precise inclusion criteria]]''' as described in the [[Wikipedia:Manual of Style/Stand-alone lists|Manual of Style for standalone lists]]. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by adding inclusion criteria. ([[{{{discussion|{{{discuss|:{{TALKPAGENAME}}}}}}}}|Discuss]]) | date = {{{date|}}} | cat = Lists having no precise inclusion criteria | all = All lists having no precise inclusion criteria }} <!--{{List missing criteriae}} end--> }}<noinclude> {{Documentation}} </noinclude> 4fmxj4szi9p3t0txp3xius6rl3sz1cd Template:List scope 10 1284 2800 2799 2020-09-29T19:18:14Z Chrisb 1 1 revision imported 2799 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = List scope | subst= <includeonly>{{subst:substcheck}}</includeonly> | type = content | image = [[File:Noun Project list icon 1510508 cc.svg|50x50px]] | issue = This [[Wikipedia:Stand-alone lists|list]] contains '''entries that may be out of scope and need to be evaluated for removal'''. | fix = Please help to [{{fullurl:{{FULLPAGENAME}}|action=edit}} clean it up] by removing items that do not meet the inclusion criteria agreed upon {{#if:{{{criteria|}}}|at [[{{{criteria}}}]]|on the [[{{TALKPAGENAME}}|talk page]]}}. {{#if:{{{talk|}}}|Additional discussion related to this cleanup effort can be found at [[{{{talk|}}}]].|}} | date = {{{date|}}} | cat = Articles needing cleanup | all = All pages needing cleanup | cat2 = Wikipedia list cleanup }} }}<noinclude> {{Documentation}} </noinclude> s3pmb0hsow35mbd3j80ueyjw9hm6um4 Template:List spam 10 1194 2620 2619 2020-09-29T19:18:01Z Chrisb 1 1 revision imported 2619 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = List spam | subst= <includeonly>{{subst:substcheck}}</includeonly> | type = content | class= ambox-Advert | issue= This {{{1|list}}} contains entries that '''[[Wikipedia:What Wikipedia is not#Wikipedia is not a soapbox or means of promotion|appear to advertise a subject]]'''. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it] by re-writing [[WP:Spam|promotional content]] from a [[WP:NPOV|neutral point of view]], and removing inappropriate entries that are not [[WP:Notability|notable]] or do not fit this list's inclusion criteria. | cat = Articles with a promotional tone | date = {{{date|}}} | all = All articles with a promotional tone | cat2 = Wikipedia list cleanup }} }}<noinclude> {{documentation}} </noinclude> btsyz47ihjkr3f8yhkpcia8i5zol5n9 Template:List to table 10 1262 2756 2755 2020-09-29T19:18:10Z Chrisb 1 1 revision imported 2755 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{List to table}} begin-->{{Ambox | name = List to table | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | issue = This list (which may have dates, numbers, etc.) '''may be better in a [[Help:Sorting|sortable table]] format.''' | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this list] or discuss it on the [[{{TALKPAGENAME}}|talk page]]. | date = {{{date|}}} | cat = Articles needing cleanup | all = All pages needing cleanup | cat2 = Wikipedia list cleanup | cat3 = Articles requiring tables }}<!--{{List to table}} end--> }}<noinclude> {{Documentation}} </noinclude> 2g1qak9v4cndpsvmrpznr758thsb6wg Template:List years 10 1042 2316 2315 2020-09-29T19:17:39Z Chrisb 1 1 revision imported 2315 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{List years}} begin-->{{Ambox | name = List years | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | issue = '''This [[Wikipedia:Manual of Style/Lists|list or list section]] may be better with [[Help:Sorting#Dates|year]]s.''' | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this list] or discuss it on the [[{{TALKPAGENAME}}|talk page]]. | date = {{{date|}}} | cat = Articles needing cleanup | all = All pages needing cleanup | all2 = Articles with lists requiring dates }}<!--{{List years}} end--> }}<noinclude> {{Documentation}} </noinclude> 2fj1bb0fhrnfpyjna5py13suftyp3wa Template:Long plot 10 1258 2748 2747 2020-09-29T19:18:10Z Chrisb 1 1 revision imported 2747 wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B= {{ambox | type = style | class = ambox-Plot | issue = This {{#if:{{{1|}}}|{{{1}}}|article}}'s plot summar{{#if:{{{plural|}}}|ies|y}} '''may be [[Wikipedia:How to write a plot summary|too long or excessively detailed]].''' | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve {{#if:{{{plural|}}}|them|it}}] by removing unnecessary details and making {{#if:{{{plural|}}}|them|it}} more concise. | removalnotice = yes | cat = Wikipedia articles with plot summary needing attention | date = {{{date|}}} | all = All Wikipedia articles with plot summary needing attention | name = Long plot }} }}<noinclude> <!-- Add categories and interwikis to the /doc subpage, not here! --> {{documentation}} </noinclude> 1qmx0mlhz0qn1cjw6qa8gnf3e9nhi4x Template:Longitem 10 1663 4974 4973 2020-10-11T05:50:43Z Chrisb 1 1 revision imported 4973 wikitext text/x-wiki <div style="display:inline-block; padding:0.1em 0;line-height:1.2em;{{{style|}}}">{{{1}}}</div><includeonly>{{#if:{{{2|}}}|[[Category:Pages using Template:Longitem with unnamed style parameter]]}}</includeonly><noinclude> {{documentation}} </noinclude> b8o6mrrekrzkkn4iwsvoloxg6ahtjhj Template:Longlisted 10 1530 4708 4707 2020-10-11T05:35:19Z Chrisb 1 1 revision imported 4707 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #DDF; color: #2C2C2C; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-no2"|{{{1|Longlisted}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> t94vzdcfr6egn0pof7wih684b3byh4w Template:Lost 10 1531 4710 4709 2020-10-11T05:35:19Z Chrisb 1 1 revision imported 4709 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background:#F99; color: {{{textcolor|black}}}; vertical-align: {{{valign|middle}}}; text-align: {{{halign|center}}}; {{{style|}}}" class="table-no" | {{{1|Lost}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> amvw8amaf7q7367p8xedd4u72w3m55z Template:Lowercase title 10 1631 4910 4909 2020-10-11T05:50:20Z Chrisb 1 1 revision imported 4909 wikitext text/x-wiki <span>{{DISPLAYTITLE:{{#if:{{NAMESPACE}}|{{NAMESPACE}}:|}}{{lcfirst:{{PAGENAME}}}}}}</span><noinclude> {{documentation}} </noinclude> mqu8dewzbhxg4xvn22cnjl91d5uizc0 Template:Lowercase title/doc 10 1652 4952 4951 2020-10-11T05:50:41Z Chrisb 1 1 revision imported 4951 wikitext text/x-wiki {{Documentation subpage}} <!-- Kendeo --> :''See also: {{tl|Nocaps}}'' {{TOCright}} == Usage == {{nosubst}} Simply add the tag <code><nowiki>{{lowercase title}}</nowiki></code> at the beginning of a page (and optionally, at the beginning of its talk page). There are no parameters. The tag will only decapitalize the first letter of the page's name in the title at the beginning of the page. Examples: {| class="wikitable" |- ! Page name !! Will display |- | [[EBay]], [[IPod]], etc. || eBay, iPod, etc. |- | [[Talk:EBay]] || Talk:eBay |} == Issues == The template does '''not''' work together with other title modification templates: you need to use DISPLAYTITLE directly and make sure it's the last DISPLAYTITLE on the page. For example, to make "Example" italic and lowercase, use <code><nowiki>{{DISPLAYTITLE:''example''}}</nowiki></code>. When using the template on redirect pages, the template must be moved ''after'' the redirect, since otherwise it will break the redirection. This, however, limits the template to have an effect only when viewing the redirect page directly. Nevertheless, it is still useful in this scenario in order to document the proper capitalization of a term. When using on templates, please make sure to wrap it with a &lt;noinclude&gt; tag, so that transcluded pages don't get affected. == Technical == This template wraps the [[Help:Magic words|magic word]] DISPLAYTITLE so that it works automatically in any namespace (main, talk, template, etc.) to decapitalise the first letter of the name of a page it is transcluded on. <syntaxhighlight lang=sql> /* Page using a lowercase title, with or without {{lowercase}} */ SELECT page_title, pp_value AS displaytitle FROM page JOIN page_props ON pp_page=page_id AND pp_propname="displaytitle" WHERE page_namespace=0 AND CONVERT(pp_value USING utf8mb4) COLLATE utf8mb4_bin /* &#greek; */ REGEXP "^([_ :]+|<[^<>]+>)*([[:lower:]]|&#9[4-6][0-9];)" </syntaxhighlight> == See also == * [[Wikipedia:Naming conventions (technical restrictions)#Lowercase first letter]] {{WrongTitleExamples}} ==TemplateData== {{TemplateData header}} <templatedata> { "params": {}, "description": "This template is used to make the first letter of the page title lowercase. It will not affect the page URL, just the displayed name." } </templatedata> <includeonly>{{Sandbox other|| [[Category:Correct title templates]] }}</includeonly> k5yapb1w65u6wsf1oib5afa5wv16twx Template:Lua 10 1298 2828 2827 2020-09-29T19:18:16Z Chrisb 1 1 revision imported 2827 wikitext text/x-wiki <includeonly>{{#invoke:Lua banner|main}}</includeonly><noinclude> {{Lua|Module:Lua banner}} {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> pnmjp3f3fl321yf2jpg5syebi412n7b Template:MONTHNAME 10 1615 4878 4877 2020-10-11T05:39:03Z Chrisb 1 1 revision imported 4877 wikitext text/x-wiki <includeonly>{{#if:{{{1|}}}|{{#switch:{{MONTHNUMBER|{{{1}}}}}|1=January|2=February|3=March|4=April|5=May|6=June|7=July|8=August|9=September|10=October|11=November|12=December|Incorrect required parameter 1=''month''!}}|Missing required parameter 1=''month''!}}</includeonly><noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 4cf5sge5nt8b4gwjre9u8yifa3kstt2 Template:MONTHNUMBER 10 1616 4880 4879 2020-10-11T05:39:03Z Chrisb 1 1 revision imported 4879 wikitext text/x-wiki <includeonly>{{#if:{{{1|}}} |{{#switch:{{lc:{{{1}}}}} |january|jan=1 |february|feb=2 |march|mar=3 |apr|april=4 |may=5 |june|jun=6 |july|jul=7 |august|aug=8 |september|sep|sept=9 |october|oct=10 |november|nov=11 |december|dec=12 |{{#ifexpr:{{{1}}}<0 |{{#ifexpr:(({{{1}}})round 0)!=({{{1}}}) |{{#expr:12-(((0.5-({{{1}}}))round 0)mod 12)}} |{{#expr:12-(((11.5-({{{1}}}))round 0)mod 12)}} }} |{{#expr:(((10.5+{{{1}}})round 0)mod 12)+1}} }} }} |Missing required parameter 1=''month''! }}</includeonly><noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> mqnyq8bnd6mmrrl70a3uwqgeo8aevfc Template:MOS 10 1048 2328 2327 2020-09-29T19:17:40Z Chrisb 1 1 revision imported 2327 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= <!--{{MOS}} begin-->{{Ambox | name = MOS | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = style | class = ambox-mos | sect = {{#if:{{{section|}}}|section|{{{1|}}}}} | issue = '''needs editing for compliance with Wikipedia's {{#if:{{{shortcut|}}}|Manual of Style at [[{{{shortcut}}}]]|[[WP:Manual of Style{{{3|{{{subpage|}}}}}}|Manual of Style{{{3|{{{subpage|}}}}}}]]}}.''' {{#if:{{{2|{{{reason|{{{for|}}}}}}}}}|In particular, it has problems with {{{2|{{{reason|{{{for}}}}}}}}}.}} | talk = {{{talk|}}} | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] if you can. | removalnotice = yes | date = {{{date|}}} }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{MOS}} end--> }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> h74gvukuo0w4jv2lh38pndxo42qyeq2 Template:MOSLOW 10 1049 2330 2329 2020-09-29T19:17:40Z Chrisb 1 1 revision imported 2329 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = MOSLOW | type = style | issue = This {{{1|article}}} '''contains a list of works that does not follow the [[Wikipedia:Manual of Style/Lists of works|Manual of Style for lists of works]]''' (often, though not always, due to being in reverse-chronological order) and may need [[Wikipedia:Cleanup|cleanup]]. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{{1|article}}}] if you can. | date = {{{date|}}} }} <includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{{category|[[Category:Wikipedia articles contravening the Manual of Style for lists of works]]}}}}}</includeonly> }}<noinclude>{{documentation}} </noinclude> 2njapnueoqb8e8qc4zndf4i0bavkpaa Template:Main other 10 1315 2862 2861 2020-09-29T19:18:21Z Chrisb 1 1 revision imported 2861 wikitext text/x-wiki {{#switch: <!--If no or empty "demospace" parameter then detect namespace--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--> | {{#ifeq:{{NAMESPACE}}|{{ns:0}} | main | other }} }} | main = {{{1|}}} | other | #default = {{{2|}}} }}<noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> ngt28vb1n5t4bh1su57btnqyofkd1d5 Template:Malformed template 10 1285 2802 2801 2020-09-29T19:18:14Z Chrisb 1 1 revision imported 2801 wikitext text/x-wiki {{Ambox | name = Malformed template | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = style | sect = {{{section|}}} | issue = {{#if:{{{2|}}}|contains|may contain}} one or more {{#ifeq:{{{1|}}}|param|templates with [[Help:Template#Parameters|invalid parameters]]|[[Help:Templates|'''{{#switch:{{{1}}}|unclosed=unclosed{{sp}}|param=|malformed{{sp}}}} templates''']] {{#if:{{{2|}}}|(in particular, {{tl|{{{2}}}}} templates)}}}}. | fix = {{#if:{{{2|}}}|The templates need|Templates contained within this {{{section|article}}} may need}} {{#switch:{{{1}}}|unclosed=to be closed|param=to have parameters corrected|fixing or updating}}. | date = {{{date|}}} | info = {{#if:{{{bot|}}}|<br /><small>Automatically tagged by {{user link|{{{bot}}}}}</small>}} | cat = Articles with malformed templates | cat2 = {{#if:{{{2|}}}|Articles with malformed {{{2}}} templates}} | cat3 = {{#switch:{{{1}}}|unclosed=Articles with unclosed templates|param=Articles with templates with invalid parameters|}} | removalnotice = yes }}<noinclude> {{Documentation}} </noinclude> pvpp0gst75rxlw6gt5kqngbknxux3d5 Template:Manual 10 1200 2632 2631 2020-09-29T19:18:02Z Chrisb 1 1 revision imported 2631 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Manual}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Manual | type = style | issue = This {{{1|article}}} '''is written like [[Wikipedia:What Wikipedia is not#GUIDE|{{#if:{{{2|{{{type|}}}}}}|{{{2|{{{type}}}}}}|a manual or guidebook}}]].''' | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} rewrite this {{{1|article}}}] from a descriptive, [[Wikipedia:Neutral point of view|neutral point of view]], and remove advice or instruction. | removalnotice = yes | date = {{{date|}}} }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Manual}} end--> }}<noinclude>{{Documentation}}<!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --></noinclude> mdq2aufjqb4vt01hl2o6s5lu9dqzuff Template:Math2english 10 1043 2318 2317 2020-09-29T19:17:39Z Chrisb 1 1 revision imported 2317 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = Math2english | type = style |small = {{{small|}}} |image = <div style="font:4em serif;">Σ</div> |issue = This article '''may contain overly [[Meta:Help:Formula|technical formula]]s too complex for most readers to understand'''. These formulas need to be [[Wikipedia:Make technical articles accessible|translated]] into English and/or visual diagrams. |fix = Please expand this article to make it accessible to non-experts without removing the technical details. | date = {{{date|}}} | cat = Wikipedia articles that are too technical | all = All articles that are too technical | cat2 = Articles needing expert attention | all2 = All articles needing expert attention }} }} 28epgt42tf8umrd1neeer7527r572mw Template:Maybe 10 1532 4712 4711 2020-10-11T05:35:20Z Chrisb 1 1 revision imported 4711 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #ffff90; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-maybe"|{{{1|Maybe}}}<noinclude> |} {{documentation|Template:Table cell templates/doc}} </noinclude> apc8s7t3mfvr0070t3m75j22e7psxqv Template:MaybeCheck 10 1533 4714 4713 2020-10-11T05:35:20Z Chrisb 1 1 revision imported 4713 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: {{{color|#FFB}}}; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="partial table-partial" {{#if:{{{rowspan|}}}|rowspan="{{{rowspan}}}"}} |{{{text|[[File:yellow check.svg|13px|link={{{link|}}}|{{{1|Maybe}}}]] {{{2|}}}}}}<noinclude> |} {{documentation|Template:Table cell templates/doc}}</noinclude> cpge9st8t1u5at3b4z7gw4j068zteqh Template:Mbox 10 921 2074 2073 2020-09-29T19:17:23Z Chrisb 1 1 revision imported 2073 wikitext text/x-wiki {{#invoke:Message box|mbox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> mpflpb6s8l8gaoxaeypyuqyu2w7vc7i Template:Mbox templates (small) 10 923 2078 2077 2020-09-29T19:17:23Z Chrisb 1 1 revision imported 2077 wikitext text/x-wiki <includeonly>{{Infobox | bodyclass = nowrap | bodystyle = width:auto;padding-bottom:0.6em;line-height:1.25em; | abovestyle = font-size:inherit; | above = Message box<br/>meta-templates | labelstyle = margin:0;padding:0 0.3em 0;text-align:center;font-weight:normal; | datastyle = margin:0;padding:0 0.5em 0 0; | label1 = ''template'' | data1 = ''context'' | label2 = {{tl|Ambox}} | data2 = article | label3 = {{tl|Cmbox}} | data3 = category | label4 = {{tl|Imbox}} | data4 = image | label5 = {{tl|Tmbox}} | data5 = talk | label6 = {{tl|Fmbox}} | data6 = footer / header | label7 = {{tl|Ombox}} | data7 = other pages | label8 = {{tl|Mbox}} | data8 = auto-detect | label9 = {{tl|Asbox}} | data9 = article stub | label10 = {{tl|Dmbox}} | data10 = disambiguation }}</includeonly><noinclude> {{Documentation}} </noinclude> 1bae4fgs4de5xgz69zvbs10mlm90g0b Template:Mbox templates see also 10 924 2080 2079 2020-09-29T19:17:23Z Chrisb 1 1 revision imported 2079 wikitext text/x-wiki <div>{{view|Template:Mbox templates see also|edit|brackets=yes}} There are seven metatemplates in the [[Module:Message box]] family:</div> * {{tl|Ambox}}, for messageboxes on article pages. * {{tl|Cmbox}}, for messageboxes on category pages. * {{tl|Imbox}}, for messageboxes on file (image) pages. * {{tl|Tmbox}}, for messageboxes on talk pages. * {{tl|Fmbox}}, for header and footer messageboxes. * {{tl|Ombox}}, for messageboxes on other types of page. * {{tl|Mbox}}, for messageboxes that are used in different [[Wikipedia:Namespace|namespaces]] and change their presentation accordingly. Closely related metatemplates: * {{tl|Asbox}}, for messageboxes in article stubs. * {{tl|Dmbox}}, for messageboxes on disambiguation or set-index pages. * {{tla|Ivory messagebox|Ivmbox}}, a simple full-width box with default ivory background intended to frame important messages or notices. Templates intended to be used in conjunction with Mboxes: * {{tl|Ombox/shortcut}}, an alternative to {{tl|Shortcut}} for use in Mbox templates<noinclude> {{Documentation}} </noinclude> 789tpa7l7pq9247rz1302oo4eo2biqu Template:Merge FJC 10 1044 2320 2319 2020-09-29T19:17:39Z Chrisb 1 1 revision imported 2319 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Merge FJC}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Merge FJC | type = move | image = [[Image:Merge-arrow.svg|50px|Merge arrow|alt=|link=]] | text = [[Wikipedia:WikiProject United States courts and judges|WikiProject USCJ]] has suggested that this Bot-created FJC subpage be [[Wikipedia:Merging|merged]] into the article at ''[[{{{1}}}]]''. :<small>Once this is done you may replace this template with {{tlx|Delete FJC|{{{1}}}}}, and the page will be deleted. {{#if:{{{date|}}}|''({{{date}}})''}}</small> }}<includeonly>{{DMC|Bot-created FJC subpages needing merge action}}</includeonly><!--{{Merge FJC}} end--> }}<noinclude> ;''<u>Merge FJC usage</u>'': {{tlx|Merge FJC|article name|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}}}. This adds the subpage to [[:Category:Bot-created FJC subpages needing merge action]]. See that category for further information. [[Category:Merge templates for WikiProjects|FJC]] [[Category:WikiProject United States courts and judges maintenance]] </noinclude> a29fu24ic7uh28qfexeaqocz5moovyx Template:Merging from 10 950 2132 2131 2020-09-29T19:17:26Z Chrisb 1 1 revision imported 2131 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = Merging from | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = move | image = [[File:Mergefrom.svg|50px|alt=|link=]] | text = '''{{#if:{{{1|}}}|{{#if:{{{2|}}}|{{#if:{{{3|}}}|{{#if:{{{4|}}}|{{#if:{{{5|}}}|''[[{{NAMESPACE}}:{{{1}}}|{{{1}}}]]'', ''[[{{NAMESPACE}}:{{{2}}}|{{{2}}}]]'', ''[[{{NAMESPACE}}:{{{3}}}|{{{3}}}]]'', ''[[{{NAMESPACE}}:{{{4}}}|{{{4}}}]]'', and ''[[{{NAMESPACE}}:{{{5}}}|{{{5}}}]]'' are|''[[{{NAMESPACE}}:{{{1}}}|{{{1}}}]]'', ''[[{{NAMESPACE}}:{{{2}}}|{{{2}}}]]'', ''[[{{NAMESPACE}}:{{{3}}}|{{{3}}}]]'', and ''[[{{NAMESPACE}}:{{{4}}}|{{{4}}}]]'' are}}|''[[{{NAMESPACE}}:{{{1}}}|{{{1}}}]]'', ''[[{{NAMESPACE}}:{{{2}}}|{{{2}}}]]'', and ''[[{{NAMESPACE}}:{{{3}}}|{{{3}}}]]'' are}}|''[[{{NAMESPACE}}:{{{1}}}|{{{1}}}]]'' and ''[[{{NAMESPACE}}:{{{2}}}|{{{2}}}]]'' are}}|''[[{{NAMESPACE}}:{{{1}}}|{{{1}}}]]'' is}}|A number of articles are}} in the process of being [[Wikipedia:Merging|merged]] into this {{#if:{{{section|}}}|[[{{FULLPAGENAME}}#{{{section}}}|section]]|{{#if:{{NAMESPACE}}|page|article}}}}'''. <br/> If possible, please edit only this {{#if:{{NAMESPACE}}|page|article}}, as the {{#if:{{NAMESPACE}}|page|article}} mentioned above may be turned into a [[Wikipedia:Redirect|redirect]]. Relevant discussion may be found {{#if:{{{discussion|}}}|[[{{{discussion}}}|here]]|on [[:{{TALKPAGENAME}}|this {{#if:{{NAMESPACE}}|page|article}}'s talk page]]{{#if:{{{1|}}}| &#32;and/or [[:{{#if:{{NAMESPACE}}|Talk|{{NAMESPACE}}_talk}}:{{{1}}}|the source {{#if:{{NAMESPACE}}|page|article}}'s talk page]]}}}}. | date = {{{date|}}} | cat = Articles to be merged }} }}<noinclude> {{Documentation}} <!-- Add categories and inter-wikis to the /doc subpage, not here! --> </noinclude> pho36pczq7v04h6kf1y4cdc17clwibr Template:Metricate 10 1045 2322 2321 2020-09-29T19:17:39Z Chrisb 1 1 revision imported 2321 wikitext text/x-wiki <noinclude>{{Template for discussion/dated|action=|page=Metricate|link=Wikipedia:Templates for discussion/Log/2020 September 17#Template:Metricate|help=off|bigbox={{#invoke:Noinclude|noinclude|text=yes}}}}</noinclude> <!--{{Metricate}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Metricate | type = style | class = ambox-metricate | image = [[file:Measuring tape icon.svg|50x40px]] | issue = This {{{1|article or section}}} '''exclusively uses non-[[International System of Units|SI units]] of measurement'''. | fix = Please help <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article]</span> by [[template:convert|adding international units]], preferably from the references cited in the article. | date = {{{2|}}} }}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{DMCA|{{{category|Articles requiring unit attention}}}}}}}</includeonly><!--{{Metricate}} end--><noinclude>{{documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude> l7ulmhl27peabqy4k1nk5qch17njwpr Template:Microformat message 10 1664 4976 4975 2020-10-11T05:50:43Z Chrisb 1 1 revision imported 4975 wikitext text/x-wiki The [[Help:HTML in wikitext|HTML mark-up]] produced by this template includes {{#if:{{{type|}}} |{{{type}}} |an [[{{{format}}} microformat]]}} that makes {{{data}}} readily [[Parsing|parsable]] by computer programs. This aids tasks such as the cataloguing of articles and maintenance of databases. For more information about the use of microformats on Wikipedia, please visit [[Wikipedia:WikiProject Microformats|the Microformat WikiProject]].<!-- -->{{#if:{{{subtemplates<includeonly>|</includeonly>}}} | <div style="margin-top:0.5em;margin-bottom:0.65em;"> ; {{big|Subtemplates}} {{{subtemplates}}} '''''Please do not remove instances of these subtemplates.''''' </div>}}<!-- -->{{#if:{{{subsection1|}}} | <div style="margin-top:0.5em;margin-bottom:0.65em;"><!--(newline in case subsection begins with heading:)--> {{{subsection1}}} </div>}}<!-- -->{{#if:{{{1<includeonly>|</includeonly>}}} <!--(i.e. if at least one unnamed parameter supplied:)--> | <div style="margin-top:0.5em;margin-bottom:0.65em;"> ; {{big|Classes used}} The [[HTML attribute|HTML class]]es of this microformat include: : {{hlist |item_style=font-size:110%;{{{itemstyle|}}} |{{{1}}} |{{{2<includeonly>|</includeonly>}}} |{{{3|<noinclude>{{nobold|……}}</noinclude>}}} |{{{4|}}} |{{{5|}}} |{{{6|}}} |{{{7|}}} |{{{8|}}} |{{{9|}}} |{{{10|}}} |{{{11|}}} |{{{12|}}} |{{{13|}}} |{{{14|}}} |{{{15|}}} |{{{16|}}} |{{{17|}}} |{{{18|}}} |{{{19|}}} |{{{20|}}} }} </div> {{longitem|style=line-height:1.3em|'''''Please do not rename or remove these classes{{#if:{{{nocollapse<includeonly>|</includeonly>}}} |<br/>nor collapse nested elements which use them}}.'''''}}<!-- -->}}<!--(end #if:[1])--><noinclude> {{Documentation}} </noinclude> me7zxp3w2uux5z3kjtbhzkkibu4tots Template:Mileposts 10 967 2166 2165 2020-09-29T19:17:29Z Chrisb 1 1 revision imported 2165 wikitext text/x-wiki <!--{{Mileposts}} begin-->{{Ambox | name = {{{name|Mileposts}}} | subst = {{{subst|<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>}}} | type = content | image = [[Image:{{#if:{{{km|}}}|Kilometer|Mile}} marker.svg|x40px|link=|alt=]] | issue = '''This section contains a table that is missing {{#if:{{{km|}}}|kilometre posts|mileposts}} for one or more junctions.''' | fix = Please help by <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} adding the missing {{#if:{{{km|}}}|kilometre posts|mileposts}}]</span>. | cat = {{#ifeq:{{{cat|<noinclude>no</noinclude>}}}|no||Routes needing mileposts}} }}<!--{{Mileposts}} end--><noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> miagnq12313nm6akdehspfmcc857f4i Template:Misleading 10 1046 2324 2323 2020-09-29T19:17:40Z Chrisb 1 1 revision imported 2323 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Misleading}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Misleading | type = content | issue = This {{{1|article or section}}} '''may contain misleading parts'''. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} clarify this article] according to any suggestions provided on the [[{{TALKPAGENAME}}|talk page]]. | date = {{{date|}}} }}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{{category|[[Category:Misleading articles]]}}}}}</includeonly><!--{{Misleading}} end--> }}<noinclude> {{Documentation}} </noinclude> kv661hdwaslt75zzxj9almm4zhjj95u Template:Missing-taxobox 10 1047 2326 2325 2020-09-29T19:17:40Z Chrisb 1 1 revision imported 2325 wikitext text/x-wiki <!--{{Missing-taxobox}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Missing-taxobox | type = style | issue = '''This article needs an appropriate [[Wikipedia:Automated taxobox system|taxobox]].''' | fix = You can help Wikipedia by adding one. }}<includeonly>[[Category:Missing taxobox|{{PAGENAME}}]]</includeonly><!--{{Missing-taxobox}} end--><noinclude> {{Documentation}} [[Category:Request templates|{{PAGENAME}}]] [[Category:Wikipedia infoboxes]] </noinclude> s93ygitchuissqceitybeiwyah04b5j Template:Missing information 10 1178 2588 2587 2020-09-29T19:17:58Z Chrisb 1 1 revision imported 2587 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Missing information}} begin-->{{Ambox | name = Missing information | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | image = [[File:Wiki letter w.svg|44px]] | issue = This {{#if:{{{2|}}}|{{{1}}}|article}} '''is missing information about {{{2|{{{1<includeonly>|{{error|Error: you must specify what information is missing.}}</includeonly>}}}}}}'''. | fix = Please expand the {{#if:{{{2|}}}|{{{1}}}|article}} to include this information. Further details may exist on the [[{{TALKPAGENAME}}#{{#if:{{{talksection|}}}|{{anchorencode:{{{talksection}}}}}}}|talk page]]. | date = {{{date|}}} | small = {{{small|}}} | cat = Articles to be expanded }}<!--{{Missing information}} end--> }}<noinclude> {{Documentation}} </noinclude> 4o5g93d5r2uv852xv9xxnb8p97vlt0f Template:Missinginfo-search 10 1160 2552 2551 2020-09-29T19:17:55Z Chrisb 1 1 revision imported 2551 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{missing information|1={{{1}}}. Additional resources for improving this article can be found [{{{2}}} here]|date={{{date|}}}}} }}<noinclude> [[Category:Article message templates]] [[Category:Cleanup templates]] [[Category:Request templates]] </noinclude> 3wyxloj1qmqmy5kk02bkip8j4g1suse Template:Module other 10 874 1980 1979 2020-09-29T19:15:36Z Chrisb 1 1 revision imported 1979 wikitext text/x-wiki {{#switch: <!--If no or empty "demospace" parameter then detect namespace--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--> | {{#ifeq:{{NAMESPACE}}|{{ns:Module}} | module | other }} }} | module = {{{1|}}} | other | #default = {{{2|}}} }}<!--End switch--><noinclude> {{documentation}} <!-- Add categories to the /doc subpage, not here! --> </noinclude> 9db98vx09purrfch7wguurzjgqz7u93 Template:Module rating 10 875 1982 1981 2020-09-29T19:15:36Z Chrisb 1 1 revision imported 1981 wikitext text/x-wiki <includeonly>{{Module other|{{ombox | type = notice | image = {{#switch: {{{1|}}} | pre-alpha | prealpha | pa = [[File:Ambox warning blue construction.svg|40x40px|link=|alt=Pre-alpha]] | alpha | a = [[File:Alpha lowercase.svg|26x26px|link=|alt=Alpha]] | beta | b = [[File:Greek lc beta.svg|40x40px|link=|alt=Beta]] | release | r | general | g = [[File:Green check.svg|40x40px|link=|alt=Ready for use]] | protected | protect | p = [[File:{{#switch:{{#invoke:Effective protection level|edit|{{#switch:{{SUBPAGENAME}}|doc|sandbox={{FULLBASEPAGENAME}}|{{FULLPAGENAME}}}}}}|autoconfirmed=Semi|extendedconfirmed=Extended|accountcreator|templateeditor=Template|#default=Full}}-protection-shackle.svg|40x40px|link=|alt=Protected]] | semiprotected | semiprotect | semi =[[File:Semi-protection-shackle.svg|40x40px|link=|alt=Semi-protected]] }} | style = | textstyle = | text = {{#switch: {{{1|}}} | pre-alpha | prealpha | pa = This module is rated as [[:Category:Modules in pre-alpha development|pre-alpha]]. It is unfinished, and may or may not be in active development. It should not be used from article namespace pages. Modules remain pre-alpha until the original editor (or someone who takes one over if it is abandoned for some time) is satisfied with the basic structure.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in pre-alpha development|{{PAGENAME}}]] }} }} | alpha | a = This module is rated as [[:Category:Modules in alpha|alpha]]. It is ready for third-party input, and may be used on a few pages to see if problems arise, but should be watched. Suggestions for new features or changes in their input and output mechanisms are welcome.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in alpha|{{PAGENAME}}]] }} }} | beta | b = This module is rated as [[:Category:Modules in beta|beta]], and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules in beta|{{PAGENAME}}]] }} }} | release | r | general | g = This module is rated as [[:Category:Modules for general use|ready for general use]]. It has reached a mature form and is thought to be bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by [[Wikipedia:Template sandbox and test cases|sandbox testing]] rather than repeated trial-and-error editing.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules for general use|{{PAGENAME}}]] }} }} | protected | protect | p = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[Wikipedia:Protection policy|protected]] from editing.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }} }} | semiprotected | semiprotect | semi = This module is [[:Category:Modules subject to page protection|subject to page protection]]. It is a [[Wikipedia:High-risk templates|highly visible module]] in use by a very large number of pages, or is [[Wikipedia:Substitution|substituted]] very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is [[WP:SEMI|semi-protected]] from editing.<!-- -->{{#switch: {{SUBPAGENAME}}|doc|sandbox=<!-- No category for /doc or /sandbox subpages --> | {{#ifeq: {{{nocat|}}} | true | <!-- No category if user sets nocat=true --> | [[Category:Modules subject to page protection|{{PAGENAME}}]] }} }} | #default = {{error|Module rating is invalid or not specified.}} }} }}|{{error|Error: {{tl|Module rating}} must be placed in the Module namespace.}} [[Category:Pages with templates in the wrong namespace]]|demospace={{{demospace|<noinclude>module</noinclude>}}}}}</includeonly><noinclude> {{module rating|release|nocat=true|demospace=module}} {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go in Wikidata. --> </noinclude> qa237seqwluvlwhfrda4c8m3cscvst5 Template:More citations needed 10 1259 2750 2749 2020-09-29T19:18:10Z Chrisb 1 1 revision imported 2749 wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = {{{name|More citations needed}}} | small = {{#if:{{{small|}}}|left}} | type = content | class = ambox-Refimprove | image = [[File:Question book-new.svg|50x40px|alt=]] | issue = This {{#if:{{{1|}}}|{{{1}}}|article}} '''needs additional citations for [[Wikipedia:Verifiability|verification]]'''. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by [[Help:Referencing for beginners|adding citations to reliable sources]]. Unsourced material may be challenged and removed.{{#if:{{{find|}}}|{{#ifeq: {{{find|}}} |none ||<br /><small>{{find sources mainspace|{{{find}}} }}</small>}}|<br /><small>{{find sources mainspace}}</small>}} | removalnotice = yes | talk = {{{talk|}}} | date = {{{date|}}} | cat = Articles needing additional references | all = All articles needing additional references }} }}<noinclude> <!-- Please add categories to the /doc subpage, thanks --> {{Documentation}} </noinclude> bdjh5iyhm72utms1yrls88dn7j21tdh Template:More citations needed section 10 1269 2770 2769 2020-09-29T19:18:11Z Chrisb 1 1 revision imported 2769 wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B= {{More citations needed|section | name = More citations needed section | find = {{#if:{{{find|}}}|{{{find|}}}|none}} | date = {{{date|}}} | talk = {{{talk|}}} | small = {{{small|}}} }} }}<noinclude> {{documentation}} </noinclude> juhehkhdvrubo1uxfq63rqrblg5aqht Template:More plot 10 1268 2768 2767 2020-09-29T19:18:11Z Chrisb 1 1 revision imported 2767 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{More plot}} begin-->{{Ambox | name = More plot | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = notice | small = {{{small|left}}} | image = [[Image:Wiki letter w.svg|20px]] | issue = This {{#if:{{{1|}}}|{{{1}}}|article}} needs {{#if:{{yesno|{{{noimproved|}}}}}||{{#if:{{yesno|{{{plural|}}}}}||an}} improved{{sp}}}}[[Wikipedia:How to write a plot summary|{{#if:{{{2|}}}|{{{2}}}|{{#if:{{yesno|{{{plural|}}}}}|plot summaries|plot summary}}}}]]. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} edit this article] to provide one. {{#if:{{{date|}}}|<small>''({{{date}}})''</small>}} | date = {{{date|}}} | cat = Wikipedia articles with plot summary needing attention | all = All Wikipedia articles with plot summary needing attention }}<!--{{More plot}} end--> }}<noinclude> {{Documentation}} </noinclude> su9cr0sc4d7khj3rqd5f4pgo3179ern Template:Multiple issues 10 945 2122 2121 2020-09-29T19:17:26Z Chrisb 1 1 revision imported 2121 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||$B= {{Ambox |name = Multiple issues |doc = no |subst = <includeonly>{{subst:substcheck}}</includeonly> |class = ambox-multiple_issues compact-ambox |type = content |removalnotice = yes <!-- as of 2016-06, param does not work on this template --> |cat=Articles with multiple maintenance issues |text = <div {{#if:{{{1|}}}|class="mw-collapsible {{#ifeq:{{{collapsed}}}|yes|mw-collapsed}}"}} style="width:95%; margin: 0.2em 0;"><!-- -->'''This {{#if:{{{section|}}}|section|article}} has multiple issues.''' Please help '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it]''' or discuss these issues on the '''[[{{TALKPAGENAME}}|talk page]]'''. <small>''([[Help:Maintenance template removal|Learn how and when to remove these template messages]])''</small> {{#if:{{{1|}}} | <div class="mw-collapsible-content" style="margin-top: 0.3em;"> {{#invoke:String|replace|source={{{1|}}}|pattern=style="display: none"|replace=|count=}}<!--remove style="display: none", to support display of {{orphan}} messages in {{multiple issues}}--> </div> | <includeonly>{{error|No issues specified. Please specify issues, or remove this template.}}</includeonly> }} </div> {{#if:{{{2|}}}|[[Category:Pages using multiple issues with unknown parameters|§{{PAGENAME}}]]}} }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using multiple issues with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Multiple issues]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | 2 | collapsed | section }} }}<noinclude> {{Documentation}} </noinclude> g2jkcq9k8cnlw2ecqak43vc0veq6phy Template:N/a 10 1534 4716 4715 2020-10-11T05:35:20Z Chrisb 1 1 revision imported 4715 wikitext text/x-wiki {| class="wikitable" |- | <onlyinclude>data-sort-value="{{{sort|}}}" style="background: #ececec; color: #2C2C2C; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-na" <!-- -->| {{{1|N/A}}}</onlyinclude> |} {{documentation}} onzkutomdha4snn4aa8myn95j76aace Template:NFimageoveruse 10 1118 2468 2467 2020-09-29T19:17:50Z Chrisb 1 1 revision imported 2467 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = NFimageoveruse | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = content | class = ambox-NFimageoveruse | image = [[File:Copyright-problem.svg|50px|alt=|link=]] | sect = {{{1|}}} | issue = '''may contain an excessive number of [[Wikipedia:Copyrights|copyrighted]] images.'''<br><small>Please review the use of non-free images according to [[Wikipedia:Non-free content criteria|policy]] and [[Wikipedia:Non-free content|guidelines]], especially taking note of [[WP:NFCC#3a]], [[WP:NFCC#8]] and [[WP:NFC#Images]]. Correct any violations, then remove this tag once compliant.</small> | date = {{{date|}}} | cat = Articles with excessive non-free image content | all = Articles with excessive non-free image content }} }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> dvfjgbw026olmms4k6261mvjwge2hih Template:NPOV language 10 1060 2352 2351 2020-09-29T19:17:42Z Chrisb 1 1 revision imported 2351 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = NPOV language | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = content | class = ambox-npov-language | image = [[File:Ambox scales.svg|50px|link=]] | issue = The '''[[Wikipedia:Neutral point of view|neutrality]] of the style of writing in this {{{1|article}}} is [[Wikipedia:NPOV dispute|questioned]]'''. | talk = {{{talk|}}} | fix = Please do not remove this message until [[Template:POV#When to remove|conditions to do so are met]]. | removalnotice = yes | date = {{{date|}}} | cat = Articles with minor POV problems | all = All articles with minor POV problems }} }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 647peqqapy2cw5j1f87c8vb5in3f1sz Template:NRIS-only 10 1172 2576 2575 2020-09-29T19:17:57Z Chrisb 1 1 revision imported 2575 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = NRIS-only | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = content | class = ambox-nris-only | sect = {{{1|}}} | issue = '''lacks [[Wikipedia:Citing sources#Inline citations|inline citations]]''' besides [[National Register Information System|NRIS]], a database which provides minimal and sometimes ambiguous information. | talk = {{{talk|}}} | fix = Please help [[WP:V|ensure the accuracy]] of the information in this {{{1|article}}} by providing [[WP:inline citation|inline citations]] to additional [[WP:RS|reliable sources]]. | removalnotice = yes | date = {{{date|}}} | cat = Articles sourced only to NRIS | all = All articles sourced only to NRIS }} }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 1wauonuc59txmu2j8bdujwdgvr1fxuf Template:Na 10 1535 4718 4717 2020-10-11T05:35:21Z Chrisb 1 1 revision imported 4717 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>data-sort-value="{{{sort|No}}}" style="background: {{{color|#FFD2D2}}}; color:black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-no2" {{#if:{{{rowspan|}}}|rowspan="{{{rowspan}}}"}} | {{{text|[[File:Dark Red x.svg|13px|link={{{link|}}}|{{{1|No}}}]]}}}<noinclude> |} {{documentation|Template:Table cell templates/doc}}</noinclude> kydq4q3kwa02stgqxzehmpo81fh1umd Template:Navbox 10 1453 3210 3209 2020-10-11T01:32:04Z Chrisb 1 1 revision imported 3209 wikitext text/x-wiki <includeonly>{{#invoke:Navbox|navbox}}</includeonly><noinclude> {{Documentation}} </noinclude> tqodcaa2vvhehqaod229udlla0wimek Template:Needhanja 10 1050 2332 2331 2020-09-29T19:17:40Z Chrisb 1 1 revision imported 2331 wikitext text/x-wiki <!--{{Needhanja}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{talk other | demospace={{{demospace|}}} | <!-- Don't show on talk pages --> | {{Ambox | name = Needhanja |type = style |image = [[Image:Hanzi (traditional).svg|40px|Kanji]] |text = '''Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} add] ''[[hanja]]'' ([[Sino-Korean vocabulary|Sino-Korean characters]]) to this article, where needed.''' If this word has no ''hanja'', include the word "none" in the Korean language box. }} }}{{main other | demospace={{{demospace|}}} | <!-- Don't show in main (article) space --> | {{Tmbox |type = style |image = [[Image:Hanzi (traditional).svg|40px|Kanji]] |text = '''Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} add] ''[[hanja]]'' ([[Sino-Korean vocabulary|Sino-Korean characters]]) to this article, where needed.''' If this word has no ''hanja'', include the word "none" in the Korean language box. }} }}<includeonly>[[Category:Articles needing Korean script or text|{{PAGENAME}}]]</includeonly><!--{{Needhanja}} end--><noinclude> [[Category:Language maintenance templates|{{PAGENAME}}]] [[Category:Korea templates|{{PAGENAME}}]] [[Category:Wikipedia articles needing hanja| ]] [[Category:Request templates|{{PAGENAME}}]] </noinclude> hs2qag8alhbdtrhlnpxfu3h5oxo7cdm Template:Needhiragana 10 1188 2608 2607 2020-09-29T19:17:59Z Chrisb 1 1 revision imported 2607 wikitext text/x-wiki <!--{{Needhiragana}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{talk other | demospace={{{demospace|}}} | <!-- Don't show on talk pages --> | {{Ambox | name = Needhiragana |type = style |image = [[Image:ひ 教科書体.svg|40px|]] |text = Please <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} add]</span> Japanese ''[[hiragana]]'' to this article, where needed. }} }}{{main other | demospace={{{demospace|}}} | <!-- Don't show in main (article) space --> | {{tmbox |type = style |image = [[Image:ひ 教科書体.svg|40px|]] |text = Please <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} add]</span> Japanese ''[[hiragana]]'' to this article, where needed. }} }}<includeonly>[[Category:Articles needing Japanese script or text|{{PAGENAME}}]]</includeonly><!--{{Needhiragana}} end--><noinclude> [[Category:Language maintenance templates]] [[Category:Request templates]] [[Category:Japanese language templates]] </noinclude> t4vsxphq2197wqng8ll34pjny6ly5jx Template:Needkanji 10 1187 2606 2605 2020-09-29T19:17:59Z Chrisb 1 1 revision imported 2605 wikitext text/x-wiki <!--{{Needkanji}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{talk other | demospace={{{demospace|}}} | <!-- Don't show on talk pages --> | {{Ambox | name = Needkanji | type = style | image = [[Image:書.svg|48px|Kanji]] | text = '''Please <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} add]</span> Japanese ''[[kanji]]'' to this article, where needed.''' }} }}{{main other | demospace={{{demospace|}}} | <!-- Don't show in main (article) space --> | {{Tmbox | type = style | image = [[Image:書.svg|48px|Kanji]] | text = '''Please <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} add]</span> Japanese ''[[kanji]]'' to this article, where needed.''' }} }}<includeonly>[[Category:Articles needing Japanese script or text|{{PAGENAME}}]]</includeonly><!--{{Needkanji}} end--><noinclude> '''{{tl|{{PAGENAME}}}}''' will categorise an article in the list of [[:Category:Articles needing Japanese script or text|Articles needing Japanese script or text]]. [[Category:Language maintenance templates]] [[Category:Request templates]] [[Category:Japanese language templates]] </noinclude> bxgf0fk59vfzk08b80wj9pnutgsagza Template:Needs 10 1536 4720 4719 2020-10-11T05:35:21Z Chrisb 1 1 revision imported 4719 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #FED; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="need table-needs"|{{{1|Needs}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} [[es:Plantilla:Necesidades]] </noinclude> jnre9q1y4ie0v72nk6a0afn69tupyqq Template:Needs table 10 1051 2334 2333 2020-09-29T19:17:40Z Chrisb 1 1 revision imported 2333 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Needs table}} begin-->{{Ambox | name = Needs table | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | issue = '''This {{{1|article or section}}} should be written as a table.'''<br /> | fix = <small>To meet Wikipedia's [[:Category:Wikipedia style guidelines|quality standards]] and conform with our [[Wikipedia:NPOV|NPOV]] policy, this {{{1|article or section}}} may require a [[MOS:TABLE|table]]. Specific examples may be noted on the [[Talk:{{PAGENAME}}|talk page]]. [[Help:Editing|Editing help]] is available.</small> | date = {{{date|}}} }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Needs table}} end--> }}<noinclude> {{Documentation}} </noinclude> pijfrox6q7exfymge8gkycv4mbe2kaa Template:Neologism 10 1052 2336 2335 2020-09-29T19:17:40Z Chrisb 1 1 revision imported 2335 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Neologism}} begin-->{{Ambox | name = Neologism | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | issue = This {{{1|article}}} '''may document a [[WP:NEO|neologism]] or [[protologism]] in such a manner as to promote it'''. | fix = Please add [[WP:RS|more reliable sources]] to establish its current use and the impact the term has had on its field. Otherwise consider [[Wikipedia:Moving_a_page|renaming]] or deleting the article. | date = {{{date|}}} | cat = Articles about possible neologisms | removalnotice = yes }}<!--{{Neologism}} end--> }}<noinclude> {{Documentation}} </noinclude> 71xvipjfenu8duf8p9yty6th22pn1fl Template:New user article 10 1180 2592 2591 2020-09-29T19:17:58Z Chrisb 1 1 revision imported 2591 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = New user article |type = notice |image = <!--[[File:N write green black.svg|none|45px|link=]]-->[[File:smiley.svg|none|45px|link=]] |issue = This is an '''article recently created by a new user'''. More editing may be needed to meet standards, but [[Wikipedia:Please do not bite the newcomers|please be courteous]] and [[Wikipedia:Assume good faith|assume good faith]], and consider leaving a constructive message on {{#if:{{{1|}}}|[[User talk:{{{1}}}|the creator's talk page]]|the creator's talk page}} if large changes need to be made.<br/> | fix = <small>This template should be removed once the page has been reviewed by someone other than its creator. If you are the article's creator, you can seek feedback on your new article at the [[Wikipedia:Teahouse|Teahouse]] or request a [[Wikipedia:peer review|peer review]]. </small>{{#if:{{{date|}}}|''({{{date}}})''}} }}<!-- {{DMCA|Unreviewed new articles {{#ifeq:{{{source}}}|ArticleWizard|created via the Article Wizard}}|from|{{{date|}}}}} --> }}<noinclude> {{Documentation}} </noinclude> ivey09rn4mqkb7cce34bohtr2snkogz Template:New user article LSU 10 1053 2338 2337 2020-09-29T19:17:41Z Chrisb 1 1 revision imported 2337 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = New user article LSU |type = notice |image = <!--[[File:N write green black.svg|none|45px|link=]]-->[[File:LSU_Wikipedia_Course_Logo.png|none|45px|link=]] |text = This is an '''article recently created by a new user at [[Louisiana State University]] for a class project'''. More editing may be needed to meet standards, but [[Wikipedia:Please do not bite the newcomers|please be courteous]] and [[Wikipedia:Assume good faith|assume good faith]], and consider leaving a constructive message on {{#if:{{{1|}}}|[[User talk:{{{1}}}|the creator's talk page]]|the creator's talk page}} if large changes need to be made.<br/> <small>This template should be removed once the page has been reviewed by someone other than its creator. If you are the article's creator, you can [[Wikipedia:Requests for feedback|seek feedback on your new article]]. {{#if:{{{date|}}}|''({{{date}}})''}}</small> }}{{DMCA|Unreviewed new articles {{#ifeq:{{{source}}}|ArticleWizard|created via the Article Wizard}}|from|{{{date|}}}}} }}<noinclude> {{Documentation}} </noinclude> cptmp5ftsqnmktm0e1bxhlzzdeoyxdl Template:Nightly 10 1537 4722 4721 2020-10-11T05:35:21Z Chrisb 1 1 revision imported 4721 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #fdd; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="nightly table-nightly"|{{{1|[[Neutral build|Nightly build]]}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> 7kszprm42lo37ap0dl135x94hl3hp6s Template:No 10 1538 4724 4723 2020-10-11T05:35:21Z Chrisb 1 1 revision imported 4723 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background:#F99;vertical-align:middle;text-align:{{{align|center}}};{{{style|}}}" class="table-no"|{{{1|No}}}<noinclude> |} {{documentation}} </noinclude> 9sy5yzld48zzicuuz6htc8iqyyy9es3 Template:No2 10 1539 4726 4725 2020-10-11T05:35:21Z Chrisb 1 1 revision imported 4725 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #ffdddd; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-no2" |{{{1|}}}<noinclude> |} {{documentation}} </noinclude> jjhp3x889jt9llk3hf1ra656wgzx29j Template:No Copy to Wikibooks 10 1054 2340 2339 2020-09-29T19:17:41Z Chrisb 1 1 revision imported 2339 wikitext text/x-wiki <!--{{No Copy to Wikibooks}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = No Copy to Wikibooks | type = move | image = [[Image:Edit-copy purple.svg|40px]] | text = '''This page will ''not'' be [[meta:Transwiki|copied]] to [[Wikibooks]] using the [[b:Special:Import|Import]] tool, because there is already a [[b:{{{1}}}|page or book which addresses this subject]].''' If the page can be [[Wikipedia:How to edit a page|re-written]] into an encyclopedic article, please do so and remove this message. }}<includeonly>{{{category|[[Category:Copy to Wikibooks]]}}}</includeonly><!--{{No Copy to Wikibooks}} end--><noinclude>{{documentation|content= {{deletiontools}} Use <nowiki>{{No Copy to Wikibooks|Wikibooks page name}}</nowiki> to add a link to the wikibooks module. This template will categorise tagged articles into [[:Category:Copy to Wikibooks]]. This [[Wikipedia:Template|template]] is a [[Wikipedia:Avoid self-references|self-reference]]. This template is not useful for [[Wikipedia:Subst]]. == See also == * [[Template:Copied to Wikibooks]] * [[Template:Copied to Wikibooks Cookbook]] [[Category:Transwiki templates]] [[Category:Wikibooks link templates]] [[fr:Modèle:Pour Wikilivres]] [[zh:Template:移动到维基教科书]] }}</noinclude> bvfjvoyk12ov4rw9g1ks3two16be6ru Template:No O 10 1540 4728 4727 2020-10-11T05:35:22Z Chrisb 1 1 revision imported 4727 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background:#F99;vertical-align:middle;text-align:{{{align|center}}};{{{style|}}}" class="table-no"|[[Image:Pictogram voting delete.svg|18px|link=|]] {{{1|No}}}<noinclude> |}{{Documentation|Template:Table cell templates/doc}} </noinclude> 2kctejhsyl0jdf2v0jw438f6hd63bxj Template:No X 10 1541 4730 4729 2020-10-11T05:35:22Z Chrisb 1 1 revision imported 4729 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background:#F99;vertical-align:middle;text-align:{{{align|center}}};{{{style|}}}" class="table-no"|[[File:Dark Red x.svg|13px|link=|]] {{{1|No}}}<noinclude> |}{{Documentation|Template:Table cell templates/doc}} </noinclude> n9rljg94fh6pr0xs0tpe8el5cv4atp4 Template:No attempt 10 1542 4732 4731 2020-10-11T05:35:22Z Chrisb 1 1 revision imported 4731 wikitext text/x-wiki <noinclude> {| class="wikitable" |</noinclude>style="background: #ececec; color: black; vertical-align: middle; white-space: nowrap; text-align: {{{align|center}}}; {{{style|}}}" class="table-noAttempt" | {{{1|No attempt}}}<noinclude> |} {{documentation|Template:Table cell templates/doc}} </noinclude> h08gamnkxexguv3kpsr2oy1bdsz7ey8 Template:No epoch 10 1162 2556 2555 2020-09-29T19:17:56Z Chrisb 1 1 revision imported 2555 wikitext text/x-wiki <!--{{No epoch}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = No epoch | type = style | image = [[File:Local-time.svg|50px|alt=|link=]] | text = This {{{1|article}}} contains [[orbital elements]] but '''does not include an [[epoch (astronomy)|epoch]]''', or date when those elements, which typically vary over time, were correct. | fix = Please help by adding the epoch for the current data, or changing the orbital elements to ones with a known epoch. Unsourced materials may be challenged and removed. }}<noinclude> {{documentation}} </noinclude><includeonly> [[Category:Articles missing orbit epochs]] </includeonly> pxtwla3jya5h0hppk1oefnzeqn98nh6 Template:No footnotes 10 1119 2470 2469 2020-09-29T19:17:50Z Chrisb 1 1 revision imported 2469 wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = No footnotes | type = style | class = ambox-No_footnotes | style = {{{style|}}} | image = [[File:text document with red question mark.svg|50x40px|alt=|link=]] | issue = This {{#ifeq:{{yesno-no|{{{BLP|{{{blp|}}}}}}}}|yes|{{#if:{{{1|}}}|'''{{{1}}} [[Wikipedia:Biographies of living persons|about a living person]]'''|'''[[Wikipedia:Biographies of living persons|biography of a living person]]'''}}|{{{1|article}}}}} includes a [[Wikipedia:Citing sources|list of references]], related reading or [[Wikipedia:External links|external links]], '''but its sources remain unclear because it lacks [[Wikipedia:Citing sources#Inline citations|inline citations]]'''. | fix = {{#ifeq:{{yesno-no|{{{BLP|{{{blp|}}}}}}}}|yes|Contentious material about living persons that is unsourced or poorly sourced '''must be removed immediately''', especially if potentially [[Wikipedia:Libel|libelous]] or harmful.}} Please help to [[{{SITENAME}}:WikiProject Fact and Reference Check|improve]] this {{{1|article}}} by [[Wikipedia:When to cite|introducing]] more precise citations. | removalnotice = yes | date = {{{date|}}} | cat = Articles lacking in-text citations | all = All articles lacking in-text citations }}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using no footnotes with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:No footnotes]] with unknown parameter "_VALUE_"|ignoreblank=y| | 1 | blp | BLP | date | style}}}}<noinclude> {{Documentation}} <!-- Please add categories and interwikis to the /doc subpage, thanks --> </noinclude> 1tr1kmg96bj4z75me5c7wycc3umfto7 Template:No orbit for payload 10 1201 2634 2633 2020-09-29T19:18:02Z Chrisb 1 1 revision imported 2633 wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = {{{name|No orbit for payload}}} | small = {{#if:{{{small|}}}|left}} | type = content | image = [[File:Web-browser.svg|50x40px|alt=]] | issue = This [[rocket]] {{#if:{{{1|}}}|{{{1}}}|article}} contains [[payload]] capacity, but '''does not include [[orbital altitude]] or [[orbital inclination|inclination]]''', which greatly affects the capacity. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by adding the orbital altitude and inclination for the given payload. | removalnotice = yes | talk = {{{talk|}}} | date = {{{date|}}} | cat = Articles missing payload orbit parameters | all = All articles missing payload orbit parameters }} }}<noinclude> <!-- Please add categories to the /doc subpage, thanks --> {{Documentation}} </noinclude> hshygfisv6at60z8mey3c0yt17vu0j9 Template:No plot 10 1055 2342 2341 2020-09-29T19:17:41Z Chrisb 1 1 revision imported 2341 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{No plot}} begin-->{{Ambox | name = No plot | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | small = | image = [[File:Wiki letter w.svg|40px]] | issue = This {{#if:{{{1|}}}|{{{1}}}|article}} needs {{#if:{{{plural|}}}||a}} [[Wikipedia:How to write a plot summary|plot summar{{#if:{{{plural|}}}|ies|y}}]]. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} add {{#if:{{{plural|}}}|some|one}}] in your own words. | date = {{{date|}}} | cat = Wikipedia articles without plot summaries }}<!--{{No plot}} end--> }}<noinclude> {{Documentation}} </noinclude> ocfh4k4cp2iv6b94c8rldzfhherspv3 Template:No political diagram 10 1215 2662 2661 2020-09-29T19:18:04Z Chrisb 1 1 revision imported 2661 wikitext text/x-wiki {{namespace detect |talk = {{Ambox | name = No political diagram | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = content | style = {{{style|}}} | image = [[File:Åland lagting diag.svg|50x40px|link=]] | issue = This article about a political body does not contain an [[commons:Category:Election apportionment diagrams|election apportionment diagram]]. | fix = Please use this [https://tools.wmflabs.org/parliamentdiagram/parliamentinputform.html tool] to generate one. | removalnotice = no | cat = Articles needing electoral apportionment diagrams }} |other = <!-- Show a rather more prominent notice when this template is used on the wrong kind of pages: -->{{tmbox | type = content | image = [[Image:Emblem-important.svg|60px]] | text = '''It appears that this template ({{Tlx|No political diagram}}) is being used on a non-talk page. Please remove this instance of the template.''' This template is meant for use on [[Wikipedia:Talk page|talk pages]]. If you added this template, please remove this template and re-add it on [[Talk:{{PAGENAME}}|the article's talk page]]. If you did not add this template, please remove it from this page. }} | demospace = {{{demospace| <noinclude>talk</noinclude> }}} <!--For testing. And fall-back to "talk" when on this template page.--> }} <noinclude> {{Documentation}} [[Category:Article message templates]] [[Category:Politics and government templates]] </noinclude> l8q50zlnha9sxvhzy3mjeyj1blza6ov Template:No redirect 10 1326 2884 2883 2020-09-29T19:18:25Z Chrisb 1 1 revision imported 2883 wikitext text/x-wiki {{{{{|safesubst:}}}#if: {{{{{|safesubst:}}}#invoke:Redirect|isRedirect|{{{1}}}}} | <span class="plainlinks">[{{{{{|safesubst:}}}fullurl:{{{1}}}|redirect=no}} {{{2|{{{1}}}}}}]</span> | {{{{{|safesubst:}}}#if:{{{2|}}}|[[:{{{{{|safesubst:}}}FULLPAGENAME:{{{1}}}}}|{{{2}}}]]|[[:{{{{{|safesubst:}}}FULLPAGENAME:{{{1}}}}}]]}} }}<noinclude> {{documentation}} </noinclude> 88pp68yq9b5ureiktx42orgunm1ai9m Template:No result 10 1543 4734 4733 2020-10-11T05:35:22Z Chrisb 1 1 revision imported 4733 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #DFDFFF; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="noresult"|{{{1|No result}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> 7gzw933hwk3cvs32qknczp5e396s0au Template:No substitution 10 1653 4954 4953 2020-10-11T05:50:41Z Chrisb 1 1 revision imported 4953 wikitext text/x-wiki <noinclude>{{User:RMCD bot/subject notice|1=?|2=Template talk:No substitution#Requested move 24 July 2020 }} </noinclude>{{Ombox |type=notice |text='''This template should {{em|not}} be [[Wikipedia:Substitution|substituted]].''' {{{1|}}} }}<noinclude> {{Documentation}} </noinclude> 5g37i8bpxc4l6kjqugxayf9mc1ehjff Template:Nobr 10 1617 4882 4881 2020-10-11T05:39:03Z Chrisb 1 1 revision imported 4881 wikitext text/x-wiki #REDIRECT [[Template:Nowrap]] {{R from template shortcut}} h1jzp0ur4wqedz23vagbx5pgpbrkaw7 Template:Nocontest 10 1544 4736 4735 2020-10-11T05:35:22Z Chrisb 1 1 revision imported 4735 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background-color: #C5D2EA; text-align: {{{align|center}}}; {{{style|text-transform: capitalize;}}}" class="table-cast"|{{{1|}}}<noinclude> |} {{documentation|Template:Table cell templates/doc}} </noinclude> no7fwlf9mmn7a5l0s0juq350o39a40q Template:Noleak 10 1056 2344 2343 2020-09-29T19:17:41Z Chrisb 1 1 revision imported 2343 wikitext text/x-wiki <!--{{Noleak}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Noleak | type = delete | text = It has been identified that this article has had information about a [[music download]] of the album leak added to it. In accordance with the [[WP:ALBUM|WikiProject Albums]] guidelines, such a date is non-notable information and has been removed. See [[WP:ALBUMLEAK]] for further information.}}<!--{{Noleak}} end--><noinclude> {{documentation}} </noinclude> dxkot4tmj59neqpvsv0txcfhr33l3mp Template:Nom 10 1545 4738 4737 2020-10-11T05:35:22Z Chrisb 1 1 revision imported 4737 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #FDD; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="no table-no2"|{{{1|Nominated}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> a7ppwmp1z0ocysf2mbfdhhqiv0zr7go Template:Non-album single 10 1546 4740 4739 2020-10-11T05:35:22Z Chrisb 1 1 revision imported 4739 wikitext text/x-wiki <includeonly>{{n/a|non-album single}}</includeonly> <noinclude>{{Documentation}}</noinclude> 5sga149hcddgyw3au5jkw2orab98lw9 Template:Non-free 10 1253 2738 2737 2020-09-29T19:18:09Z Chrisb 1 1 revision imported 2737 wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = Non-free | small = {{{small|}}} | type = content | image = [[File:Copyright-problem.svg|50x40px|link=|alt=]] | class = ambox-non-free | sect = {{{1|}}} | issue = '''may contain excessive or improper use of [[Wikipedia:Copyrights|non-free]] material.''' | fix = Please review the use of non-free content according to [[Wikipedia:Non-free content criteria|policy]] and [[Wikipedia:Non-free content|guidelines]] and correct any violations. {{#if:{{{talk|}}}||The [[{{TALKPAGENAME}}|talk page]] may have details.}} | talk = {{{talk|}}} | removalnotice = yes | date = {{{date|}}} | cat = Articles with improper non-free content | all = All articles with improper non-free content }} }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> qadagj8pcqwhcmfj6xt7x79j09qqvv2 Template:Non-free-overuse 10 1057 2346 2345 2020-09-29T19:17:41Z Chrisb 1 1 revision imported 2345 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <noinclude>{{Confuse|Template:Nonfree}}</noinclude><!--{{Non-free}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Non-free-overuse | type = content | class = ambox-non-free | image = [[Image:Copyright-problem.svg|50x40px|alt=|link=]] | issue = This {{{1|article}}} '''contains excessive or improper use of [[Wikipedia:Copyrights|copyrighted]] material.''' | fix = Please review the use of non-free media according to [[Wikipedia:Non-free content criteria|policy]] and [[Wikipedia:Non-free content|guidelines]] and correct any violations. The [[{{TALKPAGENAME}}|talk page]] may have details. {{#if:{{{date|}}}|{{small|1=''({{{date}}})''}}}} }}{{DMCA|Articles with improper non-free content|from|{{{date|}}}|All articles with improper non-free content}}<!--{{Non-free}} end--> }}<noinclude> {{Documentation}} </noinclude> f3fnsfvzdhabta3vxpss0wn1ijuq272 Template:Non-free-vio 10 1058 2348 2347 2020-09-29T19:17:41Z Chrisb 1 1 revision imported 2347 wikitext text/x-wiki <noinclude>{{confuse|Template:Non-free}}</noinclude><!--{{Non-free|{{{1}}}|date={{{date}}}}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Non-free-vio | type = content | image = [[Image:Copyright-problem.svg|80x60px|alt=|link=]] | issue = This {{{1|article}}} '''contains excessive or improper use of [[Wikipedia:Copyrights|copyrighted]] material.''' Please review the use of non-free media according to [[Wikipedia:Non-free content criteria|policy]] and [[Wikipedia:Non-free content|guidelines]] and correct any violations. |fix =Violating material may be removed at any time. The [[{{TALKPAGENAME}}|talk page]] may have details. {{#if:{{{date|}}}|{{small|''({{{date}}})''}}}} }}<includeonly>{{#if:{{{date|}}}|[[Category:Articles with improper non-free content from {{{date}}}]]}}[[Category:Articles with improper non-free content]]</includeonly><!-- end non-free --><noinclude> {{Documentation}} </noinclude> 3jzv29ehi2lzm0iyr90pyafg4sa08r4 Template:Nonfree 10 1547 4742 4741 2020-10-11T05:35:23Z Chrisb 1 1 revision imported 4741 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #F9D; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="nonfree table-nonfree"|{{{1|Non-free}}}<noinclude> |} {{confuse|Template:Non-free}} {{Documentation|Template:Table cell templates/doc}} </noinclude> bceyrd7bqt7vi7gec5m0lmu9iypp33p Template:Nonpartisan 10 1548 4744 4743 2020-10-11T05:35:23Z Chrisb 1 1 revision imported 4743 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #FFFFFF; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="partial table-partial"|{{{1|Nonpartisan}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} <!-- categories --> </noinclude> 39vuuyv8o236h0sqlodej0g1ensrqh2 Template:Normalwraplink 10 1454 3212 3211 2020-10-11T01:32:04Z Chrisb 1 1 revision imported 3211 wikitext text/x-wiki <span class="wraplinks">[[{{{1}}}|{{{2|{{{1}}}}}}]]</span><noinclude> {{Documentation}} </noinclude> eflclni0qb32qjzm0vixibjw5j8yqv8 Template:Nosubst 10 1654 4956 4955 2020-10-11T05:50:41Z Chrisb 1 1 revision imported 4955 wikitext text/x-wiki #REDIRECT [[Template:No substitution]] {{Redirect category shell| {{R from move}} }} 0au2yoidgltyhwaxf9ibudfi90znszl Template:Not English 10 1247 2726 2725 2020-09-29T19:18:08Z Chrisb 1 1 revision imported 2725 wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||listed=no|$B={{#ifeq:{{{ucfirst:{{{1}}}}}|English|<big>'''{{Error|Error: cannot translate from English to English.}}'''</big> |{{Ambox | name = Not English | type = content | class = ambox-not_English | image = [[File:Translation to english arrow.svg|50px|Translation to english arrow icon]] | text = '''This {{{2|{{#if:{{NAMESPACE}}|page|article}}}}} needs [[Wikipedia:translation|translation]] {{#if: {{Mw lang|fn=is_name|{{{1}}}}} | from {{ucfirst:{{{1}}}}} to | into }} English.''' <br /> This {{{2|{{#if:{{NAMESPACE}}|page|article}}}}} is written in {{#if: {{Mw lang|fn=is_name|{{{1}}}}} | {{ucfirst:{{{1}}}}} | a language other than English }}. If it is intended for readers from the {{#if:{{{1|}}}|{{ucfirst:{{{1}}}}} language community|community of that language}}, it should be contributed to the {{#if: {{Mw lang|fn=is_name|{{{1}}}}} | [[:{{lang2iso|{{{1}}}}}:{{!}}{{ucfirst:{{{1}}}}} Wikipedia]] | Wikipedia in that language }}. See the [[meta:List of Wikipedias|list of Wikipedias]].{{#if:{{NAMESPACE}}|| Please see '''[[Wikipedia:Pages needing translation into English#{{FULLPAGENAME}}|this {{#if:{{NAMESPACE}}|page|article}}'s entry]]''' on [[Wikipedia:Pages needing translation into English|Pages needing translation into English]] for discussion. If the {{{2|article}}} is not [{{fullurl:{{FULLPAGENAME}}|action=edit}} rewritten in English] {{#ifeq:{{{2|}}}|section|it may be deleted|within the next two weeks it will be [[Wikipedia:{{#if:{{NAMESPACE}}|Miscellany for deletion|Articles for deletion}}|listed for deletion]] and/or moved to the {{#if: {{{1|}}} | {{#if: {{Mw lang|fn=is_name|{{{1}}}}} | [[:{{lang2iso|{{{1}}}}}:{{!}}{{ucfirst:{{{1}}}}} Wikipedia]] | {{ucfirst:{{{1}}}}} Wikipedia }} | Wikipedia in its current language }}}}.}} {{#if: {{Mw lang|fn=is_name|{{{1}}}}} | ----If you want to assess this article, you may want to check its [http://translate.google.com/translate?u={{fullurl:{{FULLPAGENAME}}}}&sl={{lang2iso|{{{1|English}}}}}&tl=en&hl=en Google translation]. However, '''please do not add an automated translation to the article''', since these are generally of very poor quality.}} {{#ifeq: {{yesno|{{{listed|no}}}}}|yes||{{#if:{{NAMESPACE}}||{{pnt notice|{{{1|unknown}}}}}}}}} | cat = {{#ifeq:{{lc:{{{category|}}}}}|no||{{{category|Wikipedia articles needing translation}}}}} }}}}<includeonly>{{main other|{{NOINDEX}}}}</includeonly>}}<noinclude> {{Documentation}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --> </noinclude> o5gbrtkealoanmw2ahvxrywekv9rkn7 Template:Not yet 10 1549 4746 4745 2020-10-11T05:35:23Z Chrisb 1 1 revision imported 4745 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background:#ffd;vertical-align:middle;text-align:{{{align|center}}};{{{style|}}}" | {{{1|Not Yet}}}<noinclude> |} {{documentation|Template:Table cell templates/doc}} </noinclude> ho2thbjxyyxm7jo7opts01bewbf5mt4 Template:Notability 10 1120 2472 2471 2020-09-29T19:17:50Z Chrisb 1 1 revision imported 2471 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Notability}} begin-->{{Ambox | name = Notability | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | class = ambox-Notability | removalnotice = yes | issue = The topic of this article '''may not meet Wikipedia's {{#switch: {{lc:{{#invoke:String|replace|{{{1}}}|s$|||false}}}}<!--strip trailing "s"--> | notability = [[Wikipedia:GNG|general notability guideline]] | astro | astronomical object = [[Wikipedia:Notability (astronomical objects)|notability guideline for astronomical objects]] | notability (people) | bio | biography | biographie<noinclude><!--trailing "s" on input is stripped, this line matches "biographies"--></noinclude> = [[Wikipedia:Notability (people)|notability guideline for biographies]] | prof | notability (academics) | academic = [[Wikipedia:Notability (academics)|notability guideline for academics]] | notability (books) | book = [[Wikipedia:Notability (books)|notability guideline for books]] | notability (events) | event = [[Wikipedia:Notability (events)|notability guideline for events]] | notability (films) | movie | film = [[Wikipedia:Notability (films)|notability guideline for films]] | notability (television) | television | TV | tv = [[Wikipedia:TVSERIES|notability guideline for television]] | notability (companies and corporations) | institution | company | companie<noinclude><!--trailing "s" on input is stripped, this line matches "companies"--></noinclude> | org | organisation | corp | organization = [[Wikipedia:Notability (organizations and companies)|notability guidelines for companies and organizations]] | product = [[Wikipedia:Notability (organizations and companies)#Products and services|notability guidelines for products and services]] | notability (fiction) | fict | fiction = [[Wikipedia:Notability|general notability guideline]] | list = [[Wikipedia:Notability#Stand-alone lists|notability guideline for stand-alone lists]] | geo | geographic | geography | place = [[Wikipedia:Notability (geographic features)|notability guideline for geographic features]] | notability (music) | music = [[Wikipedia:Notability (music)|notability guideline for music]] | avoid neologism | neologism = [[Wikipedia:Avoid neologisms|notability guideline for neologisms]] | sport = [[Wikipedia:Notability (sports)|notability guideline for sports and athletics]] | notability (numbers) | number = [[Wikipedia:Notability (numbers)|notability guideline for numbers]] | notability (web) | web = [[Wikipedia:Notability (web)|notability guideline for web content]] | #default = [[Wikipedia:Notability|general notability guideline]] }}'''. | fix = Please help to establish notability by citing [[Wikipedia:Reliable sources|reliable secondary sources]] that are [[Wikipedia:Identifying and using independent sources|independent]] of the topic and provide significant coverage of it beyond a mere trivial mention. If notability cannot be established, the article is likely to be [[Wikipedia:Merging|merged]], [[Wikipedia:Redirect|redirected]], or [[Wikipedia:Deletion policy|deleted]].<br /><small>{{find sources mainspace}}</small> | date = {{{date|}}} | cat = Articles with topics of unclear notability | all = All articles with topics of unclear notability | all2 = {{#switch: {{lc:{{{1}}}}} | astro = Astronomical object articles with topics of unclear notability | notability (people) | bio | biography | biographies = Biography articles with topics of unclear notability | prof | notability (academics) | academics = Academics articles with topics of unclear notability | notability (books) | book | books = Book articles with topics of unclear notability | notability (events) | event | events = Event articles with topics of unclear notability | notability (films) | film | movie | movies | films = Film articles with topics of unclear notability | notability (television) | television | TV | tv = Television articles with topics of unclear notability | notability (companies and corporations) | corp | companies = Company articles with topics of unclear notability | institutions | org | organisations | organizations = Organization articles with topics of unclear notability | product | products = Products articles with topics of unclear notability | notability (fiction) | fict | fiction = Fiction articles with topics of unclear notability | list | lists = Lists with topics of unclear notability | geo | geographic | geography | place | places = Geography articles with topics of unclear notability | notability (music) | music = Music articles with topics of unclear notability | avoid neologisms | neologisms = Neologisms articles with topics of unclear notability | sport | sports = Sport articles with topics of unclear notability | notability (numbers) | numbers = Number articles with topics of unclear notability | notability (web) | web = Web articles with topics of unclear notability }} }}<!--{{Notability}} end--> }}<noinclude> {{Documentation}} </noinclude> 2r25kmg81en71tb99856frtbfjdqkn3 Template:Nothaweng 10 1059 2350 2349 2020-09-29T19:17:42Z Chrisb 1 1 revision imported 2349 wikitext text/x-wiki <!--{{Nothaweng}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Nothaweng | image = [[Image:Hawaii_islands.jpg|50x40px]] | text = This article '''may contain [[Hawaiian language]] words and proper names that omit or make improper use of [[ʻokina]] and [[kahakō]]'''. Please edit the article to reflect standard [[Hawaiian language#Orthography (writing system)|Hawaiian orthography]]. }}<!--{{Nothaweng}} end--><noinclude> </noinclude> ega2fc2m87vqwdvlsuasja6tdzifd8p Template:Notice 10 1264 2760 2759 2020-09-29T19:18:11Z Chrisb 1 1 revision imported 2759 wikitext text/x-wiki {{Mbox | name = Notice | demospace = {{{demospace|}}} | style = {{#if:{{{style|}}} |{{#if:{{{small|}}}||width:80%;}} {{{style}}} }} | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = notice | image = {{#if:{{{image|}}} |[[File:{{{image}}}|40px|Notice]]}} | small = {{{small|}}} | smallimage = {{#if:{{{image|}}} |[[File:{{{image}}}|30px|Notice]]}} | imageright = {{#if:{{{imageright|}}} |{{{imageright}}} |{{#if:{{{shortcut|{{{shortcut1|}}}}}} |{{Ombox/shortcut|{{{shortcut|{{{shortcut1|}}}}}}|{{{shortcut2|}}}|{{{shortcut3|}}}|{{{shortcut4|}}}|{{{shortcut5|}}}}}}} }} | textstyle = {{{textstyle|text-align: {{#if:{{{center|}}}|center|{{{align|left}}}}};}}} | text = {{#if:{{{header|{{{heading|{{{title|}}}}}}}}} |<div style="{{{headstyle|text-align: {{#if:{{{center|}}}|center|left}};}}}">'''{{{header|{{{heading|{{{title|}}}}}}}}}'''</div>}}<!-- -->{{{text|{{{content|{{{reason|{{{1}}}}}}}}}}}} }}<noinclude> {{Documentation}} </noinclude> etnai90pwmwvjm60vm69f5gjdnc8xy4 Template:Nowrap 10 1550 4748 4747 2020-10-11T05:35:23Z Chrisb 1 1 revision imported 4747 wikitext text/x-wiki <span class="nowrap">{{{1}}}</span><noinclude> {{documentation}} <!-- Categories go on the /doc page; interwikis go to Wikidata. --> </noinclude> avb5tcymgupik1ikutqclidkj9tnitx Template:Ns has subpages 10 1618 4884 4883 2020-10-11T05:39:03Z Chrisb 1 1 revision imported 4883 wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:Ns has subpages|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 0pg457y46td6p53rdt8tyc76jeg9pa8 Template:Obituary 10 1061 2354 2353 2020-09-29T19:17:42Z Chrisb 1 1 revision imported 2353 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Obituary}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Obituary | type = content | issue = This {{{1|article}}} '''reads like {{#ifeq:{{#invoke:string|replace|{{{tone|obituary}}}|^[AaEeIiOoUu].*|1|plain=false}}|1|an|a}} [[{{{tone|obituary}}}]]'''. [[Wikipedia:What Wikipedia is not#MEMORIAL|Wikipedia is not a memorial site]] and articles should have a [[Wikipedia:Neutral point of view|neutral point of view]]. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} edit it] to [[Wikipedia:NPOV tutorial|help achieve neutrality]], or discuss changes on the [[{{TALKPAGENAME}}|talk page]]. | date = {{{date|}}} | removalnotice = yes }}{{DMCA|Articles needing POV-check|from|{{{date|}}}}}<!--{{Obituary}} end--> }}<noinclude> {{Documentation}} </noinclude> cvb2ka4k0okxb0aqzwwig87v67spnaw Template:Off topic 10 1205 2642 2641 2020-09-29T19:18:03Z Chrisb 1 1 revision imported 2641 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Off topic}} begin-->{{Ambox | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | issue = This section '''may [[Wikipedia:Guide to writing better articles#Stay on topic|stray from the topic]] of the article'''{{#if:{{{1|}}}|&nbsp;into the topic of another article, ''[[{{{1}}}]]''}}. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this section] or discuss this issue on the [[{{TALKPAGENAME}}#{{{2|}}}|talk page]]. | date = {{{date|}}} | cat = Wikipedia articles that may have off-topic sections | all = All articles that may have off-topic sections | name = Off topic }}<!--{{Off topic}} end--> }}<noinclude> {{Documentation}} </noinclude> e0d3w70fp4x3dey5ceroqesmmuagnyf Template:Okay 10 1551 4750 4749 2020-10-11T05:35:23Z Chrisb 1 1 revision imported 4749 wikitext text/x-wiki <noinclude> {| class="wikitable" |</noinclude>style="background: #FFD; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="partial table-partial"| {{{1|Neutral}}}<noinclude> |} {{documentation|Template:Table cell templates/doc}} </noinclude> nwqfatr5k4pv84ct4d4zfubuukcyj8w Template:Ombox 10 876 1984 1983 2020-09-29T19:15:36Z Chrisb 1 1 revision imported 1983 wikitext text/x-wiki {{#invoke:Message box|ombox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 1o93yrjvq6v2ylug2k0uaaltljurje2 Template:Ombox/doc 10 1327 2886 2885 2020-09-29T19:18:26Z Chrisb 1 1 revision imported 2885 wikitext text/x-wiki {{Documentation subpage}} {{High-use| 711490 }} {{used in system}} {{Lua|Module:Message box}} <!-- PLEASE ADD CATEGORIES WHERE INDICATED AT THE BOTTOM OF THIS PAGE --> {{Mbox templates (small)}} This is the {{tl|Ombox}} (['''O''']ther pages ['''m''']essage ['''box''']) metatemplate. It is used to build message box templates for pages of the types User, Wikipedia, MediaWiki, Template, Help, Portal and any new future namespaces; i.e. for page types not covered by {{tl|Ambox}}, {{tl|Tmbox}}, {{tl|Imbox}} or {{tl|Cmbox}}. Thus, it should ''not'' be used for boxes for articles, talk pages, image pages or category pages. This template works almost exactly like {{tl|Ambox}} and uses the same parameters. === Introduction === {{anchor|We are deploying!|Intro}} As noted above, this template should be used for message boxes that are not articles, talk pages, image pages or category pages. Some message boxes for other pages may incorrectly use one of those four mentioned. Feel free to convert any message boxes used on "other pages" to use this meta-template. If you find any tricky cases then list them on the talk page of this template and you'll get help. When this template is used to build other pages message boxes those boxes should contain explanatory texts just like before. (The same texts as before or new improved texts.) If there are more specific images in the boxes or you know a better image, then use them instead of the default images shown here. === Usage === Simple usage example: <pre> {{ombox | text = Some text. }} </pre> {{ombox | text = Some text.}} {{clear}} Complex example: <pre> {{ombox | type = style | image = [[File:Emblem-question-yellow.svg|40px]] | style = width: 400px; | textstyle = color: red; font-weight: bold; font-style: italic; | text = The message body text. }} </pre> {{ombox | type = style | image = [[File:Emblem-question-yellow.svg|40px]] | style = width: 400px; | textstyle = color: red; font-weight: bold; font-style: italic; | text = The message body text. }} {{clear}} === Other pages message box types === The following examples use different '''type''' parameters but use no image parameters; thus, they use the default images for each type. {{ombox | type = speedy | text = type=<u>speedy</u> – Speedy deletion templates. }} {{ombox | type = delete | text = type=<u>delete</u> – Deletion templates. }} {{ombox | type = content | text = type=<u>content</u> – Major warnings and problems, such as {{tl|high-use}}. }} {{ombox | type = style | text = type=<u>style</u> – Minor warnings and problems. {{tl|Intricate template}} should perhaps use this type. }} {{ombox | type = notice | text = type=<u>notice</u> – Notices and messages of any kind, both permanent and temporary. Such as {{tl|guideline}} and {{tl|Wikipedia how-to}}. }} {{ombox | type = move | text = type=<u>move</u> – Merge, split, rename and transwiki messages and proposals. }} {{ombox | type = protection | text = type=<u>protection</u> – Protection templates such as {{tl|pp}} when shown on "other pages". }} === Examples === Some examples using the "notice" style: {{ombox | text = No type and no image given ('''default''') }} {{ombox | image = none | text = No type and '''image=none''' – No image is used and the '''text''' uses the whole message box area. }} {{ombox | image = [[File:Gnome globe current event.svg|42px]] | imageright = [[File:Nuvola apps bookcase.svg|40px]] | text = image = <nowiki>[[File:Gnome globe current event.svg|42px]]</nowiki> <br> imageright = <nowiki>[[File:Nuvola apps bookcase.svg|40px]]</nowiki> }} {{ombox | type = notice | image = [[File:Blue check.svg|30px]] | imageright = {{shortcut|WP:SHORT}} | text = '''This page documents an English Wikipedia [[Wikipedia:Policies and guidelines|guideline]].''' It is a generally accepted standard that editors should follow, though it should be treated with [[Wikipedia:Use common sense|common sense]] and the [[Wikipedia:Ignore all rules|occasional exception]]. When editing this page, please ensure that your revision reflects [[Wikipedia:Consensus|consensus]]. When in doubt, discuss on the [[{{TALKPAGENAME}}|talk page]]. }} {{ombox | type = notice | image = [[File:Nutshell.png|30px]] | text = '''This page in a nutshell:''' This template is used to build message boxes for all pages that are ''not'' articles, talk pages, image pages or category pages. }} === Parameters === List of all parameters: <pre> {{ombox | name = name of the template | type = speedy / delete / content / style / notice / move / protection | image = none / [[File:Some image.svg|40px]] | imageright = [[File:Some image.svg|40px]] | style = CSS values | textstyle = CSS values | plainlinks = no | text = The message body text. | small = {{{small|}}} / yes | smallimage = none / [[File:Some image.svg|30px]] | smallimageright = none / [[File:Some image.svg|30px]] | smalltext = A shorter message body text. }} </pre> '''name''' :(Optional) Name of the template. This adds a CSS class with name <code>box-''name''</code> to the HTML element, for use by bots or scripts. '''type''' :If no '''type''' parameter is given the template defaults to type '''notice'''. That means it gets a gray border. '''image''' :'''No parameter''' = If no '''image''' parameter is given the template uses a default image. Which default image it uses depends on the '''type''' parameter. :'''An image''' = Should be an image with usual wiki notation. 40px - 50px width are usually about right depending on the image height to width ratio. (But the message box can handle images of any size.) For example: ::<code><nowiki>image = [[File:Crystal package settings.png|40px]]</nowiki></code> :'''none''' = Means that no image is used. '''imageright''' :'''No parameter''' = If no '''imageright''' parameter is given then no image is shown on the right side. :'''An image''' = Should be an image with usual wiki notation. 40px - 50px width are usually about right depending on the image height to width ratio. (But the message box can handle images of any size.) For example: ::<code><nowiki>imageright = [[File:Nuvola apps bookcase.png|40px]]</nowiki></code> :'''Anything''' = Any other object that you want to show on the right side. '''style''' :Optional [[Cascading Style Sheets|CSS]] values used by the entire message box table. Without quotation marks <code>" "</code> but with the ending semicolons <code>;</code>. For example: ::<code>style = margin-bottom: 0.5em;</code> '''textstyle''' :Optional [[Cascading Style Sheets|CSS]] values used by the text cell. For example: ::<code>textstyle = text-align: center;</code> '''plainlinks''' :Normally on Wikipedia, external links have an arrow icon next to them, like this: [http://www.example.com Example.com]. However, in message boxes, the arrow icon is suppressed by default, like this: <span class="plainlinks">[http://www.example.com Example.com]</span>. To get the normal style of external link with the arrow icon, use {{para|plainlinks|no}}. '''text''' :The message body text. ==== The small parameters ==== {{ombox | small = yes | text = small = yes }} {{ombox | type = style | small = yes | text = type = style <br> small = yes }} '''small''' :'''yes''' = Makes it a smaller right floating message box. This also makes the default images smaller. Note that any data fed to the '''smallimage''', '''smallimageright''' and '''smalltext''' parameters is only used if "small=yes". To make it so your template also understands the small parameter you can use this code: ::<code><nowiki>small = {{{small|}}}</nowiki></code> {{ombox | small = yes | image = [[File:Replacement filing cabinet.svg|50px]] | smallimage = [[File:Replacement filing cabinet.svg|32px]] | text = small = yes <br> image = <nowiki>[[File:Replacement filing cabinet.svg|50px]]</nowiki> <br> smallimage = <nowiki>[[File:Replacement filing cabinet.svg|32px]]</nowiki> }} '''smallimage''' :'''No parameter''' = If no '''smallimage''' parameter is given then this template falls back to use the '''image''' parameter. If the '''image''' parameter also is empty then a small default image is used. :'''An image''' = Should be an image with usual wiki notation. 30px width is usually about right. For example: ::<code><nowiki>smallimage = [[File:Replacement filing cabinet.svg|30px]]</nowiki></code> :'''none''' = Means that no image is used. This overrides any image fed to '''image''', when "small=yes". {{ombox | small = yes | imageright = [[File:Nuvola apps bookcase.png|50px]] | smallimageright = none | text = small = yes <br> imageright = <nowiki>[[File:Nuvola apps bookcase.png|50px]]</nowiki> <br> smallimageright = none }} '''smallimageright''' :'''No parameter''' = If no '''smallimageright''' parameter is given then this template falls back to use the '''imageright''' parameter. If the '''imageright''' parameter also is empty then no image is shown on the right side. :'''An image''' = Should be an image with usual wiki notation. 30px width is usually about right. For example: ::<code><nowiki>smallimageright = [[File:Nuvola apps bookcase.png|30px]]</nowiki></code> :'''Anything''' = Any other object that you want to show on the right side. :'''none''' = Means that no right side image is used. This overrides any image fed to '''imageright''', when "small=yes". '''smalltext''' :A shorter version of the message body text. If no '''smalltext''' parameter is given then this template falls back to use the '''text''' parameter. === Technical details === If you need to use special characters in the text parameter then you need to escape them like this: <pre> {{ombox | text = <div> Equal sign = and a start and end brace { } work fine as they are. But here is a pipe {{!}} and two end braces &lt;nowiki>}}&lt;/nowiki>. And now a pipe and end braces &lt;nowiki>|}}&lt;/nowiki>. </div> }} </pre> {{ombox | text = <div> Equal sign = and a start and end brace { } work fine as they are. But here is a pipe {{!}} and two end braces <nowiki>}}</nowiki>. And now a pipe and end braces <nowiki>|}}</nowiki>. </div> }} This template uses the ombox CSS classes in [[MediaWiki:Common.css]] for most of its looks, thus it is fully skinnable. The default images for this meta-template are in png format instead of svg format. The main reason is that some older web browsers have trouble with the transparent background that MediaWiki renders for svg images. The png images here have hand optimised transparent background colour so they look good in all browsers. Note that svg icons only look somewhat bad in the old browsers, thus such hand optimisation is only worth the trouble for very widely used icons. For more technical details see the [[Template talk:Ombox|talk page]]. Since this template works almost exactly like {{tl|ambox}}, {{tl|tmbox}}, {{tl|imbox}} and {{tl|cmbox}} their talk pages and related pages might also contain more details. ===See also=== {{Mbox templates see also}} <includeonly>{{Sandbox other| | <!-- CATEGORIES BELOW THIS LINE, PLEASE: --> [[Category:Mbox and messagebox templates]] [[Category:Exclude in print]] }}</includeonly> qubl8w8x0mp5jhtz576u5saz38hti3b Template:One source 10 942 2116 2115 2020-09-29T19:17:25Z Chrisb 1 1 revision imported 2115 wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = One source | type = content | class = ambox-one_source | image = [[File:Question book-new.svg|50x40px]] | issue = {{{text|This {{{1|article}}} '''relies largely or entirely on a single [[Wikipedia:Reliable sources|source]]'''.}}} | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by introducing [[Wikipedia:Citing sources|citations]] to additional sources.<br /><small>{{find sources mainspace}}</small> | talk = {{{talk|#}}} | date = {{{date|}}} | cat = Articles needing additional references | all = All articles needing additional references }} }}<noinclude> {{Documentation}} </noinclude> pz004apjc82681sjlk7petx2844ivpn Template:Only primary sources 10 1241 2714 2713 2020-09-29T19:18:07Z Chrisb 1 1 revision imported 2713 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = Only primary sources | type = content | image = [[File:Question book-new.svg|45px|link=]] | issue = This {{#ifeq: {{{1|}}} | section | section | {{#ifeq: {{NAMESPACE}} | | article | page}} }} '''only references primary sources'''. | fix = Please help improve this by adding [[WP:No original research#Primary, secondary, and tertiary sources|secondary or tertiary sources]].<br/><small>{{find sources mainspace}}</small> | date = {{{date|}}} | removalnotice = yes | cat = Articles lacking reliable references }} }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> odhxlnjiljs2956qr3jww2679lq5vlr Template:Operational 10 1552 4752 4751 2020-10-11T05:35:23Z Chrisb 1 1 revision imported 4751 wikitext text/x-wiki <noinclude> {| class="wikitable" |</noinclude>style="background: #aaccff; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-success" | {{{1|Operational}}}<noinclude> |} {{documentation|Template:Table cell templates/doc}} </noinclude> gox70asf3sev7e3k83jvio753skewic Template:Optional 10 1553 4754 4753 2020-10-11T05:35:23Z Chrisb 1 1 revision imported 4753 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #ddffdd; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}"|{{{1|Optional}}}<noinclude> |} {{documentation|Template:Table cell templates/doc}} </noinclude> 1dkkptn2jwnssn9zzn3iwa1266aoxgr Template:Original research 10 926 2084 2083 2020-09-29T19:17:23Z Chrisb 1 1 revision imported 2083 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = Original research | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | class = ambox-Original_research | small = {{{small|}}} | issue = This {{{part|{{{1|article}}}}}} '''possibly contains [[Wikipedia:No original research|original research]]'''. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it] by [[WP:Verifiability|verifying]] the claims made and adding [[Wikipedia:Citing sources#Inline citations|inline citations]]. Statements consisting only of original research should be removed. | removalnotice = yes | talk = {{{discuss|}}} | cat = Articles that may contain original research | all = All articles that may contain original research | date = {{{date|}}} }} }}<noinclude> {{Documentation}} </noinclude> h4rb2enm9mr8ab9ar5ujrlfx4q761yv Template:Orphan 10 944 2120 2119 2020-09-29T19:17:26Z Chrisb 1 1 revision imported 2119 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B={{draft other||{{Ambox | name = Orphan | type = style<!--Style issues, such as {{cleanup}} and {{underlinked}}--> | class = ambox-Orphan | style = {{#switch: {{{date|}}} | {{Monthyear}} = | {{Monthyear-1}} = | display: none}}<!--Optional CSS value, specifies the style used by the entire message box table--> | image = [[File:Wiki letter w.svg|50x40px]] | all = All orphaned articles | sect = article | text = '''is an [[Wikipedia:Orphan|orphan]], as no other articles [{{fullurl:Special:Whatlinkshere|target={{PAGENAMEE}}&namespace=0}} link to it]'''. Please [[Help:Link|introduce links]] to this page from <span class="plainlinks">[//en.wikipedia.org/w/index.php?title=Special%3ASearch&redirs=1&search={{PAGENAMEU}}&fulltext=Search&ns0=1&title=Special%3ASearch&advanced=1&fulltext={{PAGENAMEU}} related articles]</span>; try the [//edwardbetts.com/find_link?q={{PAGENAMEE}} Find link tool] for suggestions. | cat = {{#if:{{{att|}}}|Attempted de-orphan|Orphaned articles}} | date = {{#if:{{{att|}}}| {{{att}}} | {{{date|}}} }} }} }} }}<noinclude> <!-- Add categories and interwikis to the /doc subpage, not here! --> {{documentation}} </noinclude> 3bekp6vwv2jw1zisvuvy75hb2qwzur1 Template:Over-coverage 10 1254 2740 2739 2020-09-29T19:18:09Z Chrisb 1 1 revision imported 2739 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Over-coverage}} begin-->{{Ambox | subst = <includeonly>{{subst:substcheck}}</includeonly> | name = Over-coverage | type = content | class = ambox-over_coverage | image = [[File:ambox_globe_content.svg|50x40px|Globe icon|link=]] | issue = The examples and perspective in this {{{part|{{{1|article or section}}}}}} '''might have an extensive [[Wikipedia:WikiProject Countering systemic bias|bias]] or disproportional coverage''' towards {{{region|one or more specific regions}}}. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] or discuss the issue on the [[{{TALKPAGENAME}}|talk page]]. | removalnotice = yes | date = {{{date|}}} | cat = Articles with disproportional geographic scope }}<!--{{Over-coverage}} end--> }}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 8uxrm2i9rv5qsbw000yyvux593tvg48 Template:Over-quotation 10 1069 2370 2369 2020-09-29T19:17:42Z Chrisb 1 1 revision imported 2369 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Over-quotation}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Over-quotation | type = style | issue = This {{#if:{{{section|}}}|section|{{{1|article}}}}} '''contains [[Wikipedia:Manual_of_Style#Quotations|{{#if:{{{many|}}}|too many|{{#if:{{{lengthy|}}}|overly lengthy|{{#if:{{{both|}}}|too many and overly lengthy|too many or overly lengthy}}}}}} quotations]] for an encyclopedic entry'''. | fix = Please [[Wikipedia:Writing better articles|help improve the article]] by presenting facts as a [[Wikipedia:Neutral point of view|neutrally worded]] summary with [[Wikipedia: Citing sources|appropriate citations]]. Consider transferring direct quotations to [[Wikiquote]]. | date = {{{date|}}} }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Over-quotation}} end--> }}<noinclude> {{Documentation}} <!-- PLACE LANGUAGES AND CATS ON /doc PAGE, NOT HERE --></noinclude> 6yzkck8m41o1x6e8n7q17fzz1utu1uu Template:Overcoloured 10 1070 6772 2372 2023-02-27T02:15:33Z LastCelebration 905 Remove references to Wikipedia and its pages in imported templates across the web's wikis 6772 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Overcoloured}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Overcoloured | type = style | image = [[File:Accessibility template icon 2.svg|40px|Accessibility icon]] | issue = This {{{1|article}}} '''may overuse or misuse colo{{#if:{{{US|}}}||u}}r, making it hard to understand for colo{{#if:{{{US|}}}||u}}r-blind users'''{{ #if:{{{reason|}}} |. {{{reason}}} }}. | fix = Please remove or fix instances of distracting or hard-to-read colo{{#if:{{{US|}}}||u}}rs or remove colo{{#if:{{{US|}}}||u}}red links that may impede user ability to distinguish links from regular text, or colo{{#if:{{{US|}}}||u}}r links for purely aesthetic reasons. | date = {{{date|}}} }}{{DMCA|{{SITENAME}} articles with colour accessibility problems}}<!--{{Overcoloured}} end--> }}<noinclude>{{Documentation}}</noinclude> d5thwfqr0i3evqfsixnu7dju26xhnwx Template:Overlinked 10 1071 2374 2373 2020-09-29T19:17:43Z Chrisb 1 1 revision imported 2373 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Overlinked}} begin-->{{Ambox | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | name = Overlinked | type = style | issue = This {{{1|article}}} '''may have too many [[Wikipedia:Manual of Style/Linking|links to other articles]], and could require [[Wikipedia:Cleanup|cleanup]] to meet Wikipedia's [[:Category:Wikipedia style guidelines|quality standards]]'''. | fix = Per the [[Wikipedia:OVERLINK|Wikipedia style guidelines]], please remove duplicate links, and any links that are not relevant to the context. | removalnotice = yes | date = {{{date|}}} | cat = Articles with too many wikilinks | all = All articles with too many wikilinks | cat2 = Articles covered by WikiProject Wikify | all2 = All articles covered by WikiProject Wikify }}<!--{{Overlinked}} end--> }}<noinclude> {{Documentation|content= {{Twinkle standard installation}} == Usage == Please put at the top of the page, adding the date in this manner: {{Tlx|Overlinked||date&#61;{{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} :To identify an individual ''section'' of an article: {{Tlx|Overlinked|'''section'''|date&#61;{{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} This template sorts articles into [[:Category:Articles with too many wikilinks]] and [[:Category:Articles covered by WikiProject Wikify]]. To avoid template clutter, please use this only in cases of extremely excessive numbers of links. (Less severe cases should be noted on the talk page or simply addressed when noticed.) ==See also== * {{Tl|External links}} * {{Tl|No more links}} [[Category:Internal link maintenance templates]] [[Category:Cleanup templates]] }}</noinclude> 4athbxcykpv3k0u7mvqkc7hyq7jmsit Template:Overly detailed 10 1072 2376 2375 2020-09-29T19:17:43Z Chrisb 1 1 revision imported 2375 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Overly detailed}} begin-->{{Ambox | name = Overly detailed | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | class = ambox-overly_detailed | sect = {{{1|}}} | issue = '''may contain an excessive amount of intricate detail that may interest only a particular audience'''. {{#if:{{{details|}}}|'''Specifically, {{{details}}}'''.}} | fix = Please help by [[Wikipedia:Content forking#Article_spinoffs: .22Summary style.22 meta-articles and summary sections|spinning off]] or [[Wikipedia:Handling trivia#Recommendations for handling trivia|relocating]] any relevant information, and removing excessive detail that may be against [[Wikipedia:What Wikipedia is not|Wikipedia's inclusion policy]]. | removalnotice = yes | date = {{{date|}}} | cat = Wikipedia articles that are excessively detailed | all = All articles that are excessively detailed }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Overly detailed}} end--> }}<noinclude> {{Documentation}} </noinclude> cryn7ofu1pce9kv3x6b3tqbejgm5yf9 Template:POV 10 1121 2474 2473 2020-09-29T19:17:50Z Chrisb 1 1 revision imported 2473 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{POV}} begin-->{{Ambox | name = POV | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = content | class = ambox-POV | style = {{{style|}}} | image = [[File:Unbalanced scales.svg|50x40px|link=]] | issue = The '''[[Wikipedia:Neutral point of view|neutrality]] of this {{{what|article}}} is [[Wikipedia:NPOV dispute|disputed]]'''. | talk = {{{talk|#}}} | fix = Please do not remove this message until [[Template:POV#When to remove|conditions to do so are met]]. | removalnotice = yes | date = {{{date|}}} | cat = NPOV disputes | all = All NPOV disputes }}<!--{{POV}} end--> }}<noinclude> {{Documentation}} </noinclude> 578b0ib6c7vi6ypr1qiepvk1kun99u5 Template:POV title 10 1286 2804 2803 2020-09-29T19:18:14Z Chrisb 1 1 revision imported 2803 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = POV title | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | image = [[File:Ambox scales.svg|50px|link=]] | issue = '''The [[Wikipedia:Neutral point of view|neutrality]] of this article's ''title'', ''subject matter'', and/or the title's ''implications'', is [[Wikipedia:NPOV dispute|disputed]].''' {{#if:{{{alternate title|}}}|An alternative proposed title is ''{{{alternate title}}}.''}} {{#if:{{{alternate titles|}}}|Alternative proposed titles are: ''{{{alternate titles}}}''.}} | fix = This is a dispute over the neutrality of viewpoints or other implications of the title, or the subject matter within its scope, rather than the actual facts stated. Wikipedia articles may have only one unique title; the use of the current title does not imply an endorsement of that title. Please see the relevant discussion on the [[:{{NAMESPACE}} talk:{{PAGENAME}}#{{{1|}}}|talk page]]. | cat = NPOV disputes | all = Wikipedia title cleanup | date = {{{date|}}} | removalnotice = yes }} }}<includeonly>{{main other | [[Category:Wikipedia title cleanup (sorted by template)|P{{PAGENAME}}]] | }}</includeonly><noinclude> {{Documentation}} </noinclude> paksbm4be6a54ruiyn5ywrh257qzbq6 Template:Page numbers improve 10 1073 2378 2377 2020-09-29T19:17:43Z Chrisb 1 1 revision imported 2377 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Page numbers improve}} begin-->{{Ambox | name = Page numbers improve | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | image = [[File:Text document with page number icon.svg|50x40px]] | issue = This {{{1|article}}} cites its [[Wikipedia:Citing sources|sources]] but '''its [[Wikipedia:Citing sources#What information to include|page references]] ranges are too broad'''. | fix = Page ranges should be limited to one or two pages when possible. You can [[Wikipedia:WikiProject Fact and Reference Check|help improve this article]] by introducing citations that are more precise. | date = {{{date|}}} | cat = Articles lacking page references | removalnotice = yes }}<!--{{Page numbers improve}} end--> }}<noinclude> {{Documentation}} </noinclude> s5bpsvym2ggvwvql6542m082b7kbz7b Template:Page numbers needed 10 1074 2380 2379 2020-09-29T19:17:43Z Chrisb 1 1 revision imported 2379 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Page numbers needed}} begin-->{{Ambox | name = Page numbers needed | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | image = [[File:Text document with page number icon.svg|50x40px|alt=|link=]] | issue = This {{{1|article}}} cites its [[Wikipedia:Citing sources|sources]] but '''does not provide [[WP:CITEHOW|page references]]'''. | fix = You can [[Wikipedia:WikiProject Fact and Reference Check|help to improve it]] by introducing citations that are more precise. | date = {{{date|}}} | cat = Articles lacking page references | removalnotice = yes }}<!--{{Page numbers needed}} end--> }}<noinclude> {{Documentation}} </noinclude> p2ezshwoo2ka4j72whmifaotxaaadpu Template:Paid contributions 10 1249 2730 2729 2020-09-29T19:18:09Z Chrisb 1 1 revision imported 2729 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Paid contributions}} begin-->{{Ambox | name = Paid contributions | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | class = ambox-Paid-contributions | image = [[File:Unbalanced scales.svg|50x40px|link=]] | issue = ''' This {{{1|article}}} contains paid contributions. ''' | fix = It may require [[Wikipedia:cleanup|cleanup]] to comply with Wikipedia's content policies, particularly [[Wikipedia:Neutral point of view|neutral point of view]]. Please discuss further on the [[{{TALKPAGENAME}}|talk page]]. }}<!-- Do categories separately so they show in draft space, apparently that's wanted here -->{{Ambox/category | date = <!-- See [[Wikipedia:Creating a dated maintenance category]] to set up --> | cat = Wikipedia articles with paid content }}<!--{{Paid contributions}} end--> }}<noinclude> {{Documentation}} </noinclude> ca7oi7yoonmu0zn313cg2qzlx0gn1yw Template:Para 10 1299 2830 2829 2020-09-29T19:18:16Z Chrisb 1 1 revision imported 2829 wikitext text/x-wiki <code class="nowrap" style="{{SAFESUBST:<noinclude />#if:{{{plain|}}}|border: none; background-color: inherit;}} {{SAFESUBST:<noinclude />#if:{{{plain|}}}{{{mxt|}}}{{{green|}}}{{{!mxt|}}}{{{red|}}}|color: {{SAFESUBST:<noinclude />#if:{{{mxt|}}}{{{green|}}}|#006400|{{SAFESUBST:<noinclude />#if:{{{!mxt|}}}{{{red|}}}|#8B0000|inherit}}}};}} {{SAFESUBST:<noinclude />#if:{{{style|}}}|{{{style}}}}}">&#124;{{SAFESUBST:<noinclude />#if:{{{1|}}}|{{{1}}}&#61;}}{{{2|}}}</code><noinclude> {{Documentation}} <!--Categories and interwikis go near the bottom of the /doc subpage.--> </noinclude> hmpn0o2dcw0l4w04g6qz1zzyrrqvv3i Template:Parameter names example 10 1665 4978 4977 2020-10-11T05:50:44Z Chrisb 1 1 revision imported 4977 wikitext text/x-wiki <includeonly>{{#invoke:Parameter names example|main}}</includeonly><noinclude> {{hatnote|[[Template:Generic template demo]] and [[Template:Pnex]] redirect here.}}<!--(hatnote more noticeable here than within Documentation)--> {{Documentation}} </noinclude> cjle1o3weadzp7u1v4l5clox5ri8mpi Template:Partial 10 1554 4756 4755 2020-10-11T05:35:23Z Chrisb 1 1 revision imported 4755 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background:#FFB;vertical-align:middle;text-align:{{{align|center}}}; {{{style|}}}" class="table-partial"|{{{1|Partial}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> k0tc2n8ju0l8aekqawi6oy1tc6jyh0z Template:Partial failure 10 1555 4758 4757 2020-10-11T05:35:23Z Chrisb 1 1 revision imported 4757 wikitext text/x-wiki <noinclude> {| class="wikitable" |</noinclude>style="background: wheat; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-partial" | {{{1|Partial failure}}}<noinclude> |} {{documentation|Template:Table cell templates/doc}} </noinclude> 4qu4k3wiofz9viga0fipa03f3wqltea Template:Partial success 10 1556 4760 4759 2020-10-11T05:35:23Z Chrisb 1 1 revision imported 4759 wikitext text/x-wiki <noinclude> {| class="wikitable" |</noinclude>style="background: #FFB; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-partial" | {{{1|Partial success}}}<noinclude> |} {{documentation|Template:Table cell templates/doc}} </noinclude> j9bzbndzcte9k69kaqa9vfjpcwrensu Template:Partisan sources 10 1075 2382 2381 2020-09-29T19:17:43Z Chrisb 1 1 revision imported 2381 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Partisan}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Partisan sources | type = content | image = [[File:Question book-new.svg|50x40px|alt=|link=]] | issue = This {{{1|article}}} '''relies excessively on partisan sources.''' | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{{1|article}}}] or discuss the issue on the [[{{TALKPAGENAME}}|talk page]]. | removalnotice = yes | date = {{{date|}}} }}<includeonly>{{DMCA|Articles needing more viewpoints|from|{{{date|}}}}}</includeonly><!--{{Partisan}} end--> }}<noinclude> {{Documentation}} </noinclude> ffbkt1cenxzog386597sfodbd7g4jm1 Template:Peacock 10 1150 2532 2531 2020-09-29T19:17:54Z Chrisb 1 1 revision imported 2531 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Peacock}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Peacock | type = content | class = ambox-peacock | issue = This {{{1|article}}} contains wording that '''[[Wikipedia:Manual of Style/Words to watch#Puffery|promotes the subject in a subjective manner]] without imparting real information'''. | fix = Please remove or replace such wording and instead of making proclamations about a subject's importance, use facts and attribution to demonstrate that importance. | removalnotice = yes | date = {{{date|}}} }}{{DMCA|Articles with peacock terms|from|{{{date|}}}|All articles with peacock terms}}<!--{{Peacock}} end--> }}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, please, not here! --></noinclude> ld2nfksata4xvh8tqxfrhl1k4xfq9a1 Template:Pending 10 1557 4762 4761 2020-10-11T05:35:23Z Chrisb 1 1 revision imported 4761 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #FFD; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="partial table-partial"|{{{1|Pending}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} <!-- interwikis & categories --> </noinclude> gausp9hdzytetnnocepdvkcil5aw5zs Template:Perhaps 10 1558 4764 4763 2020-10-11T05:35:23Z Chrisb 1 1 revision imported 4763 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #ffffdd; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="automatic table-automatic"| {{{1|Perhaps}}}<noinclude> |} {{documentation|Template:Table cell templates/doc}} </noinclude> 1d4cyn17nhttt7zemwp1m0ux22de2c4 Template:Persian script needed 10 996 2224 2223 2020-09-29T19:17:32Z Chrisb 1 1 revision imported 2223 wikitext text/x-wiki {{Script needed |language = Persian |image = Farsi.svg }} f7kiamaw5ij4e4qa6uxe1fu7thw99g7 Template:Planned 10 1559 4766 4765 2020-10-11T05:35:23Z Chrisb 1 1 revision imported 4765 wikitext text/x-wiki <noinclude> {| class="wikitable" |</noinclude>style="background: #dfdfff; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-planned" | {{{1|Planned}}}<noinclude> |} {{documentation|Template:Table cell templates/doc}} </noinclude> 8cfls4d2les76kmzhwfv4jvei8wswfk Template:Plot notice 10 1076 2384 2383 2020-09-29T19:17:43Z Chrisb 1 1 revision imported 2383 wikitext text/x-wiki <!--{{Current}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Plot notice | type = notice | image = [[File:{{Ambox globe current blue}}|42px]] | text = This plot summary is '''currently experiencing a high level of editing activity'''. Details are being changed frequently at this time. Editors may wish to consider contributing to other aspects of the article such as production or reception. }} <noinclude> {{Documentation}} </noinclude> slvnfjvscs6mdm504dot416ujm1yfzi Template:Pp-move-indef 10 1630 4908 4907 2020-10-11T05:50:20Z Chrisb 1 1 revision imported 4907 wikitext text/x-wiki <includeonly>{{#invoke:Pp-move-indef|main}}</includeonly><noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> ige1ruktwt70sig3zmubaou2g290avd Template:Pp-move-indef/doc 10 1646 4940 4939 2020-10-11T05:50:39Z Chrisb 1 1 revision imported 4939 wikitext text/x-wiki {{Documentation subpage}} {{Twinkle standard installation}} {{lua|Module:Pp-move-indef}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS AT THE BOTTOM OF THIS PAGE --> === Usage === * Use {{tlx|{{lc:{{BASEPAGENAME}}}}}} The template will '''add a category only''' and has '''no visible effect'''. It should be used on high-visibility pages indefinitely move-protected. For articles move-protected due to disputes, including high-visibility articles, use {{tl|pp-move-dispute}}. For other articles move-protected due to vandalism, use {{tl|pp-move-vandalism}}. For other cases, use the generic {{tl|pp-move}}. Please note that only [[Wikipedia:Administrators|administrators]] can protect pages. :''This template will categorize articles, portals and templates into {{cl|Wikipedia indefinitely move-protected pages}}.'' :''Other pages will be categorized depending on their namespace into {{cl|Wikipedia move-protected project pages}}, {{cl|Wikipedia move-protected user and user talk pages}} and {{cl|Wikipedia move-protected talk pages}}.'' === See also === [[Wikipedia:Protection policy]] {{protection templates}} <templatedata> { "params": {}, "description": "Indefinitely protects a high-visibility, important page from being moved." }</templatedata> <includeonly>{{Sandbox other|| <!-- CATEGORIES AND INTERWIKIS HERE, THANKS --> [[Category:Top icon protection templates|{{PAGENAME}}]] }}</includeonly> 2rdatng4raazxxjw2hnpuzl1a9rgz6b Template:Primary sources 10 939 2110 2109 2020-09-29T19:17:25Z Chrisb 1 1 revision imported 2109 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = {{{name|Primary sources}}} | subst = <includeonly>{{{subst|{{subst:substcheck}}}}}</includeonly> | type = content | class = ambox-Primary_sources | image = [[file:Question book-new.svg|50x40px]] | sect = {{#ifeq:{{{BLP}}}|yes|biographical article|{{{1|}}}}} | talk = {{{talk|}}} | issue = '''relies too much on [[Wikipedia:Verifiability|references]] to {{#ifeq:{{{BLP}}}|yes |[[Wikipedia:Biographies of living persons#Misuse of primary sources|primary sources]] |[[Wikipedia:No original research#Primary, secondary and tertiary sources|primary sources]] }}'''. | fix = Please improve this {{#ifeq:{{{BLP}}}|yes|biographical article|{{{1|}}}}} by adding [[Wikipedia:No original research#Primary, secondary and tertiary sources|secondary or tertiary sources]]. {{#ifeq:{{{BLP}}}|yes |Contentious material about living persons that is unsourced or poorly sourced '''must be removed immediately''', especially if potentially [[Wikipedia:Libel|libelous]] or harmful. }} | removalnotice = yes | cat = Articles lacking reliable references | date = {{{date|}}} | all = All articles lacking reliable references | cat2 = {{#ifeq:{{{BLP}}}|yes|BLP articles lacking sources}} }} }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 1dtky2wcgwetpwm3e3bem8s9mihy49q Template:Pro and con list 10 1077 2386 2385 2020-09-29T19:17:44Z Chrisb 1 1 revision imported 2385 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Proandconlist}} begin-->{{ ambox | name = Pro and con list | type = style | text = This {{{1|article}}} '''contains a [[Wikipedia:Pro and con lists|pro and con list]]''', which is sometimes inappropriate. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it] by integrating both sides into a more [[Wikipedia:Neutral point of view|neutral]] presentation, or remove this template if you feel that such a list is appropriate for this article. | date = {{{date|}}} | all = Articles containing pro and con lists }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Proandconlist}} end--> }}<noinclude>{{Documentation}}</noinclude> 5ilbnpiu5vu3cjfag3ok6hurv3h77wc Template:Proofreader needed 10 1078 2388 2387 2020-09-29T19:17:44Z Chrisb 1 1 revision imported 2387 wikitext text/x-wiki <!--{{Proofreader needed}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Proofreader needed | type = style | image = [[Image:Translation to english arrow.svg|50px| ]] | issue = This {{{what|article}}} has been '''[[Wikipedia:Translation|translated]]''' from {{#if:{{{2|}}}|{{#if:{{{1|}}}|the article '''[[:{{{2}}}:{{{1}}}|{{{1}}}]]'''|an article}} in {{#if:{{mw lang|fn=is_code|{{{2|}}}}} | the {{#language:{{{2|}}}|en}} | another }} Wikipedia|a Wikipedia article in another language}}, and '''requires proofreading'''. | fix = If you are confident enough in your fluency of English and {{#if:{{mw lang|fn=is_code|{{{2|}}}}} | {{#language:{{{2|}}}|en}} | the original language }}, please feel free to {{#ifexist: Wikipedia:Translation/{{PAGENAME}} | [[Wikipedia:Translation/{{PAGENAME}}|join this translation]]. | join this translation.}} | all = Wikipedia articles needing cleanup after translation {{#if:{{mw lang|fn=is_code|{{{2|}}}}} | from {{#language:{{{2|}}}|en}} }} }}<!--{{Proofreader needed}} end--><noinclude> {{Documentation}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --></noinclude> 16kjjpsfxiyz393qg1sx342d0ypd214 Template:Proposed deletion/dated 10 1291 2814 2813 2020-09-29T19:18:15Z Chrisb 1 1 revision imported 2813 wikitext text/x-wiki <templatestyles src="Proposed_deletion/styles.css" /> {{ambox |type=delete |image=none |name=Proposed_deletion/dated |class=mbox-prod |text={{main other|demospace={{#ifeq:{{{demo|<noinclude>yes</noinclude>}}}|yes|main}} |1={{#ifexist:Wikipedia:Articles for deletion/{{PAGENAME}} |{{#if:{{{priorafd|{{{pafd|}}}}}}||{{error |message=This article may have been previously nominated for deletion: [[Wikipedia:Articles for deletion/{{PAGENAME}}]] exists. }}[[Category:Proposed deletions needing attention|D{{PAGENAME}}]]<br/> }}}} |2={{error |message=Please use PROD only on articles. }}[[Category:Proposed deletions needing attention|N{{PAGENAME}}]]<br/> }}It is '''[[Wikipedia:Proposed deletion|proposed that this article be deleted]]'''{{#if: {{{concern|{{{reason|{{{1|}}}}}}}}} |&#32;because of the following concern:<blockquote>{{{concern|{{{reason|{{{1|}}}}}}}}}{{#if:{{{nom|}}}|&nbsp;(<small>proposed by [[User:{{{nom}}}|{{{nom}}}]]</small>)}}</blockquote> |{{#if:{{{nom|}}}|&nbsp;(<small>proposed by [[User:{{{nom}}}|{{{nom}}}]]</small>).|.}} }} <p class="verbose">If you can address this concern by [[Wikipedia:Editing policy|improving]], [[Wikipedia:Manual of Style|copyediting]], [[Help:Introduction to referencing with Wiki Markup/1|sourcing]], [[Wikipedia:Moving a page|renaming]], or [[Wikipedia:Merging|merging]] the page, '''please [{{fullurl:{{FULLPAGENAME}}|action=edit}} edit this page]''' and do so. ''You may remove this message if you improve the article or otherwise object to deletion for any reason''. Although not required, you are encouraged to explain why you object to the deletion, either in your edit summary or on the talk page. If this template is removed, '''[[Wikipedia:Proposed deletion#Nominating|do not replace it]]'''.</p> {{#ifexpr:{{#time:U}}>{{#time:U|{{{timestamp|30200000000000}}} +7 days}} |{{color|red|This message has remained in place for seven days, so the article may be deleted without further notice.}}{{category handler |all=[[Category:Expired proposed deletions]] |nocat={{#ifeq:{{{demo|<noinclude>yes</noinclude>}}}|yes|true}} }} |The article may be deleted if this message remains in place for seven days{{#if:{{{timestamp|}}} |, i.e., after {{#time:H:i, j F Y|{{{timestamp}}} +7 days}} (UTC) |. Please check the {{history|{{FULLPAGENAME}}|history}} to see when this template was added }}. }}<br/> <small class="verbose">If you created the article, please don't be offended. Instead, consider improving the article so that it is acceptable according to the [[Wikipedia:Deletion policy|deletion policy]].<br />{{find sources mainspace}}</small><span style="display:none; speak:none;"><!-- --><span id="delete-criterion">PROD</span><!-- --><span id="delete-reason">{{urlencode:Expired [[WP:PROD|PROD]], concern was: {{{concern|{{{reason|{{{1|}}}}}}}}} }}</span><!-- --><span id="raw-delete-reason">Expired <nowiki>[[WP:PROD|prod]]</nowiki>, concern was: {{{concern|{{{reason|{{{1|}}}}}}}}}</span><!-- --></span> {{#ifeq:{{{help}}}|off||---- <small><span class="verbose prod-notify-code">'''Nominator:''' Please consider notifying the author/project: <code>{{tlsp|link subst=no|proposed deletion notify|2={{FULLPAGENAME}}|3=concern={{#tag:nowiki|{{{concern|{{{reason|{{{1|}}}}}}}}}}}}} <nowiki>~~~~</nowiki></code></span></small>}}{{#ifexpr:{{#time:U}}>{{#time:U|{{{timestamp|30200000000000}}} +7 days}} |{{#ifeq:{{{help}}}|off|----|<br/>}}{{#if:{{{timestamp|}}} |<small>'''Timestamp:''' {{{timestamp}}} {{#time:H:i, j F Y|{{{timestamp}}}}} (UTC)</small> }}<br/><small><span class="sysop-show">'''Administrators:''' [{{fullurl:{{FULLPAGENAME}}|wpReason={{urlencode:Expired [[WP:PROD|PROD]], concern was: {{{reason|{{{1|{{{concern|}}}}}}}}}}}&action=delete}} delete]</span></small> }} }}{{category handler |all={{#if:{{{timestamp|}}} |[[Category:Proposed deletion as of {{#time:j F Y|{{{timestamp}}}}}]] |[[Category:Proposed deletions needing attention|U{{PAGENAME}}]] }}{{#ifexist:{{TALKPAGENAME}}||[[Category:Proposed deletions without a talk page]]}}[[Category:All articles proposed for deletion]] |nocat={{#ifeq:{{{demo|<noinclude>yes</noinclude>}}}|yes|true}} }}<includeonly>{{NOINDEX}}</includeonly><noinclude> {{documentation}} </noinclude> dbklzpxh9rusgkzyxuaqh3491j4h0wx Template:Proprietary 10 1560 4768 4767 2020-10-11T05:35:24Z Chrisb 1 1 revision imported 4767 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #ddf; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-proprietary"|{{{1|[[Proprietary software|Proprietary]]}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} [[Category:Software table cell templates|Proprietary]] </noinclude> cvxcm7uux4xl9avnw934xgh9r8xrw95 Template:Prose 10 1116 2464 2463 2020-09-29T19:17:49Z Chrisb 1 1 revision imported 2463 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Prose}} begin-->{{Ambox | name = Prose | subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | small = {{{small|}}} | type = style | class= ambox-Prose | issue= This {{{1|article}}} '''is in [[MOS:LIST|list]] format, but may read better as [[MOS:PROSE|prose]]'''. | fix = You can help by [{{fullurl:{{FULLPAGENAME}}|action=edit}} converting this {{{1|article}}}], if appropriate. [[Help:Editing|Editing help]] is available. | date = {{{date|}}} | cat = Articles needing cleanup | all = All pages needing cleanup | cat2 = Articles with sections that need to be turned into prose }}<!--{{Prose}} end--> }}<noinclude> {{Documentation}} </noinclude> cr2p6xi2zm6t04ywk01nxqig4ociaje Template:Protection templates 10 1647 4942 4941 2020-10-11T05:50:39Z Chrisb 1 1 revision imported 4941 wikitext text/x-wiki {{Navbox | state = {{{state|{{{1|<includeonly>collapsed</includeonly>}}}}}} | class = <!--ombox ombox-protection--> | title = {{c|Protection templates}} | image<!--left--> = <!--[[File:Padlock.svg|40px|link=|alt=]]--> | tracking = no <!-- keep all the documented templates out of the hlist tracking category --> | list1 = {{Aligned table |cols=5 |style=border:1px solid #aaa;font-size:110%;margin:0 auto<!-- 0.2em-->; |colstyle=vertical-align:middle;padding-left:1.0em;<!--font-family:monospace;-->padding-right:1.0em; |col1class=navbox-group |col1style=background:#ddf;font-family:sans-serif; <!--row#--> |row1header=on |row1style=background:none;padding-bottom:0.25em;border-bottom:1px solid #bbf; |style1.1=background:none;border-bottom:1px solid #bbf; <!-- 1 --> | | {{sans-serif|Edit}} | {{sans-serif|Move}} | {{sans-serif|[[Wikipedia:Pending changes|Pending changes]]}} | {{sans-serif|Upload}} <!-- 2 --> | Generic | {{tl|pp}} {{tl|pp-protected}} | {{tlf|pp}} {{tl|pp-move}} | {{tlf|pp}} {{tl|pp-pc}} | {{tlf|pp}} {{tl|pp-upload}} |row2style=background:whitesmoke; <!-- 3 --> | [[Wikipedia:Biographies of living persons|BLP]] | {{tl|pp-blp}} | – | – | – <!-- 4 --> | Dispute | {{tl|pp-dispute}} | {{tl|pp-move-dispute}} | – | – |row4style=background:whitesmoke; <!-- 5 --> | [[Wikipedia:Protection_policy#Extended_confirmed_protection|Extended confirmed protection]] | {{tl|pp-30-500}} | {{tl|pp-30-500}} | – | – <!-- 6 --> | [[Main Page]] Image | {{tl|pp-main-page}} | – | – | – |row6style=background:whitesmoke; <!-- 7 --> | [[Wikipedia:Office actions|Office]] | {{tl|pp-office}}&nbsp;{{tl|pp-reset}} {{tl|pp-office-dmca}} | {{tlf|pp-office}}&nbsp;{{tlf|pp-reset}} {{tlf|pp-office-dmca}} | {{tlf|pp-office}}&nbsp;{{tlf|pp-reset}} {{tlf|pp-office-dmca}} | – <!-- 8 --> | Sockpuppetry | {{tl|pp-sock}} | – | – | – |row8style=background:whitesmoke; <!-- 9 --> | High-visibility | {{tl|pp-template}} | – | – | – <!-- 10 --> | Blocked user's talk | {{tl|pp-usertalk}} | – | – | – |row10style=background:whitesmoke; <!-- 11 --> | Vandalism | {{tl|pp-vandalism}} | {{tl|pp-move-vandalism}} | – | – <!-- 12 --> | Talk page | {{tl|permanently protected}} {{tl|temporarily protected}} | – | – | – |row12style=background:whitesmoke; <!-- 13 --> | Long-term | {{tl|pp-semi-indef}} | {{tl|pp-move-indef}} | – | – }} | below = [[Module:Protection banner]] }}<noinclude> {{Documentation | content = {{Collapsible option |statename=optional |default=collapsed}} [[Category:Wikipedia administration templates]] [[Category:Documentation see also templates]] }}<!--(end Documentation)--> </noinclude> pnp5urqhzbe1pscez7zisy3lnwjhswr Template:Pseudo 10 1079 2390 2389 2020-09-29T19:17:44Z Chrisb 1 1 revision imported 2389 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Pseudo}} begin-->{{Ambox | name = Pseudo | class = ambox-pseudo | type = content | image = [[Image:Ambox scales.svg|50px|link=]] | issue = This [[WP:BLP|biography of a living person]] devotes '''[[WP:PSEUDO|undue weight to one aspect of the subject's life]]'''. | fix = It may require [[Wikipedia:cleanup|cleanup]] to present a [[Wikipedia:Neutral point of view|balanced look at the subject]], or may need to be renamed to clarify that it refers to one event. Please discuss further on the [[Talk:{{PAGENAME}}|talk page]]. | date = {{{date|}}} }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Pseudo}} end-->}}<noinclude> {{Documentation}} </noinclude> mc1kz42p5tjgd9fq5xdwf0hj4lkobgx Template:Puffery 10 1080 2392 2391 2020-09-29T19:17:44Z Chrisb 1 1 revision imported 2391 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = Puffery | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = content | class = ambox-puffery | sect = {{{1|}}} | issue = '''may contain wording that [[Wikipedia:Wikipuffery|promotes the subject through exaggeration of unnoteworthy facts]]'''. | talk = {{{talk|}}} | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] by removing or replacing such wording. | removalnotice = yes | date = {{{date|}}} | all = Articles with wikipuffery }} }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> gy3dzkksgg32bgkuhi6j44qf87ofclv Template:Quit 10 1561 4770 4769 2020-10-11T05:35:24Z Chrisb 1 1 revision imported 4769 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #FCF; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-cast"|{{{1|Quit}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} [[Category:Television table cell templates]] [[Category:Big Brother (franchise) templates]] </noinclude> opfd1ua6cah1b5o38xvecrcmy862v2e Template:R 10 1604 4856 4855 2020-10-11T05:38:58Z Chrisb 1 1 revision imported 4855 wikitext text/x-wiki <includeonly>{{r/ref|{{{1}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|{{{p|{{{p1|{{{page|{{{page1|{{{pp|{{{pp1|{{{pages|{{{pages1|}}}}}}}}}}}}}}}}}}}}}}}}|{{{q|{{{q1|{{{quote|{{{quote1|}}}}}}}}}}}}}}<!-- -->{{#if:{{{2|}}}|{{r/ref|{{{2}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|{{{p2|{{{page2|{{{pp2|{{{pages2|}}}}}}}}}}}}|{{{q2|{{{quote2|}}}}}}}}<!-- -->{{#if:{{{3|}}}|{{r/ref|{{{3}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|{{{p3|{{{page3|{{{pp3|{{{pages3|}}}}}}}}}}}}|{{{q3|{{{quote3|}}}}}}}}<!-- -->{{#if:{{{4|}}}|{{r/ref|{{{4}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|{{{p4|{{{page4|{{{pp4|{{{pages4|}}}}}}}}}}}}|{{{q4|{{{quote4|}}}}}}}}<!-- -->{{#if:{{{5|}}}|{{r/ref|{{{5}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|{{{p5|{{{page5|{{{pp5|{{{pages5|}}}}}}}}}}}}|{{{q5|{{{quote5|}}}}}}}}<!-- -->{{#if:{{{6|}}}|{{r/ref|{{{6}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|{{{p6|{{{page6|{{{pp6|{{{pages6|}}}}}}}}}}}}|{{{q6|{{{quote6|}}}}}}}}<!-- -->{{#if:{{{7|}}}|{{r/ref|{{{7}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|{{{p7|{{{page7|{{{pp7|{{{pages7|}}}}}}}}}}}}|{{{q7|{{{quote7|}}}}}}}}<!-- -->{{#if:{{{8|}}}|{{r/ref|{{{8}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|{{{p8|{{{page8|{{{pp8|{{{pages8|}}}}}}}}}}}}|{{{q8|{{{quote8|}}}}}}}}<!-- -->{{#if:{{{9|}}}|{{r/ref|{{{9}}}|{{{group|{{{grp|{{{g|}}}}}}}}}|{{{p9|{{{page9|{{{pp9|{{{pages9|}}}}}}}}}}}}|{{{q9|{{{quote9|}}}}}}}}<!-- -->{{#if:{{{10|}}}|<sup class="error" style="font-size:0.9em; line-height:0;">The template only supports up to 9 references ([[Template:R|edit it]]!).</sup> <!-- -->}}}}}}}}}}}}}}}}}}</includeonly><noinclude>{{documentation}}</noinclude> ow3nzadiiajc7r5h53otz5a7c9m2zby Template:R/doc 10 1619 4886 4885 2020-10-11T05:39:04Z Chrisb 1 1 revision imported 4885 wikitext text/x-wiki {{Documentation subpage}} {{for2|[[WP:RCAT|redirect templates]]|[[Wikipedia:Template messages/Redirect pages]]|the [[WP:NAVBOX|navigation box]] regarding the letter [[R]]|[[Template:LetterR]]}} {{Notice|This template may soon be obsolete and deprecated: [[m:WMDE Technical Wishes/Book referencing]] would make it unnecessary. This expansion of MediaWiki's built-in {{xtag|ref|s}} syntax is already working at some wikis, but has not yet been implemented at English Wikipedia, {{as of|2020|08|lc=y|post=.}}}} ==Intent== Provides a compact shorthand for [[mw:Extension:Cite/Cite.php|<code>&lt;ref name="RefName" /&gt;</code> citation tags]], simplifying syntax so cutting code clutter.<ref group=note>Here we also add alliteration.</ref> For example: {| class="wikitable" |- ! Using <code>&lt;ref&gt;</code> | <code><nowiki>For example, fact<ref name=Bal/><ref name=Bam/><ref name=Bar/> and fact.<ref name=Bas/><ref name=Bay/><ref name=Baz/></nowiki></code> ''Displays as'': For example, fact<ref name=Bal/><ref name=Bam/><ref name=Bar/> and fact.<ref name=Bas/><ref name=Bay/><ref name=Baz/> |- ! Instead using {{tnull|r}} | <code><nowiki>For example, fact{{r|Bal|Bam|Bar}} and fact.{{r|Bas|Bay|Baz}}</nowiki></code> ''Displays as'': For example, fact{{r|RefName|Bam|Bar}} and fact.{{r|Bas|Bay|Baz}} |} {{tnull|r}} and <code><nowiki><ref></nowiki></code> can coexist on the same page, and like <code><nowiki><ref></nowiki></code>, {{tnull|r}} can be used with or without [[WP:list-defined references|list-defined references]]. In addition, a <code>|page=</code> or <code>|p=</code> parameter adds the functionality of {{t|rp}}: {| class="wikitable" |- ! Using {{tnull|r}} with<br/><code><nowiki>|p=</nowiki></code> parameter | <code><nowiki>For example, fact.{{r|RefName|p=22}}</nowiki></code> ''Displays as'': For example, fact.{{r|RefName|p=22}} |} ==Usage== {| class="wikitable" |- ! Usage ! Display ! Notes |- | <code><nowiki>{{r|RefName}}</nowiki></code> | Text.{{r|RefName}} | Equivalent to <code><nowiki><ref name="RefName" /></nowiki></code>. |- | <code><nowiki>{{r|RefName|p=100}}</nowiki></code> <code><nowiki>{{r|RefName|pp=100}}</nowiki></code> <code><nowiki>{{r|RefName|page=100}}</nowiki></code> <code><nowiki>{{r|RefName|pages=100}}</nowiki></code> | Text.{{r|RefName|p=100}} | rowspan="2"| Adds a page number (or other location identifier) within the source. The {{para|p}}, {{para|pp}}, {{para|page}}, and {{para|pages}} parameters are equivalent. If the article cites only one location in a given source, reduce clutter by coding simply <code><nowiki>{{r|RefName}}</nowiki></code> and integrating the location into the main ''RefName'' citation. |- | <code><nowiki>{{r|RefName|p=10&ndash;14}}</nowiki></code> <code><nowiki>{{r|RefName|pp=3, 6}}</nowiki></code> <code><nowiki>{{r|RefName|page=&sect;C}}</nowiki></code> <code><nowiki>{{r|RefName|pages=Dust jacket}}</nowiki></code> <code><nowiki>{{r|RefName|pages=para. 7}}</nowiki></code> | Text.{{r|RefName|p=10&ndash;14}} Text.{{r|RefName|pp=3, 6}} Text.{{r|RefName|page=&sect;C}} Text.{{r|RefName|pages=Dust jacket}} Text.{{r|RefName|pages=para. 7}} |- | <code><nowiki>{{r|RefName|Bam|Bar}}</nowiki></code> | Text.{{r|RefName|Bam|Bar}} | Equivalent to <code><nowiki>{{r|RefName}}{{r|Bam}}{{r|Bar}}</nowiki></code> or {{nobr|<code><nowiki><ref name=RefName/><ref name=Bam/><ref name=Bar/></nowiki></code>.}} Up to nine references may be "bundled" this way. <!--NOBREAK ON WIDEST EXAMPLES ESTABLISHES COLUMN WIDTHS--> |- | {{nobr| <code><nowiki>{{r|1=RefName|2=Bam|3=Bar</nowiki><nowiki>|4=Bas|p1=100|p2=10&ndash;14|p4=&sect;C}}</nowiki></code>}} <code><nowiki>{{r|1=RefName|p1=100|2=Bam</nowiki><nowiki>|p2=10&ndash;14|3=Bar|4=Bas|p4=&sect;C}}</nowiki></code> | {{nobr| Text.{{r|RefName|Bam|Bar|Bas|p1=100|p2=10&ndash;14|p4=&sect;C}}}} | Equivalent to <code><nowiki>{{r|RefName|p=100}}{{r|Bam|p=10&ndash;14}}{{r|Bar}}{{r|Bas|p=&sect;C}}</nowiki></code>. In the example, not all references have pages; make sure that e.g. {{para|1}} matches {{para|p1}} |- | <code><nowiki>{{r|group=Notes|NtName}}</nowiki></code> <code><nowiki>{{r|grp=Notes|NtName|NtCam}}</nowiki></code> <code><nowiki>{{r|g=Notes|NtName|p=13}}</nowiki></code> | Text.{{r|group=Notes|NtName}} Text.{{r|grp=Notes|NtName|NtCam}} Text.{{r|g=Notes|NtName|p=13}} | The {{para|group}}, {{para|grp}}, and {{para|g}} parameters are equivalent and echo {{nobr|<code><nowiki><ref group=Notes name=NtName/></nowiki></code>.}} If present, the parameter applies to all references in the template. |- | <code><nowiki>{{r|RefName|p=100|q=quote from the text}}</nowiki></code> <code><nowiki>{{r|RefName|p=100|quote=quote from the text}}</nowiki></code> |Text.{{r|RefName|p=100|q=quote from the text}} |Makes sense only if {{para|p}} (or one of its synonyms) is present. {{para|quote}} (or {{para|q}}) underlines the superscript page number/{{wbr}}location identifier, signaling availability of a quote from the source, which pops up when the mouse is hovered over the underlined bit. Not compatible with raw apostrophe ('); use &amp;apos; instead. Raw double quote (") works. Curved quotes are disfavored by [[MOS:STRAIGHT]]. |- |<code><nowiki>{{r|1=RefName|2=Bam|3=Bar|4=Bas|p1=100|p2=10&ndash;14|p4=&sect;C|q1=Quote from 100|q4=Quote from &sect;C}}</nowiki></code> ||Text.{{r|1=RefName|2=Bam|3=Bar|4=Bas|p1=100|p2=10&ndash;14|p4=&sect;C|q1=Quote from 100|q4=Quote from &sect;C}} |In the example, not all references have quotes; make sure that e.g. {{para|1}} and {{para|p1}} and {{para|q1}} all match. |} The ref names may be defined within a {{t|reflist}} (as illustrated below) or (in the more usual way) scattered throughout the article text using e.g. {{nobr|<code><nowiki><ref name=RefName>Reference text</ref></nowiki></code>}} or {{nobr|<code><nowiki>{{refn|name=RefName|Reference text}}</nowiki></code>}}. <pre> ===References=== {{reflist|refs= <ref name=RefName>Reference text.</ref> <ref name=Bam>Bam reference text.</ref> <ref name=Bar>Bar reference text.</ref> <ref name=Bas>Bas reference text.</ref> <ref name=Bay>Bay reference text.</ref> <ref name=Baz>Baz reference text.</ref> }} ===Notes=== {{reflist|group=Notes|refs= <ref name=NtName>Note text.</ref> <ref name=NtCam>Cam note text.</ref> }} </pre> Resulting in: <div style="padding-left:1em;border-left:1px solid #9ad"> {{fake heading|sub=3|References}} {{reflist|refs= <ref name=RefName>Reference text.</ref> <ref name=Bam>Bam reference text.</ref> <ref name=Bar>Bar reference text.</ref> <ref name=Bas>Bas reference text.</ref> <ref name=Bay>Bay reference text.</ref> <ref name=Baz>Baz reference text.</ref> }} {{fake heading|sub=3|Notes}} {{reflist|group=Notes|refs= <ref name=NtName>Note text.</ref> <ref name=NtCam>Cam note text.</ref> }} </div> ==TemplateData== {{TemplateDataHeader}} <templatedata> { "params": { "1": { "label": "Reference name 1", "description": "If this is \"RefName\", the template displays <ref name=\"RefName\"/>.", "type": "string", "required": true }, "2": { "label": "Reference name 2", "description": "If this is \"RefName\", the template displays <ref name=\"RefName\"/>.", "type": "string", "suggested": true }, "3": { "label": "Reference name 3", "description": "If this is \"RefName\", the template displays <ref name=\"RefName\"/>.", "type": "string", "suggested": true }, "4": { "label": "Reference name 4", "description": "If this is \"RefName\", the template displays <ref name=\"RefName\"/>.", "type": "string" }, "5": { "label": "Reference name 5", "description": "If this is \"RefName\", the template displays <ref name=\"RefName\"/>.", "type": "string" }, "6": { "label": "Reference name 6", "description": "If this is \"RefName\", the template displays <ref name=\"RefName\"/>.", "type": "string" }, "7": { "label": "Reference name 7", "description": "If this is \"RefName\", the template displays <ref name=\"RefName\"/>.", "type": "string" }, "8": { "label": "Reference name 8", "description": "If this is \"RefName\", the template displays <ref name=\"RefName\"/>.", "type": "string" }, "9": { "label": "Reference name 9", "description": "If this is \"RefName\", the template displays <ref name=\"RefName\"/>.", "type": "string" }, "group": { "aliases": [ "g", "grp" ], "label": "Reference group", "description": "The reference group of all the references displayed; see WP:REFGROUP for help.", "type": "string", "default": "Defaults to not being in a group.", "suggested": true }, "page1": { "aliases": [ "p", "page", "pages", "pp", "p1", "pages1", "pp1" ], "label": "Pages number(s): reference 1", "description": "Adds a page number (or other location identifier) within the source. Note that you can also put this information in the original reference instead so it need only be stated once.", "example": "\"2\", \"34–38\", \"inside cover\"", "type": "content", "suggested": true }, "q1": { "aliases": [ "quote", "q", "quote1" ], "label": "Quote: reference 1", "description": "A quote from the source. Appears when hovering over the page number, so the page number must be specified.", "type": "string", "suggested": true }, "page2": { "aliases": [ "p2", "pages2", "pp2" ], "label": "Pages number(s): reference 2", "description": "Adds a page number (or other location identifier) within the source. Note that you can also put this information in the original reference instead so it need only be stated once.", "example": "\"2\", \"34–38\", \"inside cover\"", "type": "content" }, "q2": { "aliases": [ "quote2" ], "label": "Quote: reference 2", "description": "A quote from the source. Appears when hovering over the page number, so the page number must be specified.", "type": "string" }, "page3": { "aliases": [ "p3", "pages3", "pp3" ], "label": "Pages number(s): reference 3", "description": "Adds a page number (or other location identifier) within the source. Note that you can also put this information in the original reference instead so it need only be stated once.", "example": "\"2\", \"34–38\", \"inside cover\"", "type": "content" }, "q3": { "aliases": [ "quote3" ], "label": "Quote: reference 3", "description": "A quote from the source. Appears when hovering over the page number, so the page number must be specified.", "type": "string" }, "page4": { "aliases": [ "p4", "pages4", "pp4" ], "label": "Pages number(s): reference 4", "description": "Adds a page number (or other location identifier) within the source. Note that you can also put this information in the original reference instead so it need only be stated once.", "example": "\"2\", \"34–38\", \"inside cover\"", "type": "content" }, "q4": { "aliases": [ "quote4" ], "label": "Quote: reference 4", "description": "A quote from the source. Appears when hovering over the page number, so the page number must be specified.", "type": "string" }, "page5": { "aliases": [ "p5", "pages5", "pp5" ], "label": "Pages number(s): reference 5", "description": "Adds a page number (or other location identifier) within the source. Note that you can also put this information in the original reference instead so it need only be stated once.", "example": "\"2\", \"34–38\", \"inside cover\"", "type": "content" }, "q5": { "aliases": [ "quote5" ], "label": "Quote: reference 5", "description": "A quote from the source. Appears when hovering over the page number, so the page number must be specified.", "type": "string" }, "page6": { "aliases": [ "p6", "pages6", "pp6" ], "label": "Pages number(s): reference 6", "description": "Adds a page number (or other location identifier) within the source. Note that you can also put this information in the original reference instead so it need only be stated once.", "example": "\"2\", \"34–38\", \"inside cover\"", "type": "content" }, "q6": { "aliases": [ "quote6" ], "label": "Quote: reference 6", "description": "A quote from the source. Appears when hovering over the page number, so the page number must be specified.", "type": "string" }, "page7": { "aliases": [ "p7", "pages7", "pp7" ], "label": "Pages number(s): reference 7", "description": "Adds a page number (or other location identifier) within the source. Note that you can also put this information in the original reference instead so it need only be stated once.", "example": "\"2\", \"34–38\", \"inside cover\"", "type": "content" }, "q7": { "aliases": [ "quote7" ], "label": "Quote: reference 7", "description": "A quote from the source. Appears when hovering over the page number, so the page number must be specified.", "type": "string" }, "page8": { "aliases": [ "p8", "pages8", "pp8" ], "label": "Pages number(s): reference 8", "description": "Adds a page number (or other location identifier) within the source. Note that you can also put this information in the original reference instead so it need only be stated once.", "example": "\"2\", \"34–38\", \"inside cover\"", "type": "content" }, "q8": { "aliases": [ "quote8" ], "label": "Quote: reference 8", "description": "A quote from the source. Appears when hovering over the page number, so the page number must be specified.", "type": "string" }, "page9": { "aliases": [ "p9", "pages9", "pp9" ], "label": "Pages number(s): reference 9", "description": "Adds a page number (or other location identifier) within the source. Note that you can also put this information in the original reference instead so it need only be stated once.", "example": "\"2\", \"34–38\", \"inside cover\"", "type": "content" }, "q9": { "aliases": [ "quote9" ], "label": "Quote: reference 9", "description": "A quote from the source. Appears when hovering over the page number, so the page number must be specified.", "type": "string" } }, "description": "Provides a simple wrapper for up to nine consecutive <ref name=RefName/> citation tags that minimizes visual impact on the text which, along with the simpler syntax, increases code readability and ease of editing.", "paramOrder": [ "group", "1", "page1", "q1", "2", "page2", "q2", "3", "page3", "q3", "4", "page4", "q4", "5", "page5", "q5", "6", "page6", "q6", "7", "page7", "q7", "8", "page8", "q8", "9", "page9", "q9" ] } </templatedata> ==See also== * [[Help:List-defined references]], which provides all the specifications for using List-defined references, especially with regard to naming references and groups. * [[WP:CITESHORT|Shortened footnotes]] in [[Wikipedia:Citing sources]], which describes the most common way of citing multiple pages of the same source. * {{tl|sfn}}, a template that implements the most common way of citing multiple pages of the same source. * [[WP:CITEBUNDLE|Citation bundling]] in [[Wikipedia:Citing sources]], a recommended way of combining a list of several consecutive footnotes into a single footnote. * [[Wikipedia:Footnotes]] * [[Wikipedia:Citing sources]] ==Notes== {{reflist|group=note}} <includeonly>{{Sandbox other|| <!-- Categories go below this line, please; interwikis go to Wikidata, thank you! --> [[Category:Footnote templates]] [[Category:Inline templates]] }}</includeonly> 625apzz1ck02epzug5nxxrmkn3dc5li Template:R/ref 10 1620 4888 4887 2020-10-11T05:39:04Z Chrisb 1 1 revision imported 4887 wikitext text/x-wiki <includeonly>{{#tag:ref||name={{{1}}}|group={{{2}}}}}{{#if:{{{3}}}|<sup class="reference nowrap"><nowiki>:</nowiki><span {{#if:{{{4|}}}|style="border-bottom: 1px dashed;" title='"{{#tag:nowiki|{{#invoke:String|replace|{{trim quotes|s={{{4}}}}}|"|&quot;}}}}"'}}>{{{3}}}</span></sup>}}</includeonly><noinclude> {{documentation}} </noinclude> scr0fgblbhninwhssxfzty1wgn8iyyx Template:RJL 10 1145 2522 2521 2020-09-29T19:17:53Z Chrisb 1 1 revision imported 2521 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{ambox | name = RJL | type = style | small = {{{small|}}} | image = [[Image:Jct plate.svg|50x40px|link=|alt=]] | issue = This {{{1|{{SUBJECTSPACE formatted}}}}} contains a bulleted list or table of intersections which '''should be presented in a properly formatted junction table.''' | fix = Please consult [[WP:RJL|this guideline]] for information on how to create one. Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{{1|{{SUBJECTSPACE formatted}}}}}] if you can. | date = {{{date|}}} | cat = Wikipedia articles needing a junction list | all = All pages needing cleanup }} }}<noinclude> {{documentation}} </noinclude> 95xszrnrsuvjm0vmgjkotfxzj0w5ebz Template:Rank order 10 1122 2476 2475 2020-09-29T19:17:50Z Chrisb 1 1 revision imported 2475 wikitext text/x-wiki {{ ambox | name = Rank order | subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | text = This {{{1|table}}} may be more easily updated if the rank-order column (1,2,3) is [[Help:Sorting#Removing a rank column (1,2,3) from a table|removed]] and a '''[[Help:Sorting#Auto-ranking or adding a row numbering column (1,2,3) next to a table|row number column]]''' is added instead. [[Help:Sorting#Initial alphabetical sort versus initial sort by rank order|Alphabetical order]] may also help. See '''[[:Category:Articles with tables with fixed row numbers|examples here]].''' | all = Tables that may need a separate rank column }}<noinclude>{{doc|content= The '''[[Template:Rank order]]''' displays a tag-box to offer advice about sorting of tables, such as either removing a rank column from a table, or adding a separate, static row number column (1,2,3) next to a table. See [[Help:Sorting]] for more info. The template puts the article in this category: [[:Category:Tables that may need a separate rank column]]. ==See also== [[Category:List cleanup maintenance templates]] }}</noinclude> j4jpw2q67lw9azi1bhm74w9wp6d6pr7 Template:Rarely 10 1562 4772 4771 2020-10-11T05:35:24Z Chrisb 1 1 revision imported 4771 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #FC8; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="partial table-partial"|{{{1|Rarely}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} <!-- interwikis & categories --> </noinclude> enwka5vt5gj6621vwoozb8tgwuvcqvr Template:Recategorize 10 1081 2394 2393 2020-09-29T19:17:44Z Chrisb 1 1 revision imported 2393 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Recategorize}} begin-->{{Ambox | name = Recategorize | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | issue = This article appears to [[WP:DIFFUSE|be both in categories to be diffused and in their subcategories]], or is in '''too many [[WP:CATS|categories]]''', and may need [[Wikipedia:Cleanup|cleanup]]. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this page] to make sure its categories are appropriate and meet Wikipedia's [[WP:STYLE|quality standards]]. | date = {{{date|}}} | all = Too many categories }}<!--{{Recategorize}} end--> }}<noinclude> {{Documentation}} </noinclude> lmv0dj990fs80uv03tvk7hvu84j67x9 Template:Recent death 10 1082 2396 2395 2020-09-29T19:17:44Z Chrisb 1 1 revision imported 2395 wikitext text/x-wiki <!--{{Recent death}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Recent death | type = notice | image = [[File:{{Ambox globe current red}}|50x40px]] | text = This article is being '''heavily edited''' because its subject{{#ifeq:{{{multiple}}}|yes|s|}} {{#ifeq:{{{multiple}}}|yes|have|has}} recently died. Knowledge about the circumstances of the death{{#ifeq:{{{multiple}}}|yes|s|}} and surrounding events may change rapidly as more facts come to light. Initial news reports may be [[Wikipedia:Reliable sources#Breaking news|unreliable]], and the [{{fullurl:{{FULLPAGENAME}}|action=history}} most recent updates] to this article [[Wikipedia:Risk disclaimer|may not reflect]] the most current information. | removalnotice = yes | fix = Please feel free to [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] (but note that updates without valid and reliable references will be removed) or discuss changes on the [[{{TALKPAGENAME}}|talk page]]. }}<includeonly>{{#if:{{NAMESPACE}}|<!-- don't categorize -->|[[Category:Recent deaths{{#if:{{{1|}}}|{{!}}{{{1}}}}}]]}}</includeonly><!--{{Recent death}} end--><noinclude>{{Documentation}}</noinclude> rn7sdyr98q3rtzkt35u06zgk59mhice Template:Recent death presumed 10 1083 2398 2397 2020-09-29T19:17:45Z Chrisb 1 1 revision imported 2397 wikitext text/x-wiki <!--{{Recent death presumed}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Recent death presumed | type = notice | image = [[File:{{Ambox globe current red}}|50x40px]] | text = '''This article is about [[Deaths in {{CURRENTYEAR}}|a person who has been presumed dead]].''' Some information, such as that pertaining to the circumstances of the person's presumed death and surrounding events, may change rapidly as more facts become known. Initial news reports may be [[Wikipedia:Identifying reliable sources#Breaking news|unreliable]]. The [{{fullurl:{{FULLPAGENAME}}|action=history}} last updates] to this article [[Wikipedia:Risk disclaimer|may not reflect]] the most current information. | removalnotice = yes | fix = Please feel free to [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] (but note that updates without valid and reliable references will be removed) or discuss changes on the [[{{TALKPAGENAME}}|talk page]]. }}<includeonly>{{#if:{{NAMESPACE}}|<!-- don't categorize -->|[[Category:Recent deaths|{{{1|{{PAGENAME}}}}}]] }}</includeonly><!--{{Recent death presumed}} end--><noinclude>{{Documentation}}</noinclude> j3qwdih3j74t45xlijf27xnx21httmv Template:Recentism 10 1123 2478 2477 2020-09-29T19:17:50Z Chrisb 1 1 revision imported 2477 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Recentism}} begin-->{{Ambox | name = Recentism | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | class = ambox-Recentism | issue = This {{{1|article or section}}} '''appears to be [[Wikipedia:Recentism|slanted towards recent events]].''' | fix = Please try to keep recent events in historical perspective and add more content related to non-recent events. | removalnotice = yes | date = {{{date|}}} | cat = Articles slanted towards recent events }}<!--{{Recentism}} end--> }}<noinclude> {{Documentation}} </noinclude> 2dwj59gi9uayd15ooi6tx7kjyif7zy5 Template:Recently revised 10 1223 2678 2677 2020-09-29T19:18:05Z Chrisb 1 1 revision imported 2677 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{ambox | name = Recently revised | type = style | image = [[Image:Ambox clock yellow.svg|50x40px]] | text = This {{{1|article}}} '''recently underwent a major revision or rewrite''' and may need further review. You can help Wikipedia by [[Wikipedia:Contributing FAQ|assisting in the revision]]. }}{{DMCA|Recently revised|from|{{{date|}}}}}<!--{{Recently revised}} end--> }}<noinclude>{{Documentation}}</noinclude> 6skawyneub4zsx4tmds65tsdy6yo38s Template:Refexample 10 1213 2658 2657 2020-09-29T19:18:04Z Chrisb 1 1 revision imported 2657 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{ambox | name = {{{name|Refexample}}} | subst = {{{subst|<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>}}} | small = {{#if:{{{small|}}}|left}} | type = content | class = ambox-Refimprove | image = [[File:Ambox important.svg|50x40px|alt=]] | smallimage = none | issue = This {{#if:{{{1|}}}|{{{1}}}|article}} '''gives [[Template:Refexample#Self-sourcing_examples|self-sourcing popular culture examples]] without describing their significance in the context of the article.''' | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{#if:{{{1|}}}|{{{1}}}|article}}] by [[Help:Introduction to referencing with Wiki Markup/1|adding citations to reliable sources]] that describe the examples' significance, and by removing less pertinent examples. [[Wikipedia:Verifiability|Unsourced]] or poorly sourced material may be challenged or removed. | removalnotice = yes | talk = {{{talk|}}} | date = {{{date|}}} | cat = Articles needing additional references | all = All articles needing additional references }}<!--{{Refexample}} end--> }}<noinclude> {{documentation}}<!-- Please add categories and interwikis to the /doc subpage, thanks --> </noinclude> oyo28evrcg9j2rjo12d7jtx2bcr2n9h Template:Refexample section 10 1214 2660 2659 2020-09-29T19:18:04Z Chrisb 1 1 revision imported 2659 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{refexample|section | name = Refexample section | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | date = {{{date|}}} | talk = {{{talk|}}} | small = {{{small|}}} }} }}<noinclude> {{documentation}} </noinclude> mganyuir3kdjiuxsb9lpetfy7rx4j4v Template:Refimprove-spam 10 1219 2670 2669 2020-09-29T19:18:04Z Chrisb 1 1 revision imported 2669 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = {{{name|Refimprove-spam}}} | subst = {{{subst|<includeonly>{{subst:substcheck}}</includeonly>}}} | small = {{#if:{{{small|}}}|left}} | type = content | class = ambox-Refimprove | image = [[File:Question book-new.svg|50x40px|alt=]] | issue = This {{{1|article}}} contains references that '''[[Wikipedia:What Wikipedia is not#Wikipedia is not a soapbox or means of promotion|appear to be spam]]'''. Wikipedia is not a collection of links and should not be used for advertising. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by [[Help:Introduction to referencing with Wiki Markup/1|adding citations to reliable sources]]. See [[Wikipedia:External links]] and [[Wikipedia:Spam]] for details. | removalnotice = yes | talk = {{{talk|}}} | date = {{{date|}}} | cat = Articles needing additional references | all = All articles needing additional references }}<!--{{refimprove-spam}} end--> }} <noinclude>{{documentation}}</noinclude> h9uo64jg4vyu445whxuq4hui8t691kx Template:Reflist 10 1563 4774 4773 2020-10-11T05:35:24Z Chrisb 1 1 revision imported 4773 wikitext text/x-wiki <div class="reflist <!-- -->{{#if: {{{1|}}} {{{colwidth|}}} | columns references-column-width }}" style="<!-- -->{{#if: {{{1|}}} | {{#iferror: {{#ifexpr: {{{1|1}}} > 1 }} | {{column-width|1={{{1}}}}} | {{#switch:{{{1|}}}|1=|2={{column-width|1=30em}}|#default={{column-width|1=25em}}}} }} | {{#if: {{{colwidth|}}} | {{column-width|1={{{colwidth}}}}} }} }} list-style-type: <!-- -->{{{liststyle|{{#switch: {{{group|}}} | upper-alpha | upper-roman | lower-alpha | lower-greek | lower-roman = {{{group}}} | #default = decimal}}}}};"> {{#tag:references|{{{refs|}}}|group={{{group|}}}|responsive={{#if:{{{1|}}}{{{colwidth|}}}|0|1}}}}</div>{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using reflist with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Reflist]] with unknown parameter "_VALUE_"|ignoreblank=y| 1 | colwidth | group | liststyle | refs }}<noinclude> {{Documentation}} </noinclude> 2k096ppl7lxbcjqmfluu9x2sc91rmzl Template:Regional 10 1564 4776 4775 2020-10-11T05:35:24Z Chrisb 1 1 revision imported 4775 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background:#FFB;vertical-align:middle;text-align:{{{align|center}}}; {{{style|}}}" class="table-partial"|{{{1|Regional}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> 2tcvxdd9hj7p8v0q9o1m4laootskqbk Template:Release-candidate 10 1565 4778 4777 2020-10-11T05:35:24Z Chrisb 1 1 revision imported 4777 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #BFD; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-release-candidate"|{{{1|[[Software release life cycle#Release candidate|Release candidate]]}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> lvqtcgp19zgoxq85rdowamt8pag67gg Template:Religious text primary 10 1084 2400 2399 2020-09-29T19:17:45Z Chrisb 1 1 revision imported 2399 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Religious text primary}} begin-->{{Ambox | name = Religious text primary | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | issue = This {{{1|article}}} uncritically uses [[religious text|texts from within a religion or faith system]] '''without referring to [[WP:PSTS|secondary sources]] that critically analyze them.''' | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by adding references to [[Wikipedia:Reliable sources|reliable secondary sources]], with multiple points of view. | date = {{{date|}}} | cat = Articles {{#ifeq:{{{1}}}|section|needing additional references|lacking reliable references}} | all = All articles {{#ifeq:{{{1}}}|section|needing additional references|lacking reliable references}} | cat2 = Articles needing more viewpoints | removalnotice = yes }}<!--{{Religious text primary}} end--> }}<noinclude> {{Documentation}} [[Category:Citation and verifiability maintenance templates|Religious text primary]] </noinclude> bofur6455i5b2tzg6qz1xxwz1w5n6vb Template:Remove first word 10 1666 4980 4979 2020-10-11T05:50:44Z Chrisb 1 1 revision imported 4979 wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:String|replace|source={{{1}}}|pattern=^[^{{{sep|%s}}}]*{{{sep|%s}}}*|replace=|plain=false}}<noinclude>{{Documentation}}</noinclude> q3rvb3vj9phd54s3yecz8846q90qfgo Template:Rename section 10 1225 2682 2681 2020-09-29T19:18:05Z Chrisb 1 1 revision imported 2681 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = Rename section | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | class = ambox-RenameSection | issue = This {{{1|section}}}'s '''title may not reflect its contents or [[MOS:HEADINGS|does not comply with standard formatting]] and is requested to be renamed'''. | talk = {{{talk|{{{discuss|{{{talksection|}}}}}}}}} | fix = {{#if:{{{reason|}}} |''{{{reason}}}.''}} You can help by thinking of a more appropriate title [{{fullurl:{{FULLPAGENAME}}|action=edit&section={{{section|}}}}} and renaming the section]. This may require further changes like splitting the section's contents. | removalnotice = yes | date = {{{date|}}} | cat = Wikipedia articles with sections named inappropriately | all = All articles with sections named inappropriately }} }}<noinclude> {{Documentation}} </noinclude> feqmx0c7vkvahd4uxbtft68bl3t2331 Template:Repetition 10 1085 2402 2401 2020-09-29T19:17:45Z Chrisb 1 1 revision imported 2401 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Repetition}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Repetition | type = style | issue = This {{{1|article}}} '''may contain too much repetition or redundant language'''. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it] by merging similar text or removing repeated statements. | date = {{{date|}}} | removalnotice = yes }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Repetition}} end--> }}<noinclude>{{Documentation}}</noinclude> 4oz35m1ktdrom1f62h6ouoxw7n4x17o Template:Repetition section 10 1086 2404 2403 2020-09-29T19:17:45Z Chrisb 1 1 revision imported 2403 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Repetition}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Repetition section | type = style | text = This {{{1|section}}} '''may contain content that is repetitive or redundant of text elsewhere in the article'''. Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it] by merging similar text or removing repeated statements. {{#if:{{{date|}}}|{{small|''({{{date}}})''}}}} }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Repetition}} end--> }}<noinclude>{{Documentation}}</noinclude> 5ve46ke3slekl7p58qx3ngfbizs0mxh Template:Research paper 10 1185 2602 2601 2020-09-29T19:17:59Z Chrisb 1 1 revision imported 2601 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Research paper}} begin-->{{Ambox | name = Research paper | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | class = ambox-essay-like | issue = This {{{1|article}}} '''is written like a [[Wikipedia:What Wikipedia is not#Wikipedia is not a manual, guidebook, textbook, or scientific journal|research paper or scientific journal]] that may use [[Wikipedia:Make technical articles understandable|overly technical terms]] or may not be written [[WP:TONE|like an encyclopedic article]]'''. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] by rewriting it in an [[Wikipedia:Encyclopedic style|encyclopedic style]]. | date = {{{date|}}} | removalnotice = yes | small = {{{small|}}} }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Research paper}} end--> }} <noinclude> {{Documentation}} </noinclude> 20nhkh2scatbtazf8rnr5q4zjelq1ck Template:Review 10 1095 2422 2421 2020-09-29T19:17:46Z Chrisb 1 1 revision imported 2421 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Review}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Review | type = style | issue = This {{{1|article}}} '''reads like a [[Wikipedia:What Wikipedia is not#SOAPBOX|{{{2|review}}}]] rather than an encyclopedic description of the subject'''. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] to make it [[Wikipedia:Neutral point of view|neutral]] in tone and meet Wikipedia's [[Wikipedia:Manual of Style|quality standards]]. | date = {{{date|}}} }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Review}} end--> }}<noinclude>{{Documentation}}</noinclude> lss84nj592lkvdbvpsbvd89yu020vgn Template:Rewrite section 10 1147 2526 2525 2020-09-29T19:17:54Z Chrisb 1 1 revision imported 2525 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Cleanup rewrite|name=Rewrite section|1={{{reason|}}}|2=section|date={{{date|}}}|reason={{{reason|}}}}} }}<noinclude> [[Category:Cleanup templates]] </noinclude> l5rj27es8arn6h8tn2xz3k9y67h0zf8 Template:Rh 10 1566 4780 4779 2020-10-11T05:35:24Z Chrisb 1 1 revision imported 4779 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #ececec; color: black; font-weight: bold; vertical-align: middle; text-align: {{{align|left}}}; {{{style|}}}" class="table-rh"<noinclude> |} {{documentation}} </noinclude> mve7sywn6k9a1gku1b6mknzfx9ohtmh Template:Rh2 10 1567 4782 4781 2020-10-11T05:35:24Z Chrisb 1 1 revision imported 4781 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: {{Rh2/bgcolor}}; color: black; vertical-align: middle; text-align: {{{align|left}}}; font-weight: bolder; {{{style|}}}" scope="row" class="rh heading table-rh"<noinclude>| Row Header |} {{documentation}} </noinclude> 758jl1phck3wij62oqkyvx123wtvvsr Template:Rh2/bgcolor 10 1568 4784 4783 2020-10-11T05:35:24Z Chrisb 1 1 revision imported 4783 wikitext text/x-wiki <nowiki>#edf</nowiki> ryhrtp7orri5g8yezb22zknu80e8y65 Template:Rough translation 10 1190 2612 2611 2020-09-29T19:18:00Z Chrisb 1 1 revision imported 2611 wikitext text/x-wiki <!--{{Rough translation}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates]]</includeonly>|}}{{Ambox | name = Rough translation | type = style | class = ambox-rough_translation | image = [[File:Translation to english arrow.svg|50x40px|Translation arrow icon]] | issue = This {{{3|article}}} '''is a rough [[Wikipedia:translation|translation]] from {{#if:{{#invoke:ISO 639 name|iso_639_code_exists|{{{1|xyzzy}}}}}|{{ISO 639 name|{{{1}}}}}|{{{1|another language}}}}}'''. It may have been generated by a computer or by a translator without dual proficiency. | fix = Please help to [{{fullurl:{{FULLPAGENAME}}|action=edit}} enhance the translation]. {{#if: {{{2|{{{1|}}}}}} | The original article is {{#if: {{{2|}}} | under "{{{2}}}" | {{#if: {{Mw lang|fn=is_name|{{{1}}}}} | under "{{#language:{{Mw lang|fn=code_from_name|{{{1}}}}}}}" | {{#if: {{Mw lang|fn=is_code|{{{1}}}}} | under "{{#language:{{{1}}}}}" | available }} }} }} in the ''"languages"'' sidebar. }} {{#if:{{NAMESPACE}}||{{#ifeq: {{yesno|{{{listed|no}}}}}|yes|---- See '''[[Wikipedia:Pages needing translation into English#{{PAGENAME}}|this article's entry]]''' on [[Wikipedia:Pages needing translation into English|Pages needing translation into English]] for discussion.|{{pnt notice|{{{1|unknown}}}|cleanup}}}}}} | cat = Wikipedia articles needing cleanup after translation }}<includeonly>{{#if:{{{1|}}} |{{#ifexist:Category:Wikipedia articles needing cleanup after translation from {{{1}}}|[[Category:Wikipedia articles needing cleanup after translation from {{{1}}}]] |{{#ifexist:Category:Wikipedia articles needing cleanup after translation from {{ISO 639 name|{{{1}}}}}|[[Category:Wikipedia articles needing cleanup after translation from {{ISO 639 name|{{{1}}}}}]]|[[Category:Wikipedia articles needing cleanup after translation from {{{1}}}]]}} }} |[[Category:Wikipedia articles needing cleanup after translation from unknown language]] }}</includeonly><!--{{Rough translation}} end--><noinclude> {{Documentation}} <!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --></noinclude> kt6bxvc4ph43dxm50vki91y5nwowaa7 Template:Runner-up 10 1569 4786 4785 2020-10-11T05:35:25Z Chrisb 1 1 revision imported 4785 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #D1E8EF; vertical-align: middle; text-align: {{{align|center}}}; {{{style|text-transform: capitalize;}}}" class="table-cast"|{{{1|runner-up}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} [[Category:Television table cell templates]] [[Category:Big Brother (franchise) templates]] </noinclude> nzhixxv7imztmpegfgctcan539zmbya Template:SIA-Conversion-Expand 10 1198 2628 2627 2020-09-29T19:18:02Z Chrisb 1 1 revision imported 2627 wikitext text/x-wiki {{Ambox | name = SIA-Conversion-Expand | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | image = [[File:Edit-clear.svg|40x40px|link=|alt=]] | imageright = [[File:Merge-arrow.svg|alt=|link=]] | style = CSS values | textstyle = CSS values | text = This '''{{PAGENAME}}''' topic, formerly a disambiguation page, should provide at least a [[Wikipedia:Set index article|brief description of the topic and index all the notable examples that have Wikipedia articles]]. | date = {{{date|}}} | all = Former disambiguation pages converted to set index articles }}<noinclude> {{Documentation}} </noinclude> 1bidj5kg56zn5yn9xtmj9mhyluv16ue Template:Safe 10 1570 4788 4787 2020-10-11T05:35:25Z Chrisb 1 1 revision imported 4787 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background:#ffffff; color:black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-no" | {{{1|Safe}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> 5ywosaakvft53svwoo88a3wsr3i0nzl Template:Samoan script needed 10 1066 2364 2363 2020-09-29T19:17:42Z Chrisb 1 1 revision imported 2363 wikitext text/x-wiki {{Script needed |language = Samoan |image = }} c6l7imjnz6g0me6690zyle9tiqgyf3o Template:Sandbox other 10 877 1986 1985 2020-09-29T19:15:37Z Chrisb 1 1 revision imported 1985 wikitext text/x-wiki {{#if:{{#ifeq:{{#invoke:String|sublength|s={{SUBPAGENAME}}|i=0|len=7}}|sandbox|1}}{{#ifeq:{{SUBPAGENAME}}|doc|1}}{{#invoke:String|match|{{PAGENAME}}|/sandbox/styles.css$|plain=false|nomatch=}}|{{{1|}}}|{{{2|}}}}}<!-- --><noinclude>{{documentation}}</noinclude> h1idujwaw20aducxsd1gc4ovgnjikqa Template:Sans-serif 10 1648 4944 4943 2020-10-11T05:50:39Z Chrisb 1 1 revision imported 4943 wikitext text/x-wiki <noinclude><pre></noinclude><span style="font-family:sans-serif;">{{{1}}}</span><noinclude></pre> [[Category:Text-specific formatting and function templates]] </noinclude> ji4suc347jcnxc591ovm74u01o0ne04 Template:Schedule 10 1096 2424 2423 2020-09-29T19:17:46Z Chrisb 1 1 revision imported 2423 wikitext text/x-wiki <!--{{Schedule}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Schedule |type = style | class = ambox |text = This article or section contains a '''current television or radio schedule'''. Please note that '''[[WP:NOTTVGUIDE|Wikipedia articles should not list current broadcast schedules]]'''. Additionally, schedules which have been copied and pasted from an external source may ''possibly'' be in violation of [[Wikipedia:Copyrights|copyright]]. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help rewrite this information] as [[prose]]. | removalnotice = yes | date = {{#if:{{{date|}}}|{{small|{{{date}}}}}}} }}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{{category|[[Category:Articles which include current schedules]]}}}}}</includeonly><!--{{Schedule}} end--><noinclude> {{Documentation}} </noinclude> 7mofjgr3rvpzme1h1ypo40w10zeurjo Template:Scheduled 10 1571 4790 4789 2020-10-11T05:35:25Z Chrisb 1 1 revision imported 4789 wikitext text/x-wiki <noinclude> {| class="wikitable" |</noinclude>style="background: #dfdfff; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-planned" | {{{1|Scheduled}}}<noinclude> |} {{documentation|Template:Table cell templates/doc}} </noinclude> 7yxc8idw2i7tb4ety3k2p4cuq9ywdkd Template:Science review 10 1097 2426 2425 2020-09-29T19:17:47Z Chrisb 1 1 revision imported 2425 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Sciencereview}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Science review | type = content | image = [[Image:Ambox question.svg|40px]] | issue = This {{{1|article}}} '''reads like a scientific review article and potentially contains [[Wikipedia:Neutral point of view|biased]] [[Wikipedia:No original research#Synthesis of published material|syntheses]] of [[Wikipedia:No original research#Primary, secondary and tertiary sources|primary sources]].''' | fix = Please replace inadequate primary references with secondary sources. See the [[{{TALKPAGENAME}}#{{{talksection|Review}}}|talk page]] for details. {{#if:{{{date|}}}|''({{{date}}})''|}} | removalnotice = yes }}{{DMCA|Articles that may contain original research|from|{{{date|}}}}}<!--{{Sciencereview}} end--> }}<noinclude> {{Documentation}} <!-- Add categories and inter-wikis to the /doc subpage, not here! --> </noinclude> hnb8u7ht1pqqye8hepdhggoh133uw4b Template:Sdash 10 1572 4792 4791 2020-10-11T05:35:25Z Chrisb 1 1 revision imported 4791 wikitext text/x-wiki {| class="wikitable sortable" |- | <onlyinclude>data-sort-value="{{{sort|}}}" style="{{{style|vertical-align:middle; text-align:center}}}" class="{{{class|table-na}}}" | {{{1|—}}}</onlyinclude> |} {{documentation|content={{Table cell templates/doc}}}} m7zd32cnoeb8ggg8nvln2jh283xqmqz Template:Section link 10 1316 2864 2863 2020-09-29T19:18:21Z Chrisb 1 1 revision imported 2863 wikitext text/x-wiki {{#invoke:Section link|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> gh09dld5dhux6n50izjp2r31i71ye17 Template:Sections 10 1098 2428 2427 2020-09-29T19:17:47Z Chrisb 1 1 revision imported 2427 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Sections}} begin-->{{Ambox | name = Sections | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | class = ambox-sections | issue = {{#ifeq:{{{1}}}|section |This section '''is too long to read comfortably, and needs [[Help:Section#Subsections|subsections]]'''. |This article '''should be divided into [[Help:Section|sections]] by topic, to make it more accessible'''. }} | fix = {{#ifeq:{{{1}}}|section |Please format the article according to the guidelines laid out in the [[MOS:HEAD|Manual of Style]]. |Please help by adding section headings in accordance with Wikipedia's [[MOS:HEAD|Manual of Style]]. }} | date = {{{date|}}} | cat = Articles needing sections | all = All articles needing sections | cat2 = Articles covered by WikiProject Wikify | all2 = All articles covered by WikiProject Wikify }}<!--{{Sections}} end--> }}<noinclude> {{Documentation}} </noinclude> clg1dhllrpc2w1vu5g0lbktx6wcyhop Template:See also 10 1455 3214 3213 2020-10-11T01:32:04Z Chrisb 1 1 revision imported 3213 wikitext text/x-wiki <includeonly>{{#invoke:Labelled list hatnote|labelledList|See also}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> dn9i3dv2bt8lqifr6vkbycoya78rnav Template:See also/doc 10 1479 3262 3261 2020-10-11T01:41:30Z Chrisb 1 1 revision imported 3261 wikitext text/x-wiki {{documentation subpage}} {{used in system|in [[MediaWiki:wantedpages-summary]]}} {{lua|Module:Labelled list hatnote}} {{high-risk| 141184 }} This template is used to create '''[[WP:Hatnotes|hatnotes]] to point to a small number of other related titles''' at the '''top of [[Help:Section|article sections]]''' (excluding the [[WP:LEAD|lead]]) according to [[Wikipedia:Layout]]. It looks like this: {{See also|Article}} Do not use this template on top of a page, where hatnotes are for disambiguation and [[WP:RELATED|not for related topics]]. Do not use this templete inside [[Wikipedia:Manual of Style/Layout#"See also" section|the ''"See also" section'']] at the end of an article, or for links to other articles or subsections of the same article within regular article text. Where subsections are linked to, [[Template:Section link]] may be suitable instead. For use on category pages, the corresponding template is [[Template:Category see also]]. Refer to the examples below to see how the template handles link targets containing section links and commas. ==Usage== ; Basic usage: &#123;{See also|''page1''|''page2''|''page3''|...}} ; All parameters: &#123;{See also|''page1''|''page2''|''page3''| ... |label 1 = ''label 1''|label 2 = ''label2''|label 3 = ''label3''| ... |l1 = ''label1''|l2 = ''label2''|l3 = ''label3''| ... |selfref = ''yes''|category = ''no''}} ==Parameters== This template accepts the following parameters: * <code>1</code>, <code>2</code>, <code>3</code>, ... – the pages to link to. At least one page name is required. Categories and files are automatically escaped with the [[Help:Colon trick|colon trick]], and links to sections are automatically formatted as ''page § section'', rather than the MediaWiki default of ''page#section''. * <code>label 1</code>, <code>label 2</code>, <code>label 3</code>, ...; or <code>l1</code>, <code>l2</code>, <code>l3</code>, ...; optional labels for each of the pages to link to. * <code>selfref</code> – if set to "yes", "y", "true" or "1", adds the CSS class "selfref". This is used to denote self-references to Wikipedia. See [[Template:Selfref]] for more information. * <code>category</code> – if set to "no", "n", "false", or "0", suppresses the error tracking category ([[:Category:Hatnote templates with errors]]). This only has an effect if the first positional parameter (the page to link to) is omitted. == Examples == * <code><nowiki>{{See also|Article}}</nowiki></code> → {{See also|Article}} * <code><nowiki>{{See also|Article#Section}}</nowiki></code> → {{See also|Article#Section}} * <code><nowiki>{{See also|Article#Section|label 1=Custom section label}}</nowiki></code> → {{See also|Article#Section|label 1=Custom section label}} * <code><nowiki>{{See also|Article1|Article2|Article3}}</nowiki></code> → {{See also|Article1|Article2|Article3}} * <code><nowiki>{{See also|Article1|Article,2|Article3}}</nowiki></code> → {{See also|Article1|Article,2|Article3}} * <code><nowiki>{{See also|Article1|l1=Custom label 1|Article2|l2=Custom label 2}}</nowiki></code> → {{See also|Article1|l1=Custom label 1|Article2|l2=Custom label 2}} * <code><nowiki>{{See also|Veni, vidi, vici|Julius Caesar}}</nowiki></code> → {{See also|Veni, vidi, vici|Julius Caesar}} * <code><nowiki>{{See also|Veni, vidi, vici|Julius Caesar#Civil war}}</nowiki></code> → {{See also|Veni, vidi, vici|Julius Caesar#Civil war}} * <code><nowiki>{{See also|Julius Caesar#Civil war|Veni, vidi, vici}}</nowiki></code> → {{See also|Julius Caesar#Civil war|Veni, vidi, vici}} * <code><nowiki>{{See also|Julius Caesar#Civil war|Crossing the Rubicon}}</nowiki></code> → {{See also|Julius Caesar#Civil war|Crossing the Rubicon}} ==Errors== If no page names are supplied, the template outputs the following message with the (help) wikilink pointing to the "Errors" section of this page: *{{See also|category=no}} If you see this error message, it is for one of three reasons: # No parameters were specified (the template code was <code><nowiki>{{See also}}</nowiki></code> with no pipe character nor page to link to). Please use <code><nowiki>{{See also|</nowiki>''page''<nowiki>}}</nowiki></code> instead. # Some parameters were specified, but no page names were included. For example, the template text <code><nowiki>{{See also|selfref=yes}}</nowiki></code> will produce this error. Please use (for example) <code><nowiki>{{See also|</nowiki>''page''<nowiki>|selfref=yes}}</nowiki></code> instead. # A page name was specified, but it contains an equals sign ("="). The equals sign has a special meaning in template code, and because of this it cannot be used in template parameters that do not specify a parameter name. For example, the template code <code><nowiki>{{See also|1+1=2|2+2=4}}</nowiki></code> will produce this error. To work around this, you can specify the parameter name explicitly by using <code>1=</code>, <code>2</code>, etc., before the page name, like this: <code><nowiki>{{See also|1=1+1=2|2=2+2=4}}</nowiki></code>. If you see this error message and are unsure of what to do, please post a message on [[WP:HD|the help desk (WP:HD)]], and someone should be able to help you. To see a list of wikilinks to articles that contain this error message, see the [[Wikipedia:Maintenance|maintenance category]]: [[:Category:Hatnote templates with errors]]. ==TemplateData== {{Collapse top|[[Wikipedia:TemplateData|TemplateData]] documentation used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools}} {{TemplateData header|noheader=1}} <templatedata> { "description": "This template creates a hatnote to point to a small number of related pages. It is placed at the top of a section, directly underneath the section heading.", "params": { "1": { "label": "Page 1", "description": "The name of the first page that you want to link to.", "type": "wiki-page-name", "required": true, "example": "Article name" }, "2": { "label": "Page 2", "description": "The name of the second page that you want to link to.", "type": "wiki-page-name", "required": false }, "3": { "label": "Page 3", "description": "The name of the third page that you want to link to. More pages can be added using the parameters \"4\", \"5\", \"6\", etc.", "type": "wiki-page-name", "required": false }, "label 1": { "label": "Label 1", "type": "string", "description": "What the first linked article is to be displayed as. ", "aliases": [ "l1" ] }, "label 2": { "label": "Label 2", "type": "string", "description": "What the second linked article is to be displayed as.", "aliases": [ "l2" ] }, "selfref": { "type": "boolean", "label": "Self reference", "description": "Set to \"yes\" if the template is a self-reference to Wikipedia that would not make sense on mirrors or forks of the Wikipedia site.", "example": "yes", "default": "no" }, "category": { "label": "Category", "description": "Set to \"no\", \"n\", \"false\", or \"0\" to suppresses the error tracking category (Category:Hatnote templates with errors). This only has an effect if no page names are specified.", "type": "boolean", "default": "yes", "example": "no" }, "label 3": { "aliases": [ "l3" ], "type": "string", "label": "Label 3", "description": "What the third linked article is to be displayed as. Other labels can be added by using increasing numbers (starting with \"label 4\" or \"l4\" for page 4) as parameter names." } }, "format": "inline" } </templatedata> {{Collapse bottom}} ==See also== *{{tl|For}} *{{tl|See also if exists}} *{{tl|Template see also}} *{{tl|Category see also}} *{{tl|Main}} *{{tl|See}} (redirect to {{tl|Further}}) *{{tl|Hatnote}} {{Hatnote templates}} <includeonly>{{Sandbox other|| <!-- Categories go here and interwikis go in Wikidata. --> [[Category:Exclude in print]] [[Category:Hatnote templates]] [[Category:Related-topic templates]] [[Category:Wikipedia page-section templates]] [[Category:Wikipedia see also]] }}</includeonly> dd27psgl1mvqvsq9ikjzuald659og10 Template:Self-published 10 1099 2430 2429 2020-09-29T19:17:47Z Chrisb 1 1 revision imported 2429 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Self-published}} begin-->{{Ambox | name = Self-published | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | class = ambox-self-published | issue = This {{{1|article}}} '''may contain excessive or inappropriate references to [[Wikipedia:Verifiability#Self-published sources|self-published sources]]'''. {{#if:{{{2|}}}|The source in dispute is: {{{2}}}.}} | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it] by removing references to unreliable [[Wikipedia:Reliable sources|sources]] where they are used inappropriately. | date = {{{date|}}} | cat = Articles with self-published sources | all = All articles with self-published sources |removalnotice= yes }}<!--{{Self-published}} end--> }}<noinclude> {{Documentation}} </noinclude> c0ggtifj77w7ohgxg91bxql907jrgye Template:Self-reference 10 1100 2432 2431 2020-09-29T19:17:47Z Chrisb 1 1 revision imported 2431 wikitext text/x-wiki <!--{{Self-reference}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Self-reference | type = style | issue = This {{{section|{{{1|article}}} }}} '''may contain [[Wikipedia:Self-references to avoid|inappropriate self-references]] to the Wikipedia project or to itself'''. | fix = Please address the problem by removing references to Wikipedia or to the article as a document. {{#if:{{{talk|}}}|See the [[{{NAMESPACE}} talk:{{PAGENAME}}#{{{talk}}}|talk page]] for details.}} | date = {{{date|}}} }}{{#switch:{{NAMESPACE}}||Talk=[[Category:Articles containing self-references]]|}}<!--{{Self-reference}} end--><noinclude>{{Documentation}}</noinclude> 4rqm75n96klugj2s5tbifo06rin50r0 Template:Shade 10 1573 4794 4793 2020-10-11T05:35:25Z Chrisb 1 1 revision imported 4793 wikitext text/x-wiki <noinclude> {|class="wikitable" |- |</noinclude>style="background: {{shade/bgcolor|a={{#expr:{{#if:{{{invert|}}}|1-}}{{{1|0}}}/{{{total|100}}} round 2}}|r={{{red|{{{r|255}}}}}}|g={{{green|{{{g|0}}}}}}|b={{{blue|{{{b|0}}}}}}}}; color: #222; vertical-align: {{{valign|middle}}}; text-align: {{{align|right}}}; {{{style|}}}"|{{{front|}}}{{#if:{{{noformat|}}}|{{{1|0}}}|{{formatnum:{{{1|0}}}}}}}{{Ensure AA contrast ratio|{{shade/bgcolor|a={{#expr:{{#if:{{{invert|}}}|1-}}{{{1|0}}}/{{{total|100}}} round 2}}|r={{{red|{{{r|255}}}}}}|g={{{green|{{{g|0}}}}}}|b={{{blue|{{{b|0}}}}}}}}|#222|category=[[Category:Invalid color contrast from shade]]}}<noinclude> |} {{documentation}} </noinclude> ptygkeqe26rl63rgqokhf450hfq4w3f Template:Shade/bgcolor 10 1574 4796 4795 2020-10-11T05:35:25Z Chrisb 1 1 revision imported 4795 wikitext text/x-wiki <noinclude>{{code|</noinclude>rgb(<includeonly>{{#expr:</includeonly>({{{r}}}*{{{a}}}+255*(1-{{{a}}}))<includeonly>}}</includeonly>,<includeonly>{{#expr:</includeonly>({{{g}}}*{{{a}}}+255*(1-{{{a}}}))<includeonly>}}</includeonly>,<includeonly>{{#expr:</includeonly>({{{b}}}*{{{a}}}+255*(1-{{{a}}}))<includeonly>}}</includeonly>)<noinclude>}}{{documentation|content= Calculates an rgba naively blended over a white background, i.e. :<math>C_o = C_a \alpha + 255 (1 - \alpha)</math> }}</noinclude> ni788ku39prwzorj8jjooc3pqq9vaet Template:Sho 10 1575 4798 4797 2020-10-11T05:35:25Z Chrisb 1 1 revision imported 4797 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #f0e68c; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-no2"|{{{1|Shortlisted}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> s9hrhg6nas7yunvf2j4bi43qf0jttk1 Template:Shortcut 10 1328 2888 2887 2020-09-29T19:18:26Z Chrisb 1 1 revision imported 2887 wikitext text/x-wiki <includeonly>{{#invoke:Shortcut|main}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 5idoxkkbt62sniipoe18t8iorl88qpo Template:Sidebar 10 1456 3216 3215 2020-10-11T01:32:04Z Chrisb 1 1 revision imported 3215 wikitext text/x-wiki {{#invoke:Sidebar|sidebar}}<noinclude> {{documentation}}</noinclude> jzouzofoaugku1umcgwhk1sk23s7qrm Template:Site active 10 1576 4800 4799 2020-10-11T05:35:25Z Chrisb 1 1 revision imported 4799 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #90FF90; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="active table-siteactive"|{{{1|Active}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> om01olkcv6x2l9fmkxbfaar4ouf50ij Template:Site inactive 10 1577 4802 4801 2020-10-11T05:35:25Z Chrisb 1 1 revision imported 4801 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #F99; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="inactive table-siteinactive"|{{{1|Inactive}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> 8uzldjk6jgpnh6qt3gojufgtk69z6s1 Template:Some 10 1578 4804 4803 2020-10-11T05:35:25Z Chrisb 1 1 revision imported 4803 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #FFD; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="partial table-partial"|{{{1|Some}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> p9106p3u0jq1ynld7259ck5391bof45 Template:Sometimes 10 1579 4806 4805 2020-10-11T05:35:26Z Chrisb 1 1 revision imported 4805 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #b0c4de; color: black; vertical-align: middle; text-align: center; " class="partial table-partial"|{{{1|Sometimes}}}<noinclude> |} {{documentation|Template:Table cell templates/doc}} <!-- interwikis & categories --> </noinclude> ox9im9z8q3qxedhmt0t2ldgzr3e3w90 Template:Sources exist 10 1236 2704 2703 2020-09-29T19:18:07Z Chrisb 1 1 revision imported 2703 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Page numbers needed}} begin-->{{Ambox | name = Sources exist | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | image = [[File:Text document with page number icon.svg|50x40px|alt=|link=]] | issue = There do not appear to be enough [[WP:Citing sources|references]] currently present in this article to demonstrate [[WP:Notability|notability]]. However, <u>an editor has performed a search</u> and claims that there are sufficient sources to indicate that this '''is a notable topic'''. | fix = <br>You can help to improve the article by adding citations to [[Wikipedia:Reliable sources|reliable sources]]. Ideas for references may also be found on the [[:{{TALKPAGENAME}}|Talk page]]. | date = {{{date|}}} | cat = | removalnotice = yes }}<!--{{Page numbers needed}} end--> }}<noinclude> {{Documentation}} </noinclude> he6w3maku2kyvj0kfyae60wmjnpod7z Template:Spam-request 10 1101 2434 2433 2020-09-29T19:17:47Z Chrisb 1 1 revision imported 2433 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Spam-request}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Spam-request | type = content | image = [[Image:orange x.svg|45px]] | issue = This page or section '''may contain [[Wikipedia:Spam|link spam]] masquerading as content.''' | fix = Spam on Wikipedia consists of [[Wikipedia:External links|external links]] mainly intended to promote a website. If you are familiar with the content of the external links, please help by removing promotional links in accordance with [[Wikipedia:External links]]. }} <includeonly>{{DMC|Articles prone to spam|from|{{{date|}}}}}</includeonly><!--{{Spam-request}} end--> }}<noinclude> {{doc|content= This template will categorise tagged articles into [[:Category:Wikipedia spam cleanup]]. See [[Special:Recentchangeslinked/Category:Wikipedia spam cleanup]] to see recent edits to tagged articles. See also [[Template:Advertisement]] for tagging advertisements masquerading as articles, and [[Template:Spam]] to warn spammers in their [[Talk page]]s. * This [[Wikipedia:Template|template]] is a [[Wikipedia:Avoid self-references|self-reference]]. * Please do not [[Wikipedia:Subst|subst:]] this template. ==See also== * [[Wikipedia:WikiProject Spam]] * [[Wikipedia:WikiProject External links]] * [[Wikipedia:Template messages/Cleanup]] [[Category:Cleanup templates|{{PAGENAME}}]] [[Category:Dispute templates|{{PAGENAME}}]] }}</noinclude> gxzo7znf5nw8x6f71o10sh4oz8th1le Template:Specific 10 1102 2436 2435 2020-09-29T19:17:47Z Chrisb 1 1 revision imported 2435 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Specific}} begin-->{{Ambox | name = Specific | type = style | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | issue = This {{{1|article}}} '''focuses too much on specific examples''' without [[Wikipedia:Writing better articles#Provide context for the reader|explaining their importance]] to its main subject. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{{1|article}}}] by citing [[Wikipedia:No original research#Primary, secondary and tertiary sources|reliable, secondary sources]] that '''evaluate and synthesize''' these or similar examples within a '''broader context'''. | talk = {{{talk|}}} | date = {{{date|}}} | cat = Wikipedia articles needing context }}<!--{{Specific}} end--> }}<noinclude> {{Documentation}} </noinclude> e9d3zkol7a1583zgmw9qba90hwf5x0y Template:Speculation 10 1226 2684 2683 2020-09-29T19:18:05Z Chrisb 1 1 revision imported 2683 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Speculation}} begin-->{{Ambox | name = Speculation | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = content | image = [[File:Emoji_u1f52e.svg|50x40px|link=|alt=]] | sect = {{{1|}}} | issue = '''possibly contains unsourced [[WP:CRYSTAL|prediction]]s, speculative material, or accounts of events that might not occur'''. Information must be [[WP:V|verifiable]] and based on [[WP:RS|reliable published sources]]. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it] by removing unsourced speculative content. | date = {{{date|}}} | all = Articles containing predictions or speculation | removalnotice = yes }}<!--{{Speculation}} end--> }}<noinclude> {{Documentation}} </noinclude> 2zaurs414j55iw64e5xmws45iiqqbp5 Template:Split 10 931 2094 2093 2020-09-29T19:17:24Z Chrisb 1 1 revision imported 2093 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = Split | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | style = {{#if:{{{small|}}}|width: auto; margin-right: 0px;}} | textstyle = {{#if:{{{small|}}}|width: auto;}} | demospace = {{{demospace|}}} | type = move | image = [[File:Split-arrows.svg|50x40px|alt=|link=]] | text = It has been suggested that {{#ifeq:{{{part|}}}|yes|some portions of|}} this {{#if:{{{section|}}}|{{#ifeq:{{yesno-no|{{{section}}}}}|yes|section|{{{section|section}}}}}|{{#if:{{NAMESPACE}}|page|article}}}} be '''[[Wikipedia:Splitting|split]]''' into {{#if:{{{1|}}}|{{#if:{{{2|}}}|{{#if:{{NAMESPACE}}|pages|articles}}|a new {{#if:{{NAMESPACE}}|page|article}}}} titled {{pagelist|delim=''|{{{1|}}}|{{{2|}}}|{{{3|}}}|{{{4|}}}|{{{5|}}}|{{{6|}}}|{{{7|}}}|{{{8|}}}|{{{9|}}}|{{{10|}}}|{{{11|}}}|{{{12|}}}|{{{13|}}}|{{{14|}}}|{{{15|}}}|{{{16|}}}|{{{17|}}}|{{{18|}}}|{{{19|}}}|{{{20|}}}}}|multiple {{#if:{{NAMESPACE}}|pages|articles}}}}. ([[{{{discuss|{{TALKPAGENAME}}}}}|Discuss]]) | cat = Articles to be split | all = All articles to be split | date = {{{date|}}} }} }}<noinclude> {{documentation}} <!-- place category and interwiki links on the /doc sub-page, not here --> </noinclude> sx8mlx7vryvbevbsyrlsasoilqw57z4 Template:Story 10 1103 2438 2437 2020-09-29T19:17:47Z Chrisb 1 1 revision imported 2437 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Story}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Story | type = style | issue = This {{{1|article}}} '''reads more like a story than an encyclopedia entry'''. | fix = To meet Wikipedia's [[:Category:Wikipedia style guidelines|quality standards]] and conform to the [[Wikipedia:NPOV|neutral point of view]] policy, please help to [[WP:Encyclopedic style|introduce a more formal style]] and remove any personally invested tone. | date = {{{date|}}} }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Story}} end--> }}<noinclude> {{Documentation}} </noinclude> lzoqlegb617wyulpi81hemovis7tju0 Template:Str left 10 1300 2832 2831 2020-09-29T19:18:16Z Chrisb 1 1 revision imported 2831 wikitext text/x-wiki <includeonly>{{safesubst:padleft:|{{{2|1}}}|{{{1}}}}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 3rrdme1fpv80h1kdk9b7zwlkqd34dfk Template:Stub 10 53 88 87 2019-11-10T15:39:06Z Chrisb 1 88 wikitext text/x-wiki This article is a stub. You can help us by [{{fullurl:{{FULLPAGENAME}}|action=edit}} expanding it]. fu6b00gaoba8x4pukoa4ij0evxbplth Template:Success 10 1580 4808 4807 2020-10-11T05:35:26Z Chrisb 1 1 revision imported 4807 wikitext text/x-wiki <noinclude> {| class="wikitable" |</noinclude>style="background: #bbffbb; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-success" | {{{1|Success}}}<noinclude> |} {{documentation|Template:Table cell templates/doc}} </noinclude> bljpz5hbrg1n6t1m4025ypmo183sif9 Template:Summarize 10 1117 2466 2465 2020-09-29T19:17:49Z Chrisb 1 1 revision imported 2465 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox |name = Summarize |subst= <includeonly>{{subst:substcheck}}</includeonly> |type = style |issue = {{#switch:{{{1}}} |from|of = '''This {{#if:{{{section|}}}|section|article}} should include {{#if:{{{brevity|}}}|{{#if:{{{section|}}}|{{#if:{{{nocat|}}}||<includeonly>[[Category:Articles containing overly long summaries]]</includeonly>}} only}} a {{strong|brief}}|a {{#if:{{{better|}}}|better}}}} summary of {{#ifexist:{{{2}}}|{{#if:{{{2|}}}|[[{{{2}}}]]|}}|another article}}.''' |to|at|in = This {{#if:{{{section|}}}|section|article}} should be {{#if:{{{brevity|}}}|{{strong|briefly}}|{{#if:{{{better|}}}|better}}}} summarized in {{#ifexist:{{{2}}}|{{#if:{{{2|}}}|[[{{{2}}}]]|}}|another article}} and a link provided from there to here using the {{tlx|Main}} template. |section = '''This {{{section|section}}} should include {{#if:{{{brevity|}}}|{{#if:{{{nocat|}}}||<includeonly>[[Category:Articles containing overly long summaries]]</includeonly>}} only a {{strong|brief}}|a {{#if:{{{better|}}}|better}}}} summary of {{#ifexist:{{{2}}}|{{#if:{{{2|}}}|[[{{{2}}}]]|}}|another article}}.''' |<!--default-->{{#switch:{{{section}}} |y|Y|yes|YES|Yes|t|T|true|TRUE|True|1 = '''This section should include a {{#if:{{{brevity|}}}|brief|{{#if:{{{better|}}}|better}}}} summary of, or be {{#if:{{{brevity|}}}|briefly|{{#if:{{{better|}}}|better}}}} summarized in {{#ifexist:{{{1}}}|{{#if:{{{1|}}}|[[{{{1}}}]]|}}|another article}}.''' |<!--default-->'''This section should include a {{#if:{{{brevity|}}}|brief|{{#if:{{{better|}}}|better}}}} summary of, or be {{#if:{{{brevity|}}}|briefly|{{#if:{{{better|}}}|better}}}} summarized in, {{#ifexist:{{{1}}}|{{#if:{{{1|}}}|[[{{{1}}}]]|}}|another article}}.''' }} }} |fix = {{#switch:{{{1}}} |from|of = See [[Wikipedia:Summary style]] for information on how to {{#if:{{{brevity|{{{better|}}}}}}|properly}} incorporate it into this article's main text. |to|at|in = See guidance in [[Wikipedia:Summary style]]. |section = See [[Wikipedia:Summary style]] for information on how to {{#if:{{{brevity|{{{better|}}}}}}|properly}} incorporate it into this article's main text. |<!--default-->{{#switch:{{{section}}} |y|Y|yes|YES|Yes|t|T|true|TRUE|True|1 = See [[Wikipedia:Summary style]] for information on how to {{#if:{{{brevity|}}}|properly}} incorporate it into this article's main text, or the main text of another article. |<!--default-->See [[Wikipedia:Summary style]] for information on how to incorporate it into this article's main text, or the main text of another article. }} }} |date = {{{date|}}} }} }}<noinclude> {{Documentation}} </noinclude> 6iik49tc6vu73mclrs5vz206wn48hym Template:Summarize section 10 1278 2788 2787 2020-09-29T19:18:13Z Chrisb 1 1 revision imported 2787 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Summarize section}} begin-->{{Ambox | name = Summarize section | type = style | issue = This section '''may be [[Help:Section#Section size policies|too long]] and excessively detailed.''' | fix = {{{fix|Please consider summarizing the material while [[WP:CITE|citing sources]] as needed.}}} | date = {{{date|}}} }}<!--{{Summarize section}} end--> }}<noinclude> {{Documentation|content= ==Usage== Put at the top of a section that needs to be compressed to an encyclopedic approach and level of detail: {{in5}}{{tlx|Summarize section|date{{=}}{{CURRENTMONTHNAME}} {{CURRENTYEAR}}}} ==See also== * A list of related [[Wikipedia:Cleanup|cleanup]] templates at [[Wikipedia:Template messages/Cleanup]] * {{Tl|Very long}} used for whole articles that are too long * {{Tl|Very long section}} * {{Tl|Lead too short}} * {{Tl|Summarize}} * {{tl|Summary too long}} {{collapse top|left=y|Trivia cleanup templates}} {{Trivia templates see-also}} {{collapse bottom}} [[Category:Cleanup templates|{{PAGENAME}}]] [[Category:Coherency templates|{{PAGENAME}}]] [[Category:Wikipedia page-section templates]] }}</noinclude> lzml2g4o3iznieq7xidog58rtw4k29t Template:Summary style 10 1104 2440 2439 2020-09-29T19:17:48Z Chrisb 1 1 revision imported 2439 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Summary style}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Summary style |type=style |text=<span>'''This {{#if:{{{section|}}}|section|article}} may benefit from being shortened by the use of [[Wikipedia:Summary style|summary style]].'''</span><br /><span style="font-size: 90%"> Summary style may involve the moving of large sections to sub-articles that are then summarized in the main article.</span> }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Summary style}} end--> }}<noinclude>{{documentation}}</noinclude> q6vxzjqhe03wh38d09vk9qivgd0rh2e Template:Synthesis 10 1105 2442 2441 2020-09-29T19:17:48Z Chrisb 1 1 revision imported 2441 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Synthesis}} begin-->{{Ambox | name = Synthesis | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | image = [[file:Ambox question.svg|50x40px]] | issue = This {{{1|article or section}}} '''possibly contains [[Wikipedia:No original research#Synthesis of published material|synthesis of material]] which does not [[Wikipedia:Verifiability|verifiably mention]] or [[Wikipedia:Content removal#Irrelevant information|relate]] to the main topic.''' | talk = {{{talksection|#}}} | date = {{{date|}}} | cat = Articles that may contain original research | removalnotice = yes }}<!--{{Synthesis}} end--> }}<noinclude> {{Documentation}} <!-- Add categories and inter-wikis to the /doc subpage, not here! --> </noinclude> onm22wvjupw9urnywsenusijm669l5v Template:Syriac script needed 10 997 2226 2225 2020-09-29T19:17:32Z Chrisb 1 1 revision imported 2225 wikitext text/x-wiki {{Script needed |language = Syriac |image = Aramaic alap.svg }} svxji5tf3yh7kchqs2ahwfjy3avwkti Template:Systemic bias 10 1107 2446 2445 2020-09-29T19:17:48Z Chrisb 1 1 revision imported 2445 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= <!--{{Systemic bias}} begin-->{{Ambox | name = Systemic bias | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = content | image = [[File:Ambox scales.svg|50px|link=|alt=Unbalanced scales]] | class = ambox-systemic-bias | issue = The '''[[Wikipedia:Neutral point of view|neutrality]] of this {{{what|article}}} is [[Wikipedia:NPOV dispute|questioned]] because it may show [[Wikipedia:Systemic bias|systemic bias]]'''.{{#if:{{{bias|}}}|&nbsp;In particular, there may be a strong bias in favor of ''{{{bias}}}''.|}} | fix = Please see the discussion on the [[{{TALKPAGENAME}}#{{{1|}}}|talk page]]. Please do not remove this message until the issue is resolved. | date = {{{date|}}} | cat = NPOV disputes | all = All NPOV disputes }}<!--{{Systemic bias}} end--> }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> s1g7myy2gkqeso8o1foltead8ii3hlj Template:T 10 1621 4890 4889 2020-10-11T05:39:04Z Chrisb 1 1 revision imported 4889 wikitext text/x-wiki #REDIRECT [[Template:tl]] {{Rcat shell| {{R from template shortcut}} }} <!-- Used as Template:tl throughout English Wikipedia; demo template referenced only on meta -> 1tuxhjhgiad3kli8gnbjst6fx5ka4mq Template:TBA 10 1581 4810 4809 2020-10-11T05:35:26Z Chrisb 1 1 revision imported 4809 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #DDF; color: #2C2C2C; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="no table-no2"|{{{1|TBA}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> 9d5b30prhmcuw2cindmhnr0il1k8mca Template:TOC right 10 1655 4958 4957 2020-10-11T05:50:41Z Chrisb 1 1 revision imported 4957 wikitext text/x-wiki <templatestyles src="Template:TOC_right/styles.css" />{{#if:{{{limit|}}}|<templatestyles src="Template:TOC limit/styles.css" />}}<!-- --><div class="tocright {{#if:{{{clear|}}}|tocright-clear-{{{clear|}}}}} {{#if:{{{limit|}}}|toclimit-{{{limit}}}}}" style="{{#if:{{{width|{{{1|}}}}}}|width: {{{width|{{{1}}}}}};}}">__TOC__</div><noinclude> {{documentation}} <!-- Add cats and interwikis to the /doc subpage, not here! --> </noinclude> mt15wq5aepioouqvgukw37ap6fawb01 Template:TOC right/styles.css 10 1656 4960 4959 2020-10-11T05:50:42Z Chrisb 1 1 revision imported 4959 sanitized-css text/css /* {{pp-template}} */ .tocright { float: right; clear: right; width: auto; background: none; padding: .5em 0 .8em 1.4em; margin-bottom: .5em; } .tocright-clear-left { clear: left; } .tocright-clear-both { clear: both; } .tocright-clear-none { clear: none; } ahbm3qa6ych3s7m5nymbfe32voxs9fk Template:TOCright 10 1657 4962 4961 2020-10-11T05:50:42Z Chrisb 1 1 revision imported 4961 wikitext text/x-wiki #REDIRECT [[Template:TOC right]] {{Redirect category shell| {{R from move}} {{R from modification}} {{R from template shortcut}} }} s9w5nheydfdvpkk9cvzacrj8i9o0bj8 Template:TWCleanup 10 1125 2482 2481 2020-09-29T19:17:50Z Chrisb 1 1 revision imported 2481 wikitext text/x-wiki <!--{{TWCleanup}} begin-->{{Ambox | name = TWCleanup | subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = move | image = [[Image:Edit-copy purple-wikit.svg|40px]] | text = '''This page has been [[m:Help:Transwiki|copied]] to [[Wiktionary]]. Is it still needed in Wikipedia?'''<br /> Because this article has content useful to Wikipedia's sister project Wiktionary, it has been transwikied there{{#if:{{{1|}}}| on {{{1|}}}|}}, and its dictionary counterpart can be found at {{#if:{{{title|}}}|[[Wiktionary:{{{title}}}]]|either [[Wiktionary:Transwiki:{{PAGENAME}}]], [[Wiktionary:{{PAGENAME}}]], or [[Wiktionary:{{lcfirst:{{PAGENAME}}}}]]}}.<br /> [[WP:WINAD|Wikipedia is not a dictionary]], so please either: * Edit it so that the article's topic is not a particular word or other morpheme and remove this notice. <small>Use {{tl|vocab-stub}}.</small> * Convert it to a [[Wikipedia:Disambiguation|disambiguation page]] discussing the possible meanings of the term. * Tag it for deletion. <small><nowiki>Use {{subst:</nowiki>[[Template:prod|prod]]<nowiki>}}</nowiki></small> * Replace it by a [[WP:Soft redirect|soft redirect]]. <small>Use {{tl|wi}} <nowiki>{{subst:longcomment}}</nowiki></small> | all = Transwiki cleanup }}<!--{{TWCleanup}} end--><noinclude> {{Documentation}} <!--Categories and interwikis go on the /doc subpage.--> </noinclude> 07tvdhvdth6jb41ejjmcyd1tkzc5uih Template:TWCleanup2 10 1126 2484 2483 2020-09-29T19:17:51Z Chrisb 1 1 revision imported 2483 wikitext text/x-wiki <!--{{TWCleanup2}} begin-->{{Ambox | name = TWCleanup2 | subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = move | image= [[Image:Edit-copy purple-wikit.svg|40px]] | text = '''This page duplicates a dictionary definition already listed on [[Wiktionary]]. Its dictionary counterpart can be found at''' {{#if:{{{page|}}}|'''[[Wiktionary:{{{page}}}]]'''|'''[[Wiktionary:Transwiki:{{PAGENAME}}]], [[Wiktionary:{{PAGENAME}}]], or [[Wiktionary:{{lcfirst:{{PAGENAME}}}}]]'''}}.<br /> '''Is this page still needed in Wikipedia?'''<br />[[WP:WINAD|Wikipedia is not a dictionary]]. Please either: * Turn it into an encyclopedia article and remove this notice. * Convert it to a [[Wikipedia:Disambiguation|disambiguation page]] discussing the possible meanings of the term. * Tag it for deletion. <small><nowiki>Use {{subst:</nowiki>[[Template:prod|prod]]<nowiki>}}</nowiki></small> * Replace it by a [[WP:Soft redirect|soft redirect]]. <small>Use {{tl|wi}} <nowiki>{{subst:longcomment}}</nowiki></small> * Flag it to merge it with another article. <small><nowiki> Use {{mergeto|article named here}} </nowiki></small> | all = Transwiki cleanup }}<!--{{TWCleanup2}} end--><noinclude> {{doc}} </noinclude> nnvh0077nrjbj60erm37sgcatfvymdh Template:Table-experimental 10 1582 4812 4811 2020-10-11T05:35:26Z Chrisb 1 1 revision imported 4811 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #DFDFFF; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="experimental table-experimental"|{{{1|Experimental}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} [[es:Plantilla:Tabla-experimental]] </noinclude> 0gbgrfuiiywm036ys2f5x7spdsmm091 Template:Table cell templates 10 1583 4814 4813 2020-10-11T05:35:26Z Chrisb 1 1 revision imported 4813 wikitext text/x-wiki <noinclude> {| |</noinclude>{{#if:{{{sort|}}}|data-sort-value="<nowiki>{{{sort|</nowiki>{{{sort}}}<nowiki>}}}</nowiki>"}} style="background: {{{bg|<nowiki>{{/bgcolor}}</nowiki>}}}; color: {{{color|black}}}; vertical-align: {{{valign|middle}}}; text-align: <nowiki>{{{align|</nowiki>{{{align|center}}}<nowiki>}}}</nowiki>; <nowiki>{{{style|text-transform: capitalize;}}}</nowiki>" class="{{{class|{{BASEPAGENAME}}}}} table-{{{class|{{BASEPAGENAME}}}}}"| <nowiki>{{{1|</nowiki>{{{text}}}<nowiki>}}}</nowiki><noinclude> |} {{Documentation}} <!-- ADD CATEGORIES BELOW THIS LINE --> [[Category:Table cell templates]] </noinclude> nv215pztm0qc4dk6weavbxdqm3920mz Template:Table cell templates/doc 10 1584 4816 4815 2020-10-11T05:35:27Z Chrisb 1 1 revision imported 4815 wikitext text/x-wiki <noinclude>{{Documentation subpage}}</noinclude> {{#ifeq:{{FULLPAGENAME}}|Template:BLACK|{{For|the text color template|Template:Black}}|{{#ifeq:{{FULLPAGENAME}}|Template:Ya|{{For|the template with a smaller tick and no green background|Template:Aye}}|{{#ifeq:{{FULLPAGENAME}}|Template:Maybe|{{For|the yellow tick template|Template:Mby}}}}}}}} The templates in this series are designed to be used in a [[Help:Table|table]] to make a cell with text in that cell, with an appropriately colored background. They are commonly used in [[:Category:Comparisons|comparison tables]]. For example, {{Tlc|yes}} makes a cell with a green background. The text in the cell is taken from the [[Help:Template#Parameters|first parameter]]; <code><nowiki>{{</nowiki>yes|Sure}}</code> would output "Sure" otherwise it defaults to "Yes". Most templates allow authors to override the default text in this way, some require text put after the template call and some also need a vertical bar in between: <code><nowiki>{{</nowiki>''table cell template''}} ''text''</code> or <code><nowiki>{{</nowiki>''table cell template''}} | ''text''</code>. This information, the colors and default texts are found in the table below. {{Warnsign|Important:}} If you want to use other attributes for the table cells, ''e.g.'' <code>colspan</code>, <code>rowspan</code>, or <code>style</code>, they need to be put before the template call, and there must be '''no vertical bar (aka pipe) <code>|</code>''' in-between them: {| class=wikitable align=right !{{Yes}} ||{{No}} ||rowspan=2 {{n/a}} |- |colspan=2 {{Yes-No}} |} <pre>... !{{Yes}} ||{{No}} ||rowspan=2 {{n/a}} |- |colspan=2 style="border:solid 3px Maroon" {{Yes-No}} ... </pre> == Templates == <div style="overflow:auto;"> {| class="wikitable" style="text-align: left; width: auto;" |+ Table cell templates ! Class<ref name="table-cell-templates-table-css">The HTML class of table cell templates may be referenced in a [[m:help:User style|user stylesheet]] to change appearance.</ref> !! Default syntax !! Preview (default) !! Customized syntax !! Preview (customized) |- |rowspan=2| <code>table-rh</code> | {{tl|rh}} {{!}} Row header<ref name="table-cell-templates-table-after+pipe" /> || {{rh}} | Row header || {{tlp|rh|2=align=right}} {{!}} Row header || {{rh|align=right}} | Row header |- | {{tl|rh2}} {{!}} Row header<ref name="table-cell-templates-table-after+pipe">Does not take a parameter; the content should be placed after the template call, separated by a pipe (|) character.</ref> || {{rh2}} {{!}} Row header || {{tlp|rh2|2=align=right}} | Row header || {{rh2|align=right}} | Row header |- |rowspan=3| <code>table-yes</code> | {{tl|yes}} || {{yes}} || {{tlp|yes|<nowiki>customized [[plain text|text]]</nowiki>}} ||{{yes|customized [[plain text|text]]}} |- | {{tl|yes C}} || {{yes C}} || {{tlp|yes C|}} ||{{yes C|}} |- | {{tl|yes O}} || {{yes O}} || {{tlp|yes O|}} ||{{yes O|}} |- | <code>table-maybe</code> | {{tl|maybe}} || {{maybe}} || {{tlp|maybe|<nowiki>customized [[plain text|text]]</nowiki>}} ||{{maybe|customized [[plain text|text]]}} |- |rowspan=7| <code>table-no</code> | {{tl|no}} || {{no}} || {{tlp|no|<nowiki>customized [[plain text|text]]</nowiki>}} || {{no|customized [[plain text|text]]}} |- | {{tl|no O}} || {{no O}} || {{tlp|no O|}} || {{no O|}} |- | {{tl|no X}} || {{no X}} || {{tlp|no X|}} || {{no X|}} |- | {{tl|eliminated}} || {{eliminated}} || {{tlp|eliminated|dropped out}} || {{eliminated|dropped out}} |- | {{tlp|active fire|12%}} || {{active fire|12%}} || || |- | {{tl|lost}} || {{lost}} || {{tlp|lost|missing}} || {{lost|missing}} |- | {{tl|safe}} || {{safe}} || {{tlp|safe|protected}} || {{safe|protected}} |- | <code>table-active</code> | {{tl|active}} || {{active}} || {{tlp|active|live}} || {{active|live}} |- |rowspan=2| <code>table-siteactive</code> | {{tl|site active}} || {{site active}} || {{tlp|site active|up}} || {{site active|up}} |- | {{tl|coming soon}} || {{coming soon}} || {{tlp|coming soon|second half of the year}} || {{coming soon|second half of the year}} |- | <code>table-siteinactive</code> | {{tl|site inactive}} || {{site inactive}} || {{tlp|site inactive|down}} || {{site inactive|down}} |- |rowspan=11| <code>table-yes2</code> | {{tl|good}} || {{good}} || {{tlp|good|A}} || {{good|A}} |- | {{tl|yes2}} || {{yes2}} || {{tlp|yes2|text}} || {{yes2|text}} |- | {{tl|ya}} || {{ya}} || {{tlp|ya|text{{=}}ya}} || {{ya|text=ya}} |- | {{tlp|ya|Ya}} || {{ya|Ya}} || {{tlp|ya|text|link{{=}}WP:ALT}} || {{ya|text|link=WP:ALT}} |- | {{tl|won}} || {{won}} || {{tlp|won|text{{=}}white|color{{=}}darkblue|winner}} || {{won|text=white|color=darkblue|winner}} |- | {{tlp|won|place{{=}}1}} || {{won|place=1}} || {{tlp|won|place{{=}}gold}} || {{won|place=gold}} |- | {{tlp|won|place{{=}}2}} || {{won|place=2}} || {{tlp|won|place{{=}}silver}} || {{won|place=silver}} |- | {{tlp|won|place{{=}}3}} || {{won|place=3}} || {{tlp|won|place{{=}}bronze}} || {{won|place=bronze}} |- | {{tl|WinDL}} || {{WinDL}} || {{tlp|WinDL|win}} || {{WinDL|win}} |- | {{tlp|WinDL|res{{=}}D}} || {{WinDL|res=D}} || {{tlp|WinDL|res{{=}}draw}} || {{WinDL|res=draw}} |- | {{tlp|WinDL|res{{=}}L}} || {{WinDL|res=L}} || {{tlp|WinDL|res{{=}}loss}} || {{WinDL|res=loss}} |- |rowspan=7| <code>table-no2</code> | {{tl|no2}} || {{no2}} || {{tlp|no2|text}} || {{no2|text}} |- | {{tl|na}} || {{na}} || {{tlp|na|text{{=}}na}} || {{na|text=na}} |- | {{tlp|na|Na}} || {{na|Na}} || {{tlp|na|text|link{{=}}WP:ALT}} || {{na|text|link=WP:ALT}} |- | {{tl|nom}} || {{nom}} || {{tlp|nom|5}} || {{nom|5}} |- | {{tl|sho}} || {{sho}} || {{tlp|sho|proposed}} || {{sho|proposed}} |- | {{tl|longlisted}} || {{longlisted}} || {{tlp|longlisted|rejected}} || {{longlisted|rejected}} |- | {{tl|TBA}} || {{TBA}} || {{tlp|TBA|to be announced}} || {{TBA|to be announced}} |- | rowspan=2 |<code>table-success</code> | {{tl|success}} || {{success}} || {{tlp|success|mission complete}} || {{success|mission complete}} |- | {{tl|operational}} || {{operational}} || {{tlp|operational|returning data}} || {{operational|returning data}} |- | <code>table-failure</code> | {{tl|failure}} || {{failure}} || {{tlp|failure|wrong orbit}} || {{failure|wrong orbit}} |- | rowspan=16| <code>table-partial</code> | {{tl|partial}} || {{partial}} || {{tlp|partial|almost done}} ||{{partial|almost done}} |- | {{tl|Regional}} || {{Regional}} || {{tlp|Regional|Uyghur}} || {{Regional|Uyghur}} |- | {{tl|MaybeCheck}} || {{MaybeCheck}} || {{tlp|MaybeCheck|text{{=}}possibly}} || {{MaybeCheck|text=possibly}} |- | {{tlp|MaybeCheck|possibly}} || {{MaybeCheck|possibly}} || {{tlp|MaybeCheck|text|link{{=}}WP:ALT}} || {{MaybeCheck|text|link=WP:ALT}} |- | {{tl|partial success}} || {{partial success}} || {{tlp|partial success|reached orbit and returned pictures}} || {{partial success|reached orbit and returned pictures}} |- | {{tl|partial failure}} || {{partial failure}} || {{tlp|partial failure|<nowiki>[[Cubesat]] not deployed</nowiki>}} || {{partial failure|[[Cubesat]] not deployed}} |- | {{tl|okay}} || {{okay}} || {{tlp|okay|C}} || {{okay|C}} |- | {{tl|Yes-No}} || {{Yes-No}} || {{tlp|Yes-No|yes with an if; no with a but}} || {{Yes-No|yes with an if; no with a but}} |- | {{tl|some}} || {{some}} || {{tlp|some|many}} || {{some|many}} |- | {{tl|nonpartisan}} || {{nonpartisan}} || {{tlp|nonpartisan|impartial}} || {{nonpartisan|impartial}} |- | {{tl|pending}} || {{pending}} || {{tlp|pending|awaiting}} || {{pending|awaiting}} |- | {{tl|unofficial}} || {{unofficial}} || {{tlp|unofficial|<nowiki>''de facto''</nowiki>}} || {{unofficial|''de facto''}} |- | {{tl|unofficial2}} || {{unofficial2}} || {{tlp|unofficial2|<nowiki>''de facto''</nowiki>}} || {{unofficial2|''de facto''}} |- | {{tl|usually}} || {{usually}} || {{tlp|usually|commonly}} || {{usually|commonly}} |- | {{tl|rarely}} || {{rarely}} || {{tlp|rarely|seldom}}|| {{rarely|seldom}} |- | {{tl|sometimes}} || {{sometimes}} || {{tlp|sometimes|occasionally}} || {{sometimes|occasionally}} |- | <code>table-noAttempt</code> | {{tl|No attempt}} || {{No attempt}} || {{tlp|No attempt|No landing attempted}} || {{No attempt|No landing attempted}} |- | <code>table-any</code> | {{tl|any}} || {{any}} || {{tlp|any|anyone}}|| {{any|anyone}} |- |rowspan=6| <code>table-na</code> | {{tl|n/a}} || {{n/a}} || {{tlp|n/a|unavailable}}|| {{n/a|unavailable}} |- | {{tl|varies}} || {{varies}} || {{tlp|varies|differs}}|| {{varies|differs}} |- | {{tl|sdash}} || {{sdash}} || {{tlp|sdash|<nowiki>[[File:Dash.svg|13px|link=|dash icon]]</nowiki>}}|| {{sdash|[[File:Dash.svg|13px|link=|dash]]}} |- | {{tl|BLACK}} || {{BLACK}} || {{tlp|BLACK|banned}} || {{BLACK|banned}} |- | {{tl|non-album single}} || {{non-album single}} || {{tlp|non-album single|EP}} || {{non-album single|EP}} |- | {{tl|unreleased}} || {{unreleased}} || {{tlp|unreleased|shelved}} || {{unreleased|shelved}} |- |rowspan=2| <code>table-unknown</code> | {{tl|unknown}} || {{Unknown}} || {{tlp|unknown|?}} || {{unknown|?}} |- | {{tl|dunno}} || {{Dunno}} || {{tlp|dunno|not sure}} || {{dunno|not sure}} |- | <code>table-automatic</code> | {{tl|perhaps}} || {{perhaps}} || {{tlp|perhaps|maybe}} || {{perhaps|maybe}} |- | <code>table-depends</code> | {{tl|depends}} || {{depends}} || {{tlp|depends|vendor-defined}} || {{depends|vendor-defined}} |- | <code>table-included</code> | {{tl|included}} || {{included}} || {{tlp|included|incorporated}} || {{included|incorporated}} |- |rowspan=2| <code>table-dropped</code> | {{tl|dropped}} || {{dropped}} || {{tlp|dropped|discontinued}} || {{dropped|discontinued}} |- | {{tl|terminated}} || {{terminated}} || {{tlp|terminated|fired}} || {{terminated|fired}} |- | <code>table-beta</code> | {{tl|beta}} || {{beta}} || {{tlp|beta|preview}} || {{beta|preview}} |- | <code>table-experimental</code> | {{tl|table-experimental}} || {{table-experimental}} || {{tlp|table-experimental|lab}} || {{table-experimental|lab}} |- | <code>table-free</code> | {{tl|free}} || {{free}} || {{tlp|free|empty}} || {{free|empty}} |- | <code>table-proprietary</code> | {{tl|proprietary}} || {{proprietary}} || {{tlp|proprietary|custom extension}} || {{proprietary|custom extension}} |- | <code>table-nonfree</code> | {{tl|nonfree}} || {{nonfree}} || {{tlp|nonfree|paid}} || {{nonfree|paid}} |- | <code>table-needs</code> | {{tl|needs}} || {{needs}} || {{tlp|needs|req.}} || {{needs|req.}} |- | <code>table-nightly</code> | {{tl|nightly}} || {{nightly}} || {{tlp|nightly|dev}} || {{nightly|dev}} |- | <code>table-release-candidate</code> | {{tl|release-candidate}} || {{release-candidate}} || {{tlp|release-candidate|RC}} || {{release-candidate|RC}} |- | <code>table-draw</code> | {{tl|draw}} || {{draw}} || {{tlp|draw|1:1}} || {{draw|1:1}} |- | <code>table-planned</code> | {{tl|planned}} || {{planned}} || {{tlp|planned|July 2028}} || {{planned|July 2028}} |- | <code>table-scheduled</code> | {{tl|scheduled}} || {{scheduled}} || {{tlp|scheduled|3 March 2027}} || {{scheduled|3 March 2027}} |- | <code>incorrect</code> | {{tl|incorrect}} || {{incorrect}} || {{tlp|incorrect|wrong}} || {{incorrect|wrong}} |- | <code>noresult</code> | {{tl|no result}} || {{no result}} || {{tlp|no result|NR}} || {{no result|NR}} |- | rowspan=8 | <code>table-debate</code> | {{tl|D-P}} || {{D-P}} || {{tlp|D-P|present}} || {{D-P|present}} |- | {{tl|D-A}} || {{D-A}} || {{tlp|D-A|absent}} || {{D-A|absent}} |- | {{tl|D-I}} || {{D-I}} || {{tlp|D-I|invited}} || {{D-I|invited}} |- | {{tl|D-O}} || {{D-O}} || {{tlp|D-O|invited to other debate}} || {{D-O|invited to other debate}} |- | {{tl|D-N}} || {{D-N}} || {{tlp|D-N|not invited}} || {{D-N|not invited}} |- | {{tl|D-Nv}} || {{D-Nv}} || {{tlp|D-Nv|not voting}} || {{D-Nv|not voting}} |- | {{tl|D-W}} || {{D-W}} || {{tlp|D-W|withdrawn}} || {{D-W|withdrawn}} |- | {{tl|D-Out}} || {{D-Out}} || {{tlp|D-Out|out of race}} || {{D-Out|out of race}} |- |rowspan=14| <code>table-cast</code> | {{tl|CMain}} || {{CMain}} || {{tlp|CMain|text}} || {{CMain|text}} |- | {{tl|CAlso starring}} || {{CAlso starring}} || {{tlp|CAlso starring|costar}} || {{CAlso starring|costar}} |- | {{tl|CRecurring}} || {{CRecurring}} || {{tlp|CRecurring|regular guest}} || {{CRecurring|regular guest}} |- | {{tl|CGuest}} || {{CGuest}} || {{tlp|CGuest|victim}} || {{CGuest|victim}} |- | {{tl|COther}} || {{COther}} || {{tlp|COther|ensemble}} || {{COther|ensemble}} |- | {{tl|CNone}} || {{CNone}} || {{tlp|CNone|cast}} || {{CNone|cast}} |- | {{tl|CEmpty}} || {{CEmpty}} || || |- | {{tl|CRemoved}} || {{CRemoved}} || {{tlp|CRemoved|edited}} || {{CRemoved|edited}} |- | {{tl|CFinalist}} || {{CFinalist}} || {{tlp|CFinalist|text{{=}}white|color{{=}}darkblue|contender}} || {{CFinalist|text=white|color=darkblue|contender}} |- | {{tlp|CFinalist|place{{=}}3rd Place}} || {{CFinalist|place=3rd Place}} || {{tlp|CFinalist|place{{=}}third place}} || {{CFinalist|place=third place}} |- | {{tl|exempt}} || {{exempt}} || {{tlp|Black Exempt}} || {{Black Exempt}} |- | {{tl|nocontest}} || {{nocontest}} || {{tlp|nocontest|rescheduled}} || {{nocontest|rescheduled}} |- | {{tl|Runner-up}} || {{Runner-up}} || {{tlp|Runner-up|2nd place}} || {{Runner-up|2nd place}} |- | {{tl|Quit}} || {{Quit}} || {{tlp|Quit|left}} || {{Quit|left}} |- |rowspan=3| ''no class'' | {{tl|not yet}} || {{not yet}} || {{tlp|not yet|NY}} || {{not yet|NY}} |- | {{tl|optional}} || {{optional}} || {{tlp|optional|non-mandatory}} || {{optional|non-mandatory}} |- | {{tlp|shade|25}}% || {{shade|25}}% || {{tlp|shade|75}}% || {{shade|75}}% |}</div> == Code == Common code to most if not all the templates in this series: :<code>{{Table cell templates|class=''automatic''|text=''text''|bg=#''abcdef''}}</code> <includeonly>{{#switch:{{SUBPAGENAME}}|doc|sandbox=|#default= Code specific to this template: :<code>{{ {{FULLPAGENAME}} }}</code> {{{doc|}}} }}</includeonly> == Creating new templates == To make a new table cell template you can use: :<syntaxhighlight lang=text inline>{{subst:Table cell templates|text= default text |bg= background color |class= a class name without prefix |align= standard horizontal alignment}}</syntaxhighlight> You should leave out the <code>align</code> parameter and often the <code>class</code> parameter is unnecessary, too. Add the new template to the table in the [[Template:Table cell templates/doc|common documentation]] afterwards. Please consider reusing one of the other templates and please choose the color sensibly. If you find a table cell template that does not take a parameter and you want to be able to change the text in the cell, ''do not'' duplicate the template! Instead, edit the template and change the text to a default parameter substitution. For example, if a template's text is <code>Dropped</code>, change that to <code><nowiki>{{{1|Dropped}}}</nowiki></code>. :<syntaxhighlight lang=text inline>style="background: #abcdef; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="automatic table-automatic"| {{{1|text}}}</syntaxhighlight> == Color subpage == All templates should either have a <code>/bgcolor</code> subpage that contains nothing but a valid CSS color code, possibly wrapped in ''nowiki'' tags, e.g. <code><nowiki>#BFD</nowiki></code>, which can be included with <code><nowiki>background: {{/bgcolor}};</nowiki></code> in the <code>style</code> attribute, or they should reference another template's subpage, e.g. <code><nowiki>background: {{Template:Yes2/bgcolor}};</nowiki></code>. Alternatively, the <code>/bgcolor</code> subpage may redirect to another color code subpage: <code><nowiki>#REDIRECT [[yes2/bgcolor]]</nowiki></code>. This way, pages that are using these templates may also use {{tl|legend}} and similar templates which can reference the actual color: <code><nowiki>{{legend|{{yes2/bgcolor}}|supported}}</nowiki></code> == TemplateData == {{TemplateData header}} <templatedata>{ "description": "One of several templates for styling individual table cells with standard contents and colors.", "params": { "1": { "label": "text", "description": "text to be displayed instead of the default, if this doesn't work put the text after the template, possibly with a vertical bar | in between", "type": "content", "default": "(template dependent)", "required": false, "suggested": false }, "align": { "label": "horizontal align", "description": "text alignment inside the cell, either 'left', 'right', 'center' or 'justified'", "default": "center", "inherits": "1", "type": "string", "suggested": false }, "style": { "label": "style", "description": "a semicolon separated list of additional CSS rules to be applied to the table cell", "inherits": "1", "type": "string", "suggested": false }, "color": { "label": "background color", "description": "a valid CSS color value or name to override the standard the cell background, only available with some templates", "inherits": "1", "type": "line", "suggested": false } }, "format": "inline" }</templatedata> == See also == * {{tl|Change}} – calculates, displays and color-codes changes between two values * {{tl|BSD-lic}} – specialized redirect for {{tlf|free}} * {{tl|GPL-lic}} – specialized redirect for {{tlf|free}} * {{tl|LGPL-lic}} – specialized redirect for {{tlf|free}} == Notes == {{reflist}} <includeonly>{{Sandbox other||{{#switch:{{SUBPAGENAME}}|doc=|#default= <!-- ADD CATEGORIES BELOW THIS LINE --> [[Category:Unified table cell templates]] }}}}</includeonly> 0eswbv06bz5mw4en1j3x3lfqvhl213d Template:Table section 10 1235 2702 2701 2020-09-29T19:18:07Z Chrisb 1 1 revision imported 2701 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Table section}} begin-->{{Ambox | name = Table section | type = content | small = {{{small|left}}} | image = [[File:Wiki letter w cropped.svg|{{#ifeq:{{{small|}}}|no|44px|20px}}|alt=&#91;icon&#93;]] | issue = '''This section needs a table to organize its content better.'''{{#if:{{{with|{{{for|{{{1|}}}}}}}}} | &#32;with: {{{with|{{{for|{{{1}}}}}}}}}}}.<br/>You can help by [{{fullurl:{{FULLPAGENAME}}|action=edit&section={{{section|}}}}} adding to it]. | fix = You can help by [{{fullurl:{{FULLPAGENAME}}|action=edit&section={{{section|}}}}} adding to it]. [[Help:Editing|Editing help]] is available. | date = {{{date|}}} | cat = Articles needing cleanup | all = All pages needing cleanup | cat2 = Articles with sections that need a table <!--| cat3 = Wikipedia table cleanup--> }}<!--{{Table section needs prose}} end--> }}<noinclude> {{Documentation}} </noinclude> 8f4fvtdt9wdd077nf9uqd8abw8zcajf Template:Table section needs prose 10 1274 2780 2779 2020-09-29T19:18:12Z Chrisb 1 1 revision imported 2779 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Table section needs prose}} begin-->{{Ambox | name = Table section needs prose | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | issue = This {{{1|section}}} '''is in a table format that [[Wikipedia:Manual of Style/Tables#Prose|may be better]] if supplemented with [[Wikipedia:Prose|prose]].''' | fix = You can help by adding a prose summary of the table(s). [[Help:Editing|Editing help]] is available. | date = {{{date|}}} | cat = Articles needing cleanup | all = All pages needing cleanup | cat2 = Articles with sections that need to be turned into prose <!--| cat3 = Wikipedia table cleanup--> }}<!--{{Table section needs prose}} end--> }}<noinclude> {{Documentation}} </noinclude> koajbbymfpr0qtbuuy6wh2qkgkoyp1u Template:Table to prose 10 1173 2578 2577 2020-09-29T19:17:57Z Chrisb 1 1 revision imported 2577 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Table to prose}} begin-->{{Ambox | name = Table to prose | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | issue = This {{{1|article}}} '''is in a table format that [[Wikipedia:Manual of Style/Tables#Prose|may be better presented]] using [[Wikipedia:Prose|prose]].''' | fix = You can help by converting this {{{1|article}}} to prose. [[Help:Editing|Editing help]] is available. | date = {{{date|}}} | cat = Articles needing cleanup | all = All pages needing cleanup | cat2 = Articles with sections that need to be turned into prose <!--| cat3 = Wikipedia table cleanup--> }}<!--{{Table to prose}} end--> }}<noinclude> {{Documentation}} </noinclude> hs1pq50ghrjh3p9s5nj100j6tk6p8bo Template:Tag 10 878 1988 1987 2020-09-29T19:15:37Z Chrisb 1 1 revision imported 1987 wikitext text/x-wiki <code class="{{#ifeq:{{{wrap|}}}|yes|wrap|nowrap}}" style="{{#ifeq:{{{style|}}}|plain|border:none;background:transparent;|{{{style|}}}}}"><!-- Opening tag -->{{#switch:{{{2|pair}}} |c|close = |e|empty|s|single|v|void |o|open |p|pair = &lt;{{#if:{{{link|}}}|[[HTML element#{{{1|tag}}}|{{{1|tag}}}]]|{{{1|tag}}}}}{{#if:{{{params|{{{attribs|}}}}}}|&#32;{{{params|{{{attribs}}}}}}}} }}<!-- Content between tags -->{{#switch:{{{2|pair}}} |c|close = {{{content|}}} |e|empty|s|single|v|void = &#32;&#47;&gt; |o|open = &gt;{{{content|}}} |p|pair = {{#ifeq:{{{1|tag}}}|!--||&gt;}}{{{content|...}}} }}<!-- Closing tag -->{{#switch:{{{2|pair}}} |e|empty|s|single|v|void |o|open = |c|close |p|pair = {{#ifeq:{{{1|tag}}}|!--|--&gt;|&lt;&#47;{{{1|tag}}}&gt;}} }}<!-- --></code><noinclude> {{Documentation}} </noinclude> rfqa950ndrmgt6ozaa81dwgyr2n28ea Template:Tamil script needed 10 1064 2360 2359 2020-09-29T19:17:42Z Chrisb 1 1 revision imported 2359 wikitext text/x-wiki {{Script needed |language = Tamil |image = Tamil_A.svg }} dzg85g1lmo7op7kt7cuvztehxqkc9f8 Template:Technical 10 935 2102 2101 2020-09-29T19:17:24Z Chrisb 1 1 revision imported 2101 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = Technical | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = style | class = ambox-technical | issue = {{#ifeq: {{{1|}}} | introduction <!-- Introduction --> | The introduction of this article '''may be too technical for most readers to understand'''. Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] to [[Wikipedia:Make technical articles understandable|make it understandable to non-experts]]. <!-- Article or section --> | This {{{1|article}}} '''may be too technical for most readers to understand'''. Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] to [[Wikipedia:Make technical articles understandable|make it understandable to non-experts]], without removing the technical details.}} | talk = {{{talk|}}} | fix = | removalnotice = yes | date = {{{date|}}} | cat = Wikipedia articles that are too technical | all = All articles that are too technical }} }}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage and interwikis to Wikidata. --> </noinclude> 2xh3idvcgbipskqlfc9n8knfxkvk1vt Template:TemplateDataHeader 10 1622 4892 4891 2020-10-11T05:39:04Z Chrisb 1 1 revision imported 4891 wikitext text/x-wiki #REDIRECT [[Template:TemplateData header]] {{R from move}} bfnm7z66t4q2d8otfa0y3vtgkcwrfao Template:TemplateData header 10 1480 3264 3263 2020-10-11T01:41:31Z Chrisb 1 1 revision imported 3263 wikitext text/x-wiki <div class="templatedata-header">{{#if:{{{noheader|}}}|<!-- noheader: -->{{Template parameter usage}}|<!-- +header: -->This is the {{#if:{{{nolink|}}}|<!-- +header, nolink TD -->TemplateData|<!-- +header, +link [[TD]]; DEFAULT: -->[[Wikipedia:TemplateData|TemplateData]]}}<!-- e.o. #if:nolink; DEFAULT: --> documentation for this template used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools; {{Template parameter usage|lc=yes}}<!-- e.o. #if:noheader -->}} '''TemplateData for {{{1|{{BASEPAGENAME}}}}}''' </div><includeonly><!-- check parameters -->{{#invoke:Check for unknown parameters|check |unknown={{template other|1=[[Category:Pages using TemplateData header with unknown parameters|_VALUE_]]}} |template=Template:TemplateData header |1 |nolink |noheader |preview=<div class="error" style="font-weight:normal">Unknown parameter '_VALUE_' in [[Template:TemplateData header]].</div> }}<!-- -->{{template other|{{sandbox other|| [[Category:Templates using TemplateData]] }}}}</includeonly><!-- --><noinclude>{{Documentation}}</noinclude> 1nfml12ojtxh0l65pjhlb0pfq55ejy3 Template:Template link with alternate text 10 1301 2834 2833 2020-09-29T19:18:16Z Chrisb 1 1 revision imported 2833 wikitext text/x-wiki {{Tlg|subst={{{subst|}}}|nowrap={{{nowrap|}}}|{{{1|}}}<!-- -->|alttext{{#ifeq:{{{2}}}|{{{2|x}}}||x}}={{{2}}}<!-- -->|3{{#ifeq:{{{3}}}|{{{3|x}}}||x}}={{{3}}}<!-- -->|4{{#ifeq:{{{4}}}|{{{4|x}}}||x}}={{{4}}}<!-- -->|5{{#ifeq:{{{5}}}|{{{5|x}}}||x}}={{{5}}}<!-- -->|6{{#ifeq:{{{6}}}|{{{6|x}}}||x}}={{{6}}}<!-- -->|7{{#ifeq:{{{7}}}|{{{7|x}}}||x}}={{{7}}}<!-- -->|8{{#ifeq:{{{8}}}|{{{8|x}}}||x}}={{{8}}}<!-- -->|9{{#ifeq:{{{9}}}|{{{9|x}}}||x}}={{{9}}}<!-- -->|10{{#ifeq:{{{10}}}|{{{10|x}}}||x}}={{{10}}}<!-- -->|11{{#ifeq:{{{11}}}|{{{11|x}}}||x}}={{{11}}}<!-- -->|12{{#ifeq:{{{12}}}|{{{12|x}}}||x}}={{{12}}}}}<noinclude> {{Documentation}} </noinclude> ekbj8d6mb201bbowib5w307op3y4n8t Template:Template link with link off 10 897 2026 2025 2020-09-29T19:15:41Z Chrisb 1 1 revision imported 2025 wikitext text/x-wiki {{Tlg|nowrap=yes|nolink=yes|subst={{{subst|}}}|{{{1|}}}<!-- -->|2{{#ifeq:{{{2}}}|{{{2|x}}}||x}}={{{2}}}<!-- -->|3{{#ifeq:{{{3}}}|{{{3|x}}}||x}}={{{3}}}<!-- -->|4{{#ifeq:{{{4}}}|{{{4|x}}}||x}}={{{4}}}<!-- -->|5{{#ifeq:{{{5}}}|{{{5|x}}}||x}}={{{5}}}<!-- -->|6{{#ifeq:{{{6}}}|{{{6|x}}}||x}}={{{6}}}<!-- -->|7{{#ifeq:{{{7}}}|{{{7|x}}}||x}}={{{7}}}<!-- -->|8{{#ifeq:{{{8}}}|{{{8|x}}}||x}}={{{8}}}<!-- -->|9{{#ifeq:{{{9}}}|{{{9|x}}}||x}}={{{9}}}<!-- -->|10{{#ifeq:{{{10}}}|{{{10|x}}}||x}}={{{10}}}<!-- -->|11{{#ifeq:{{{11}}}|{{{11|x}}}||x}}={{{11}}}<!-- -->|12{{#ifeq:{{{12}}}|{{{12|x}}}||x}}={{{12}}}}}<noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc sub-page, not here! --> </noinclude> fkwut59rh3dw297vmoghk9vvheiut49 Template:Template link with parameters 10 1585 4818 4817 2020-10-11T05:35:28Z Chrisb 1 1 revision imported 4817 wikitext text/x-wiki <span {{#if:{{{wrap|}}}||class="nowrap"}}>&#123;&#123;[[Template:{{{1}}}|{{{1}}}]]<!-- -->{{#ifeq:{{{2|x}}}|{{{2|}}}| &#124;{{{2}}} }}<!-- -->{{#ifeq:{{{3|x}}}|{{{3|}}}| &#124;{{{3}}} }}<!-- -->{{#ifeq:{{{4|x}}}|{{{4|}}}| &#124;{{{4}}} }}<!-- -->{{#ifeq:{{{5|x}}}|{{{5|}}}| &#124;{{{5}}} }}<!-- -->{{#ifeq:{{{6|x}}}|{{{6|}}}| &#124;{{{6}}} }}<!-- -->{{#ifeq:{{{7|x}}}|{{{7|}}}| &#124;{{{7}}} }}<!-- -->{{#ifeq:{{{8|x}}}|{{{8|}}}| &#124;{{{8}}} }}<!-- -->{{#ifeq:{{{9|x}}}|{{{9|}}}| &#124;{{{9}}} }}<!-- -->&#125;&#125;</span><noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> fisoz2d5yplkufipxpjgx4wkvb2bp42 Template:Template other 10 1302 2836 2835 2020-09-29T19:18:16Z Chrisb 1 1 revision imported 2835 wikitext text/x-wiki {{#switch: <!--If no or empty "demospace" parameter then detect namespace--> {{#if:{{{demospace|}}} | {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--> | {{#ifeq:{{NAMESPACE}}|{{ns:Template}} | template | other }} }} | template = {{{1|}}} | other | #default = {{{2|}}} }}<!--End switch--><noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 0tcssjmltwl7y5v3f5wj2kqciaabqly Template:Template parameter usage 10 1481 3266 3265 2020-10-11T01:41:31Z Chrisb 1 1 revision imported 3265 wikitext text/x-wiki {{#switch:{{{label|}}} |={{#ifeq:{{yesno-no|{{{lc}}}}}|no|S|s}}ee the monthly [https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} parameter usage report] for {{#if:{{{1|}}}|[[Template:{{ROOTPAGENAME:{{{1|}}}}}]]|this template}}. |None|none=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} Parameter usage report] |for|For=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} Parameter usage report] for {{#if:{{{1|}}}|[[Template:{{ROOTPAGENAME:{{{1|}}}}}]]|[[Template:{{ROOTPAGENAME}}]]}}. |#default=[https://bambots.brucemyers.com/TemplateParam.php?wiki=enwiki&template={{Urlencode:{{#if:{{{1|}}}|{{ROOTPAGENAME:{{{1|}}}}}|{{ROOTPAGENAME}}}}}} {{{label|}}}] }}<noinclude> {{documentation}} </noinclude> nys7rq3f7mo5i0jg8le26o25eif0tt9 Template:Term paper 10 1108 2448 2447 2020-09-29T19:17:48Z Chrisb 1 1 revision imported 2447 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Term paper}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Term paper | type = style | text = This {{{1|article}}} '''reads like a [[WP:NOTTEXTBOOK|term paper]] and may require [[Wikipedia:Cleanup|cleanup]]'''. Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} to improve this article] to make it [[WP:NPOV|neutral]] in tone and meet Wikipedia's [[WP:STYLE|quality standards]]. }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Term paper}} end--> }}<noinclude>{{Documentation}}</noinclude> 6y8x0hfd9xrpdjmjk3rhq5k1bo9li5i Template:Terminated 10 1586 4820 4819 2020-10-11T05:35:28Z Chrisb 1 1 revision imported 4819 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #EDF; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="dropped table-dropped"|{{{1|Terminated}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> 80o6crsbgp8l4l4xupomlezzsi0j4mm Template:Text-source 10 1222 2676 2675 2020-09-29T19:18:05Z Chrisb 1 1 revision imported 2675 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{ambox | name = {{{name|Text-source}}} | subst = {{{subst|<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly>}}} | small = {{#if:{{{small|}}}|left}} | type = content | class = ambox-Refimprove | image = [[File:Ambox important.svg|50x40px|alt=]] | smallimage = none | issue = This {{#if:{{{1|}}}|{{{1}}}|article}} '''may contain [[WP:CITEBUNDLE|bundled citations]] with poor [[WP:INTEGRITY|text–source integrity]].''' | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] this article by [[WP:VERIFY|verifying its sources]], moving citations closer to the claims they support, and [[WP:SYNTH|removing original synthesis]]. | removalnotice = yes | talk = {{{talk|}}} | date = {{{date|}}} | cat = Wikipedia articles needing factual verification | all = }}<!--{{Text-source}} end--> }}<noinclude> {{documentation}}<!-- Please add categories and interwikis to the /doc subpage, thanks --> </noinclude> cvssjwwro6n3g96xwwp23364u8qg0sw Template:Textbook 10 1239 2710 2709 2020-09-29T19:18:07Z Chrisb 1 1 revision imported 2709 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Textbook}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Textbook | type = style | text = This {{{1|article}}} '''reads like a [[WP:NOTTEXTBOOK|textbook]] and may require [[Wikipedia:Cleanup|cleanup]]'''. Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} to improve this article] to make it [[WP:NPOV|neutral]] in tone and meet Wikipedia's [[WP:STYLE|quality standards]]. | date = {{{date|}}} }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Textbook}} end--> }}<noinclude>{{Documentation}}</noinclude> t6lj9hu8zsfox7fcw0ipf1bt1cxd77m Template:Tfd off topic 10 1195 2622 2621 2020-09-29T19:18:01Z Chrisb 1 1 revision imported 2621 wikitext text/x-wiki {{ambox|name=Tfd off topic|image=[[File:People together.svg|60px|link=|alt=]]|issue=While this deletion discussion may be a contentious issue, editors are reminded to keep their comments on topic and remain [[WP:CIVIL|civil]]. [[WP:NPA|Personal attacks]] will not help your stance and could result in administrator action.}}<noinclude> {{documentation}} </noinclude> a4b4h70b2jcuv67id4280wnoz2qvefj Template:Thai script needed 10 1002 2236 2235 2020-09-29T19:17:33Z Chrisb 1 1 revision imported 2235 wikitext text/x-wiki {{Script needed |language = Thai |image = Thai Alphabet Sample.svg }} euu28dn5szhf065yeostaqqzksk5a1f Template:Third-party 10 1232 2696 2695 2020-09-29T19:18:06Z Chrisb 1 1 revision imported 2695 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = Third-party | type = content | image = [[File:Question book-new.svg|50x40px]] | issue = This {{{1|article}}} '''may rely excessively on sources [[Wikipedia:Verifiability#Self-published sources|too closely associated with the subject]]''', potentially preventing the article from being [[Wikipedia:Verifiability|verifiable]] and [[Wikipedia:Neutral point of view|neutral]]. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it] by replacing them with more appropriate [[Wikipedia:Citing sources|citations]] to [[Wikipedia:Identifying and using independent sources|reliable, independent, third-party sources]]. {{#if:{{{2|}}}|The source in dispute is: {{{2}}}.}} | date = {{{date|}}} |removalnotice = yes }}{{DMCA|Articles lacking reliable references|from|{{{date|}}}|All articles lacking reliable references}} }}<noinclude> {{Documentation}} </noinclude> lojicw65wgu8e0qklh25uv2wol6jh1h Template:Tibetan script needed 10 998 2228 2227 2020-09-29T19:17:32Z Chrisb 1 1 revision imported 2227 wikitext text/x-wiki {{Script needed |language = Tibetan |image = Standard Tibetan name.svg }} p6abh8gviiqid977xgelc8jqhgsu3oz Template:Tick 10 1636 4920 4919 2020-10-11T05:50:32Z Chrisb 1 1 revision imported 4919 wikitext text/x-wiki [[{{ {{{|safesubst:}}}#switch:{{ {{{|safesubst:}}}lc:{{{color|{{{colour|}}}}}} }} |green |grn |gn =File:Yes check.svg |lightgreen |lgreen |lgrn |lgn =File:Light green check.svg |red |rd |r =File:Red check.svg |darkred |dkred |drd |dr =File:Check-188-25-49-red.svg |pink |pnk |pk =File:Pink check.svg |orange |or |o =File:Check.svg |yellow |yel |y =File:Yellow check.svg |black |blk |k =File:Black check.svg |blue |blu |u =File:Check-blue.svg |lightblue |lblue |lblu |lb =File:Cornflower blue check.svg |cyan |cy |c =File:Check-blue.svg |purple |pur |pu =File:Purple check.svg |grey |gray |gry |gy =File:SemiTransBlack v.svg |brown |brn |bn =File:Svg check.svg <!--default--> |File:Yes check.svg }}|{{ {{{|safesubst:}}}#if:{{{1|}}}|{{{1}}}|20}}px|link=|alt=&#9745;]]<span style="display:none">Y</span><!--template:tick--><noinclude> {{documentation}} </noinclude> epgrpht6ep3dnxgufngcdzbm1v784zq Template:Time-context 10 1109 2450 2449 2020-09-29T19:17:48Z Chrisb 1 1 revision imported 2449 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Time-context}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Time-context | type = content | image = [[Image:Ambox currentevent yellow.svg|50px|alt=|link=]] | issue = This {{{1|article}}} is about an event or subject '''{{{2|that may not be current but does not specify the time period}}}'''. | fix = Please help [{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} improve it] to include this information. The [[{{TALKPAGENAME}}|talk page]] may contain suggestions. {{#if:{{{date|}}}|{{small|''({{{date}}})''}}}} }}{{DMCA|Wikipedia articles needing context|from|{{{date|}}}|All Wikipedia articles needing context}}{{DMCA|Wikipedia introduction cleanup|from|{{{date|}}}|All pages needing cleanup}}<!--{{Time-context}} end--> }}<noinclude>{{doc}}</noinclude> 5s0dtbpk9v5g4rhug5dpljdksskygz0 Template:Timeline of MacBook Family Models 10 1457 3218 3217 2020-10-11T01:32:04Z Chrisb 1 1 revision imported 3217 wikitext text/x-wiki #REDIRECT [[Template:Timeline of MacBook family models]] 3fo755x25qyfh7xowaauvjus2mz4v1v Template:Timeline of MacBook family models 10 1458 3220 3219 2020-10-11T01:32:04Z Chrisb 1 1 revision imported 3219 wikitext text/x-wiki {{{headerextension|}}}{{{header|==Timeline of the MacBook family==}}}{{{headerextension|}}} {{see also|Timeline of Macintosh models}} {{#tag:timeline| DateFormat=mm/dd/yyyy Define $now = {{CURRENTMONTH}}/{{CURRENTDAY2}}/{{CURRENTYEAR}} Define $later = {{#time:m/d/Y|+15 months}} Period = from:01/01/2006 till:$later Define $skip = at:end # Force a blank line Define $dayunknown = 15 # what day to use if it's actually not known ImageSize= width:1050 height:auto barincrement:22 TimeAxis = orientation:horizontal PlotArea = right:4 left:0 bottom:100 top:5 Colors = id:bg value:white id:lightline value:rgb(0.9,0.9,0.9) id:lighttext value:rgb(0.5,0.5,0.5) id:mb1 value:rgb(0.9,0.7,0.8) legend:MacBook id:mb2 value:rgb(0.9,0.6,0.8) id:mb3 value:rgb(0.9,0.5,0.8) legend:MacBook_(Unibody) id:mbau value:rgb(0.9,0.6,0.6) id:mb4 value:rgb(0.9,0.8,0.5) legend:MacBook_(Retina_and_USB-C) id:mba value:rgb(0.4,0.9,0.9) legend:MacBook_Air id:mba2 value:rgb(0.0,0.8,0.7) legend:MacBook_Air_(tapered_and_dual_USB) id:mba3 value:rgb(0.0,1,0.7) legend:MacBook_Air_(Retina_and_Thunderbolt_3) id:mbp1 value:rgb(0.8,0.7,1) legend:MacBook_Pro id:mbp2 value:rgb(0.7,0.7,1) id:mbp3 value:rgb(0.6,0.5,1) legend:MacBook_Pro_(Unibody) id:mbp4 value:rgb(0.5,0.5,1) id:mbp5 value:rgb(0.3,0.5,1) legend:MacBook_Pro_(Retina) id:mbp6 value:rgb(0.3,0.7,1) legend:MacBook_Pro_(Thunderbolt_3) id:mbp7 value:rgb(0.2,0.9,1) legend:MacBook_Pro_(Magic_Keyboard) id:nmb1 value:rgb(0.0,1,0.7) id:current value:rgb(0.9,0.9,0.9) legend:Reference/Still_currently_produced BackgroundColors = canvas:bg ScaleMajor = gridcolor:lighttext unit:year increment:1 start:01/01/2006 ScaleMinor = gridcolor:lightline unit:month increment:1 start:01/01/2006 Legend = orientation:vertical position:bottom columns:4 BarData = barset:macbookair barset:macbook barset:macbookpro barset:null barset:reference PlotData= width:15 textcolor:black shift:(5,-5) anchor:from fontsize:s barset:macbookair $skip $skip color:mba from:02/01/2008 till:10/19/2010 text:"[[MacBook Air]] 13''" barset:break color:mba2 from:10/20/2010 till:10/27/2016 text:"[[MacBook Air]] 11'' (tapered)" color:mb4 from:03/09/2015 till:07/09/2019 text:"[[MacBook_(2015–2019)|MacBook]] 12'' (Retina)" color:mba2 from:10/20/2010 till:07/09/2019 text:"[[MacBook Air]] 13'' (tapered)" barset:break $skip $skip $skip color:mba3 from:10/30/2018 till:$now text:"[[MacBook Air]] 13'' (Retina)" barset:break $skip $skip $skip color:current from:$now till:end barset:macbook color:mb1 from:05/16/2006 till:10/20/2009 text:"[[MacBook#Original polycarbonate model|MacBook]]" barset:break color:mb3 from:10/20/2009 till:07/20/2011 text:"[[MacBook#Unibody polycarbonate model|MacBook]] (plastic Unibody)" barset:macbookpro $skip $skip $skip color:mbp1 from:02/14/2006 till:10/14/2008 text:"[[MacBook Pro#First generation|MacBook Pro]] 15''" $skip color:mbp1 from:04/24/2006 till:01/06/2009 text:"[[MacBook Pro#First generation|MacBook Pro]] 17''" barset:break color:mb3 from:10/14/2008 till:06/08/2009 text:"[[MacBook#Unibody aluminum model|MacBook]] (aluminum)" barset:break $skip color:mbp3 from:06/08/2009 till:10/27/2016 text:"[[MacBook Pro#Second generation (unibody)|MacBook Pro]] 13'' (Unibody)" $skip color:mbp3 from:10/14/2008 till:10/22/2013 text:"[[MacBook Pro#Second generation (unibody)|MacBook Pro]] 15'' (Unibody)" $skip color:mbp3 from:01/06/2009 till:06/09/2012 text:"[[MacBook Pro#Second generation (unibody)|MacBook Pro]] 17'' (Unibody)" barset:break $skip $skip color:mbp5 from:10/23/2012 till:06/05/2017 text:"[[MacBook Pro#Third generation (Retina)|MacBook Pro]] 13'' (Retina)" $skip color:mbp5 from:06/09/2012 till:07/12/2018 text:"[[MacBook Pro#Third generation (Retina)|MacBook Pro]] 15'' (Retina)" barset:break color:mbp6 from:10/27/2016 till:05/04/2020 text:"[[MacBook Pro#Fourth generation|MacBook Pro]] 13'' (two TB3 ports)" $skip $skip color:mbp6 from:11/15/2016 till:05/04/2020 text:"[[MacBook Pro#Fourth generation|MacBook Pro]] 13'' (four TB3 ports)" $skip color:mbp6 from:11/15/2016 till:11/13/2019 text:"[[MacBook Pro#Fourth generation|MacBook Pro]] 15'' (four TB3 ports)" barset:break color:mbp7 from:05/04/2020 till:$now text:"[[MacBook Pro#Fifth generation|MacBook Pro]] 13''" $skip $skip color:mbp7 from:05/04/2020 till:$now text:"[[MacBook Pro#Fifth generation|MacBook Pro]] 13''" $skip color:mbp7 from:11/13/2019 till:$now text:"[[MacBook Pro#Fifth generation|MacBook Pro]] 16''" barset:break color:current from:$now till:end $skip $skip color:current from:$now till:end $skip color:current from:$now till:end barset:reference color:lightline from:start till:06/29/2007 barset:break at:08/07/2006 mark:(line,black) barset:break color:lightline from:08/07/2006 till:06/29/2007 text:"[[Mac Pro]]" barset:break at:06/29/2007 mark:(line,black) barset:break color:lightline from:06/29/2007 till:04/03/2010 text:"[[iPhone]]" barset:break at:04/03/2010 mark:(line,black) barset:break color:lightline from:04/03/2010 till:04/24/2015 text:"[[iPad]]" barset:break at:04/24/2015 mark:(line,black) barset:break color:lightline from:04/24/2015 till:11/11/2015 text:"[[Apple Watch|Watch]]" barset:break at:11/11/2015 mark:(line,black) barset:break color:lightline from:11/11/2015 till:12/14/2017 text:"[[iPad Pro]]" barset:break at:12/14/2017 mark:(line,black) barset:break color:lightline from:12/14/2017 till:10/30/2019 text:"[[iMac Pro]]" barset:break at:10/30/2019 mark:(line,black) barset:break color:lightline from:10/30/2019 till:end text:"[[AirPods Pro]]" }} <noinclude> [[Category:Macintosh models graphical timeline templates|MacBook]] </noinclude> jdjcq4cqkwg81d3zm8v3fa6xm6jwd0e Template:Tl 10 879 1990 1989 2020-09-29T19:15:37Z Chrisb 1 1 revision imported 1989 wikitext text/x-wiki &#123;&#123;[[Template:{{{1}}}|{{{1}}}]]&#125;&#125;<noinclude> {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> h0vr3yvr9jdyd17x82vnav21ngwmxuk Template:Tla 10 1303 2838 2837 2020-09-29T19:18:16Z Chrisb 1 1 revision imported 2837 wikitext text/x-wiki #REDIRECT [[Template:Template link with alternate text]] {{Redirect category shell| {{R from move}} }} a5y15g6h6c42e4kt2bvqk2c2vejgg6y Template:Tlc 10 1587 4822 4821 2020-10-11T05:35:28Z Chrisb 1 1 revision imported 4821 wikitext text/x-wiki <span class="nowrap"><code>{{#if:{{{a|}}}|<nowiki>* </nowiki>}}&#123;&#123;{{#if:{{{1|}}}|{{{1}}}| tlc&#124;...}}<!-- -->{{#ifeq:{{{2|x}}}|{{{2|}}}| &#124;{{{2}}} | }}<!-- -->{{#ifeq:{{{3|x}}}|{{{3|}}}| &#124;{{{3}}} | }}<!-- -->{{#ifeq:{{{4|x}}}|{{{4|}}}| &#124;{{{4}}} | }}<!-- -->{{#ifeq:{{{5|x}}}|{{{5|}}}| &#124;{{{5}}} | }}<!-- -->{{#ifeq:{{{6|x}}}|{{{6|}}}| &#124;{{{6}}} | }}<!-- -->{{#ifeq:{{{7|x}}}|{{{7|}}}| &#124;{{{7}}} | }}<!-- -->{{#ifeq:{{{8|x}}}|{{{8|}}}| &#124;{{{8}}} | }}<!-- -->{{#ifeq:{{{9|x}}}|{{{9|}}}| &#124;{{{9}}} | }}<!-- -->&#125;&#125;</code></span><noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> r4jvlzt5ug7ybzetwa1vcthegyqpq1c Template:Tlf 10 898 2028 2027 2020-09-29T19:15:41Z Chrisb 1 1 revision imported 2027 wikitext text/x-wiki #REDIRECT [[Template:Template link with link off]] {{Redirect category shell| {{R from move}} }} 9mrb4gzoa8i94zzxq5i6opzke6v5ntr Template:Tlg 10 899 2030 2029 2020-09-29T19:15:41Z Chrisb 1 1 revision imported 2029 wikitext text/x-wiki {{#Invoke:Tlg|main}}<noinclude> {{Documentation}} </noinclude> lzp4kn7ui0gm80auun61tr0zlefr1zx Template:Tlp 10 1588 4824 4823 2020-10-11T05:35:28Z Chrisb 1 1 revision imported 4823 wikitext text/x-wiki #REDIRECT [[Template:Template link with parameters]] {{R from move}} 6l74hww4lk18kiq6ytyy69dsjvrnwju Template:Tlx 10 1317 2866 2865 2020-09-29T19:18:21Z Chrisb 1 1 revision imported 2865 wikitext text/x-wiki <code><nowiki>{{</nowiki>{{#if:{{{subst|}}} |[[Help:Substitution|subst]]:}}<!-- -->[[{{{lang|{{{LANG|}}}}}}{{{sister|{{{SISTER|}}}}}}{{ns:Template}}:{{{1|}}}|{{{1|}}}]]<!-- -->{{#if:{{{2|}}} |&#124;{{{2}}}}}<!-- -->{{#if:{{{3|}}} |&#124;{{{3}}}}}<!-- -->{{#if:{{{4|}}} |&#124;{{{4}}}}}<!-- -->{{#if:{{{5|}}} |&#124;{{{5}}}}}<!-- -->{{#if:{{{6|}}} |&#124;{{{6}}}}}<!-- -->{{#if:{{{7|}}} |&#124;{{{7}}}}}<!-- -->{{#if:{{{8|}}} |&#124;{{{8}}}}}<!-- -->{{#if:{{{9|}}} |&#124;{{{9}}}}}<!-- -->{{#if:{{{10|}}} |&#124;{{{10}}}}}<!-- -->{{#if:{{{11|}}} |&#124;{{{11}}}}}<!-- -->{{#if:{{{12|}}} |&#124;{{{12}}}}}<!-- -->{{#if:{{{13|}}} |&#124;{{{13}}}}}<!-- -->{{#if:{{{14|}}} |&#124;{{{14}}}}}<!-- -->{{#if:{{{15|}}} |&#124;{{{15}}}}}<!-- -->{{#if:{{{16|}}} |&#124;{{{16}}}}}<!-- -->{{#if:{{{17|}}} |&#124;{{{17}}}}}<!-- -->{{#if:{{{18|}}} |&#124;{{{18}}}}}<!-- -->{{#if:{{{19|}}} |&#124;{{{19}}}}}<!-- -->{{#if:{{{20|}}} |&#124;{{{20}}}}}<!-- -->{{#if:{{{21|}}} |&#124;''...''}}<!-- --><nowiki>}}</nowiki></code>{{#if: {{{LANG|}}} | {{Z181}} | {{#if: {{{SISTER|}}} | {{Z181}} }} }}<noinclude> {{Documentation}} </noinclude> 1zx1keyq77wroc6nnxhxbv49on9i1og Template:Tmbox 10 913 2058 2057 2020-09-29T19:17:22Z Chrisb 1 1 revision imported 2057 wikitext text/x-wiki {{#invoke:Message box|tmbox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> jcav8pdjkvcwg8gc4m0b4gox7yjnxku Template:Tmbox/doc 10 1304 2840 2839 2020-09-29T19:18:16Z Chrisb 1 1 revision imported 2839 wikitext text/x-wiki {{Documentation subpage}} {{High-risk| 2553167 |all-pages = yes}} {{Lua|Module:Message box}} <!-- PLEASE ADD CATEGORIES WHERE INDICATED AT THE BOTTOM OF THIS PAGE --> {{Mbox templates (small)}} This is the {{tl|Tmbox}} (['''T''']alk page ['''m''']essage ['''box''']) metatemplate. This template is called by other templates to give a consistent structure and appearance to boilerplate messages used on talk pages across the project. It ''may'' be called directly on a talk page in order to present a one-off message in the same format as boilerplate messages, but this is non-standard (if a message is important enough to be presented in this form, you should consider creating a separate template so that it is easily available to other editors). Tmbox offers several different colors for different purposes, provides default images if no image parameter is given, and has some other pleasant features. This template works similarly to {{tl|Ambox}} and uses the same parameters. This template should not be used for WikiProject banners. Such banners have special programming constraints that merit their own meta-templates. See the "See also" section below for links. === Suggested style standard === The types of talkpage messageboxes follow the same naming convention as the boxes for all other namespaces, but the type of any particular talkpage messagebox may not be as obvious as in other namespaces. When deciding on the type to use for a talkpage messagebox, please consider the following guidelines: * '''speedy''' should ''only'' be used for [[:Category:Speedy deletion templates|speedy deletion templates]]. * '''delete''' should ''only'' be used for templates relating to ''ongoing'' deletion discussions. Please do ''not'' use this type just to get a red border for a messagebox. * '''content''' and '''style''' should be used for warnings and alerts. Use '''content''' (which has an orange border) for more important and immediate alerts, and '''style''' (yellow border) for less important warnings. Messageboxes of these types should ideally be ''transitory'': they should not be expected to remain on a talkpage indefinitely. * '''move''' and '''protection''' should only be used for messageboxes relating to moves and merges, and page protection, respectively. * The '''notice''' type should be used for the majority of talkpage messageboxes; those that are intended to convey or summarise information. If a talkpage messagebox does not obviously fit into one of the other types, it is probably a notice type. === Usage === Simple usage example: <pre> {{tmbox | text = Some text.}} </pre> {{tmbox | text = Some text.}} Complex example: <pre> {{tmbox | type = style | image = [[File:Emblem-question-yellow.svg|40px|link=|alt=]] | style = width: 400px; | textstyle = color: red; font-weight: bold; font-style: italic; | text = The message body text. }} </pre> {{tmbox | type = style | image = [[File:Emblem-question-yellow.svg|40px|link=|alt=]] | style = width: 400px; | textstyle = color: red; font-weight: bold; font-style: italic; | text = The message body text. }} === Talk page message box types === The following examples use different '''type''' parameters but use no image parameters thus they use the default images for each type. {{tmbox | type = speedy | text = type=<u>speedy</u> – Speedy deletion templates. }} {{tmbox | type = delete | text = type=<u>delete</u> – Deletion templates. }} {{tmbox | type = content | text = type=<u>content</u> – Major warnings and problems. }} {{tmbox | type = style | text = type=<u>style</u> – Minor warnings and problems. }} {{tmbox | type = notice | text = type=<u>notice</u> – Notices and messages of any kind, both permanent and temporary. }} {{tmbox | type = move | text = type=<u>move</u> – Merge, split, rename and transwiki messages and proposals. }} {{tmbox | type = protection | text = type=<u>protection</u> – Protection templates. }} === Special === Some other parameter combinations. {{tmbox | text = No type and no image given ('''default''') }} {{tmbox | image = none | text = No type and '''image=none''' – No image is used and the '''text''' uses the whole message box area. }} {{tmbox | image = [[File:Gnome globe current event.svg|42px]] | imageright = [[File:Nuvola apps bookcase.svg|40px]] | text = image = <nowiki>[[File:Gnome globe current event.svg|42px]]</nowiki> <br> imageright = <nowiki>[[File:Nuvola apps bookcase.svg|40px]]</nowiki> }} === Parameters === List of all parameters: <pre> {{tmbox | name = name of the template | type = speedy / delete / content / style / notice / move / protection | image = none / [[File:Some image.svg|40px]] | imageright = [[File:Some image.svg|40px]] | style = CSS values | textstyle = CSS values | plainlinks = no | text = The message body text. | small = {{{small|}}} / yes | smallimage = none / [[File:Some image.svg|30px]] | smallimageright = none / [[File:Some image.svg|30px]] | smalltext = A shorter message body text. }} </pre> '''name''' :(Optional) Name of the template. This adds a CSS class with name <code>box-''name''</code> to the HTML element, for use by bots or scripts. '''type''' :If no '''type''' parameter is given the template defaults to type '''notice'''. That means it gets a gray border. '''image''' :'''No parameter''' = If no '''image''' parameter is given the template uses a default image. Which default image it uses depends on the '''type''' parameter. :'''An image''' = Should be an image with usual wiki notation. 40px - 50px width are usually about right depending on the image height to width ratio. (But the message box can handle images of any size.) For example: ::<code><nowiki>image = [[File:Crystal package settings.png|40px]]</nowiki></code> :'''none''' = Means that no image is used. {{Anchor|imageright}}'''imageright''' :'''No parameter''' = If no '''imageright''' parameter is given then no image is shown on the right side. :'''An image''' = Should be an image with usual wiki notation. 40px - 50px width are usually about right depending on the image height to width ratio. (But the message box can handle images of any size.) For example: ::<code><nowiki>imageright = [[File:Nuvola apps bookcase.png|40px]]</nowiki></code> :'''Anything''' = Any other object that you want to show on the right side. '''style''' :Optional [[Cascading Style Sheets|CSS]] values used by the entire message box table. Without quotation marks <code>" "</code> but with the ending semicolons <code>;</code>. For example: ::<code>style = margin-bottom: 0.5em;</code> '''textstyle''' :Optional [[Cascading Style Sheets|CSS]] values used by the text cell. For example: ::<code>textstyle = text-align: center;</code> '''plainlinks''' :Normally on Wikipedia, external links have an arrow icon next to them, like this: [http://www.example.com Example.com]. However, in message boxes, the arrow icon is suppressed by default, like this: <span class="plainlinks">[http://www.example.com Example.com]</span>. To get the normal style of external link with the arrow icon, use {{para|plainlinks|no}}. '''text''' :The message body text. ==== The small parameters ==== {{tmbox | small = yes | text = small = yes }} {{tmbox | type = style | small = yes | text = type = style <br> small = yes }} '''small''' :'''yes''' = Makes it a smaller right floating message box. This also makes the default images smaller. Note that any data fed to the '''smallimage''', '''smallimageright''' and '''smalltext''' parameters is only used if "small=yes". To make it so your template also understands the small parameter you can use this code: ::<code><nowiki>small = {{{small|}}}</nowiki></code> {{tmbox | small = yes | image = [[File:Nuvola apps bookcase.svg|40px]] | smallimage = [[File:Nuvola apps bookcase.svg|30px]] | text = small = yes <br> image = <nowiki>[[File:Nuvola apps bookcase.svg|40px]]</nowiki> <br> smallimage = <nowiki>[[File:Nuvola apps bookcase.png|30px]]</nowiki> }} '''smallimage''' :'''No parameter''' = If no '''smallimage''' parameter is given then this template falls back to use the '''image''' parameter. If the '''image''' parameter also is empty then a small default image is used. :'''An image''' = Should be an image with usual wiki notation. 30px width is usually about right. For example: ::<code><nowiki>smallimage = [[File:Crystal package settings.png|30px]]</nowiki></code> :'''none''' = Means that no image is used. This overrides any image fed to '''image''', when "small=yes". {{tmbox | small = yes | imageright = [[File:Nuvola apps bookcase.svg|40px]] | text = small = yes <br> imageright = <nowiki>[[File:Nuvola apps bookcase.svg|40px]]</nowiki> }} {{tmbox | small = yes | imageright = [[File:Nuvola apps bookcase.svg|30px]] | smallimageright = none | text = small = yes <br> imageright = <nowiki>[[File:Nuvola apps bookcase.svg|40px]]</nowiki> <br> smallimageright = none }} '''smallimageright''' :'''No parameter''' = If no '''smallimageright''' parameter is given then this template falls back to use the '''imageright''' parameter. If the '''imageright''' parameter also is empty then no image is shown on the right side. :'''An image''' = Should be an image with usual wiki notation. 30px width is usually about right. For example: ::<code><nowiki>smallimageright = [[File:Nuvola apps bookcase.png|30px]]</nowiki></code> :'''Anything''' = Any other object that you want to show on the right side. :'''none''' = Means that no right side image is used. This overrides any image fed to '''imageright''', when "small=yes". '''smalltext''' :A shorter version of the message body text. If no '''smalltext''' parameter is given then this template falls back to use the '''text''' parameter. === Technical details === If you need to use special characters in the text parameter then you need to escape them like this: <pre> {{tmbox | text = <div> Equal sign = and a start and end brace { } work fine as they are. But here is a pipe {{!}} and two end braces &lt;nowiki>}}&lt;/nowiki>. And now a pipe and end braces &lt;nowiki>|}}&lt;/nowiki>. </div> }} </pre> {{tmbox | text = <div> Equal sign = and a start and end brace { } work fine as they are. But here is a pipe {{!}} and two end braces <nowiki>}}</nowiki>. And now a pipe and end braces <nowiki>|}}</nowiki>. </div> }} This template uses the tmbox CSS classes in [[MediaWiki:Common.css]] for most of its looks, thus it is fully skinnable. This template calls [[Module:Message box]] which holds most of the code for {{tl|tmbox}}, while {{tl|tmbox}} itself does parameter preprocessing. Internally this meta-template uses HTML markup instead of wiki markup for the table code. That is the usual way we make meta-templates since wiki markup has several drawbacks. For instance it makes it harder to use [[m:Help:ParserFunctions|parser functions]] and special characters in parameters. For more technical details see the [[Template talk:Tmbox|talk page]]. Since this template works almost exactly like {{tl|ambox}}, {{tl|imbox}}, {{tl|cmbox}} and {{tl|ombox}} their talk pages and related pages might also contain more details. === See also === Similar templates: * {{tl|Notice}} {{Mbox templates see also}} Other pages: * [[Wikipedia:Talk page templates]] – The guideline specifying the styles for talk page message boxes. WikiProject banners: * {{tl|WikiProject banner shell}} and {{tl|WPBannerMeta}} – A system for collapsing, wrapping and creating WikiProject banners. * {{tl|WikiProjectBanners}} – Another system for collapsing WikiProject banners. <includeonly>{{Sandbox other| | <!-- CATEGORIES BELOW THIS LINE, PLEASE: --> [[Category:Mbox and messagebox templates]] [[Category:Talk namespace templates| ]] }}</includeonly> rnr6bbonseh2oxuilrhnh42avboi0x3 Template:Tnull 10 1623 4894 4893 2020-10-11T05:39:04Z Chrisb 1 1 revision imported 4893 wikitext text/x-wiki <code>&#123;&#123;{{#if:{{{1|}}}|{{{1}}}| tnull&#124;...}}{{#if:{{{2|}}}|&#124;{{{2}}}|}}{{#if:{{{3|}}}|&#124;{{{3}}}|}}{{#if:{{{4|}}}|&#124;{{{4}}}|}}{{#if:{{{5|}}}|&#124;{{{5}}}|}}{{#if:{{{6|}}}|&#124;{{{6}}}|}}{{#if:{{{7|}}}|&#124;{{{7}}}|}}{{#if:{{{8|}}}|&#124;{{{8}}}|}}{{#if:{{{9|}}}|&#124;{{{9}}}|}}{{#if:{{{10|}}}|&#124;{{{10}}}|}}{{#if:{{{11|}}}|&#124;{{{11}}}|}}&#125;&#125;</code><noinclude> {{documentation}}</noinclude> au6y4erpe6xb0hf46tmfi592qkquye4 Template:Tok Pisin script needed 10 1067 2366 2365 2020-09-29T19:17:42Z Chrisb 1 1 revision imported 2365 wikitext text/x-wiki {{Script needed |language = Tok Pisin |image = }} ehjo56bzal7ifxky19j7m48pslfsn2m Template:Tone 10 937 2106 2105 2020-09-29T19:17:25Z Chrisb 1 1 revision imported 2105 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = Tone | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | class = ambox-Tone | issue = This {{{1|article}}}'s '''tone or style may not reflect the [[wp:Writing better articles#Tone|encyclopedic tone]] used on Wikipedia'''. {{#if:{{{reason|}}}|The reason given is:''' {{{reason}}} '''}} | talk = {{{talk|}}} | fix = See Wikipedia's [[Wikipedia:Writing better articles#Tone|guide to writing better articles]] for suggestions. | removalnotice = yes | date = {{{date|}}} }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}} }}<noinclude> {{Documentation}} </noinclude> 83hr7mahvqm6awckr26nv17evaecgl4 Template:Too abstract 10 1110 2452 2451 2020-09-29T19:17:48Z Chrisb 1 1 revision imported 2451 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Too abstract}} begin-->{{Ambox | name = Too abstract | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | image = [[File:Emblem-question-yellow.svg|40px]] | issue = This {{{1|article or section}}} may be written in a style that is '''too abstract''' to be readily understandable by [[WP:MTAA|general audiences]]. | fix = Please [[WP:EDIT|improve]] it by defining technical terminology, and by adding examples. | date = {{{date|}}} | cat-date = Wikipedia articles needing clarification }}<!--{{Too abstract}} end--> }}<noinclude>{{Documentation}}</noinclude> s64qa9i273xnnro3qjv4r3o5w4jaznf Template:Too few opinions 10 1111 2454 2453 2020-09-29T19:17:48Z Chrisb 1 1 revision imported 2453 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Too few opinions}} begin-->{{Ambox | name = Too few opinions | type = content | class = ambox-too_few_opinions | subst = <includeonly>{{subst:substcheck}}</includeonly> | issue = The examples and perspective in this {{{1|article}}} '''may not [[Wikipedia:WikiProject Countering systemic bias|include all significant viewpoints]]'''. | fix = Please [{{SERVER}}{{localurl:{{PAGENAME}}|action=edit}} improve the article] or [[{{{discuss|:{{TALKPAGENAME}}}}}|discuss the issue]]. | removalnotice = yes | date = {{{date|}}} | cat = Articles needing more viewpoints }}<!--{{Too few opinions}} end--> }}<noinclude> {{Documentation}} </noinclude> av7z0wrfho853g2zecjttqwss8gm5vq Template:Too many flags 10 1279 2790 2789 2020-09-29T19:18:13Z Chrisb 1 1 revision imported 2789 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = Too many flags | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = | class = | issue = This {{{1|article}}}'s use of '''[[WP:MOSICON|flags and other icons]] may not reflect the standard used on Wikipedia''' and is in need of [[Wikipedia:Cleanup|cleanup]]. | talk = {{{talk|}}} | fix = See Wikipedia's [[WP:MOSICON|flag and icon use style guide]] for suggestions. | date = {{{date|}}} | cat = Wikipedia articles needing editing for flag use | all = All articles with style issues }} }}<noinclude> {{Documentation}} </noinclude> 6hdl2xnr6z9xg4mxn0sxq9q1pmlhryp Template:Too many photos 10 1112 2456 2455 2020-09-29T19:17:49Z Chrisb 1 1 revision imported 2455 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Too many photos}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{ ambox | name = Too many photos | type = style | removalnotice = yes | image = [[file:Camera-photo.svg|50x40px]] | issue = This {{{1|article}}} contains '''too many pictures, charts or diagrams''' for its overall length. | fix = Please help to [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by converting charts or diagrams into '''[[Wikipedia:Manual of Style/Embedded lists#Prose versus lists| prose text]]''' or adjusting the '''[[MOS:SANDWICHING|sand­wich­ing of text between two im­ages]]''' and '''[[WP:GALLERY|indiscriminate galleries]]'''. See the [[Wikipedia:Manual of Style/Images|Manual of Style on use of images]]. | date = {{{date|}}} }}<includeonly>{{Main other|[[Category:Pages with too many photos]]}}</includeonly><!--{{Too many photos}} end--> }}<noinclude>{{Documentation}}</noinclude> 1ryztyh83km8ipaoapt0vq6e59g53dp Template:Too many see alsos 10 1113 2458 2457 2020-09-29T19:17:49Z Chrisb 1 1 revision imported 2457 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Too many see alsos}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Too many see alsos | type = style | text = This "[[Wikipedia:Manual of Style/Layout#"See also"_section|see also]]" section '''may contain an excessive number of suggestions'''. Please ensure that only the most relevant links are given, that they are not [[Wikipedia:Red link|red links]], and that any links are not already in this article. {{#if:{{{date|}}}|<small>''({{{date}}})''</small>}} | removalnotice = yes }}{{DMCA|Articles with excessive see also sections|from|{{{date|}}}}}<!--{{Too many see alsos}} end--> }}<noinclude>{{documentation}}<!-- place category and language links on the /doc sub-page, not here --></noinclude> 52ezudz5tf36kbtt1l3l3zvfmwcw7aw Template:TranslatePassage 10 1114 2460 2459 2020-09-29T19:17:49Z Chrisb 1 1 revision imported 2459 wikitext text/x-wiki <!--{{TranslatePassage}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = TranslatePassage | type = style | image = [[Image:Translation to english arrow.svg|50px|Translation to english arrow icon]] | text = '''A passage in this article or section needs to be [[Wikipedia:Translation|translated]] from {{{1|its current language}}} into English.'''<br /><small>If you are confident enough in your fluency of English and {{{1|this language}}}, please feel free to [[Wikipedia:Translation/*/How-to|add a translation]].</small> Please see '''[[Wikipedia:Pages needing translation into English#{{PAGENAME}}|this article's entry]]''' on [[Wikipedia:Pages needing translation into English|Pages needing translation into English]] for discussion. {{#ifeq: {{yesno|{{{listed|no}}}}}|yes||{{pnt notice|{{{1|unknown}}}}}}} }}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{{category|[[Category:Wikipedia articles needing translation]]}}}}}</includeonly><!--{{TranslatePassage}} end--><noinclude> ---- This template will categorize tagged articles into [[:Category:Wikipedia articles needing translation]]. This [[Wikipedia:Template|template]] is a [[Wikipedia:Avoid self-references|self-reference]]. This template is not useful for [[Wikipedia:Subst]]. ==See also== * [[Template:Not English]] * [[Template:Cleanup translation]] * [[Template:Rough translation]] * [[Template:Needs IPA]] * [[Wikipedia:Template messages/Cleanup]] * [[Wikipedia:Translation]] [[Category:Wikipedia translation templates]] </noinclude> 41ix4vniz6zwswavh7jw5o27rhgq7jp Template:Translation WIP 10 977 2186 2185 2020-09-29T19:17:30Z Chrisb 1 1 revision imported 2185 wikitext text/x-wiki <!--{{Translation WIP}} begin-->{{Ambox | name = Translation WIP | subst= <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | image= [[Image:Translation to english arrow.svg|50px|Translation arrow icon]] | text = This article is a '''translation-work in progress ''' of the article '''[[:{{{3|FLSC}}}:{{{1|ArticleName}}}|{{{1|ArticleName}}}]]''' from {{{2|FromLanguage}}} to English.<br> <small>You can help Wikipedia by assisting in the translation.</small> | all = Articles in translation }}<!--{{Translation WIP}} end--><noinclude> {{Documentation}} </noinclude> dqkmxc1byy8mxu8c482ytl0hur8v9bc Template:Travel guide 10 1115 2462 2461 2020-09-29T19:17:49Z Chrisb 1 1 revision imported 2461 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Travel guide}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Travel guide | type = style | issue = This {{{1|article}}} '''is written like a [[WP:NOTTRAVEL|travel guide]] rather than an encyclopedic description of the subject'''. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] by rewriting it in an [[Wikipedia:Encyclopedic style|encyclopedic style]]. If a travel guide is intended, use of [[Wikivoyage]] is strongly suggested. | date = {{{date|}}} }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}}<!--{{Travel guide}} end--> }}<noinclude>{{Documentation}}</noinclude> e0t6ohaum2qyg4me659km8tfqz86erd Template:Trim quotes 10 1624 4896 4895 2020-10-11T05:39:04Z Chrisb 1 1 revision imported 4895 wikitext text/x-wiki {{#invoke:Trim quotes|trim|s={{{s|{{{1|}}}}}}}}<noinclude> {{documentation}} </noinclude> ithw9opg60n9gqsw1vx0o7fh57ingg9 Template:Trivia 10 1124 2480 2479 2020-09-29T19:17:50Z Chrisb 1 1 revision imported 2479 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Trivia}} begin-->{{Ambox | name = Trivia | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | issue = contains a '''[[Wikipedia:Manual of Style/Trivia sections|list of miscellaneous information]].''' | fix = Please [[Wikipedia:Handling trivia#Recommendations for handling trivia|relocate]] any relevant information {{#if:{{{2|{{{to|}}}}}}|to [[{{{2|{{{to}}}}}}]]|into other sections or articles}}. | date = {{{date|}}} | sect = {{#ifeq:{{yesno|def=|1={{{sect|{{{section}}}}}} }}|yes|section|{{{sect|{{{section|{{{1|}}}}}}}}} }} | small = {{#if:{{{sect|{{{section|{{{1|}}}}}}}}}|{{#if:{{{small|{{{left|}}}}}}|left}} }} | cat = Articles with trivia sections | all = All articles with trivia sections }}<!--{{Trivia}} end--> }}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> 7cw38a0ecqk2ilsz5aus391rxpb4ic7 Template:Twinkle standard installation 10 1649 4946 4945 2020-10-11T05:50:40Z Chrisb 1 1 revision imported 4945 wikitext text/x-wiki {{Mbox | image = [[File:Police man Twinkle Head.svg|50x40px|alt=Logo of Twinkle; Police Man|link=]] | text = If you plan to make [[Template:Twinkle standard installation#"breaking changes"|breaking changes]] to this template, move it, or nominate it for deletion, please notify [[Wikipedia:Twinkle|Twinkle's]] users and maintainers at [[Wikipedia talk:Twinkle]] as a courtesy, as this template is used in the standard installation of Twinkle. Thank you! {{#if:{{{1|}}}|<br> {{{1}}}}}}}<includeonly>{{#if:{{{nocat|}}}||{{#ifeq:{{PAGENAME}}|{{BASEPAGENAME}}|[[Category:Templates used by Twinkle|{{PAGENAME}}]]}}}}</includeonly><noinclude> {{Documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --></noinclude> tew7vmo0iz2akst9kphadayjxghro1d Template:UF-hcal 10 1667 4982 4981 2020-10-11T05:50:44Z Chrisb 1 1 revision imported 4981 wikitext text/x-wiki {{Microformat message | format = hCalendar | data = event details | subtemplates = {{#if:{{{hide_subtemplates}}} |<noinclude>}} Dates will only be included if you use {{tl|start date}} (for single dates) or {{tl|end date}}. Do not, however, use these templates [[Wikipedia:WikiProject Microformats/dates|if a date before 1583&nbsp;CE is involved]]. To include URLs, use {{tl|URL}}. {{#if:{{{hide_subtemplates}}} |</noinclude>}} |attendee |contact |description |dtend |dtstart |location |organiser |summary |url |vevent | nocollapse = on }}<includeonly>{{#ifeq:{{SUBPAGENAME}}|doc | |{{#ifeq:{{SUBPAGENAME}}|sandbox | |[[Category:Templates generating hCalendars|{{PAGENAME}}]]}} }}</includeonly><noinclude> {{Documentation |content={{Microformat message templates}}}} [[Category:Microformat (uF) message templates]] </noinclude> sjfznaev9rdd9yrl61nq1ahkcw1j2iz Template:UF-hprod 10 1668 4984 4983 2020-10-11T05:50:45Z Chrisb 1 1 revision imported 4983 wikitext text/x-wiki {{Microformat message | format = hProduct | data = a product's details | subsection1 = If the product has a URL, use {{tl|URL}} to include it. |brand |category |description |fn |hproduct |identifier |listing |photo |price |review |type |url |value | nocollapse = on }}<includeonly>{{#ifeq:{{SUBPAGENAME}}|doc | |{{#ifeq:{{SUBPAGENAME}}|sandbox | |[[Category:Templates generating hProduct|{{PAGENAME}}]]}} }}</includeonly><noinclude> {{Documentation |content={{Microformat message templates}}}} [[Category:Microformat (uF) message templates]] [[Category:Templates generating hProduct| ]] </noinclude> snz5j2i3n3mktp7zq9iywogqge2tev7 Template:USRD-wrongdir 10 1127 2486 2485 2020-09-29T19:17:51Z Chrisb 1 1 revision imported 2485 wikitext text/x-wiki {{ambox |name=USRD-wrongdir |subst=<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> |type=style |issue='''This {{#switch:{{{1|}}}|article|section={{{1}}}|#default=article or section}} is written in the wrong direction.''' U.S. road articles are [[WP:WikiProject U.S. Roads/Standards|generally written in a south-to-north and west-to-east direction]] in order to follow the order of their mileposts. |fix=Please help by rewriting the {{#switch:{{{1|}}}|article|section={{{1}}}|#default=article or section}} in the correct direction. |all=U.S. road articles written in the wrong direction }}<noinclude>{{documentation}} [[Category:U.S. road articles written in the wrong direction|*]]</noinclude> 7ril3smqyi4fa9y9chqxw6zq9ukob5x Template:USgovtPOV 10 1138 2508 2507 2020-09-29T19:17:52Z Chrisb 1 1 revision imported 2507 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{USgovtPOV}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}} {{Ambox | name = USgovtPOV | class = ambox-usgovtpov | type = content | image = [[Image:Ambox scales.svg|50px|link=]] | issue = This {{{1|article}}} is <strong>based partially or entirely on [[Copyright status of work by the U.S. government|public domain works of the U.S. government]], {{#if:{{{2|{{{agency|{{{especially|}}}}}}}}}|especially from {{{2|{{{agency|{{{especially|}}}}}}}}}}}</strong> and thus may require cleanup. | fix = You can help by [{{SERVER}}{{localurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} rewriting it] from a [[Wikipedia:Neutral point of view|neutral viewpoint]] to meet [[:Category:Wikipedia style guidelines|Wikipedia's standards]], and expanding the {{{1|article}}} by adding [[WP:VERIFY|verifiable content]] from [[WP:RS|reliable sources]]. The [[{{TALKPAGENAME}}|talk page]] may contain relevant discussion. | date = {{{date|}}} | removalnotice = yes}} {{DMCA|Articles needing POV-check|from|{{{date|}}}|All NPOV disputes}}}}<!--{{USgovtPOV}} end--> <noinclude>{{Documentation}} </noinclude> 5wv120lyik0gueypfgwacuqg48qibek Template:Umbox 10 918 2068 2067 2020-09-29T19:17:23Z Chrisb 1 1 revision imported 2067 wikitext text/x-wiki <div style="background-color: #BBDDFF; border: #4169E1 1px solid; margin: 2em 0 1em; padding: 0.5em 1em; font-weight: bold; overflow: auto; vertical-align: middle; {{{style|}}}"><noinclude><!-- // Image --></noinclude>{{{{{|safesubst:}}}#if:{{{image|}}}|[[File:{{{image}}}|left|40px|link={{{imagelink|}}}]]}}<noinclude><!-- // Text --></noinclude>{{{text|}}}</div><noinclude> {{Documentation}} <!-- PLEASE ADD CATEGORIES TO THE /doc SUBPAGE, THANKS --> </noinclude> b6btxmaez4v7sttq67tcatbbeo9m573 Template:Unbalanced 10 1128 2488 2487 2020-09-29T19:17:51Z Chrisb 1 1 revision imported 2487 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Unbalanced}} begin-->{{Ambox | name = Unbalanced | class = ambox-unbalanced | type = content | subst = <includeonly>{{subst:substcheck}}</includeonly> | image = [[File:Ambox scales.svg|50px|link=]] | issue = This {{{1|article}}} '''may be [[Wikipedia:Neutral point of view#Undue weight|unbalanced]] towards certain viewpoints'''. | fix = Please [{{SERVER}}{{localurl:{{PAGENAME}}|action=edit}} improve the article] by adding information on neglected viewpoints, or discuss the issue on the [[:{{NAMESPACE}} talk:{{PAGENAME}}|talk page]]. | date = {{{date|}}} | cat = Articles needing more viewpoints }}<!--{{Unbalanced}} end--> }}<noinclude> {{Documentation}} <!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --> </noinclude> 00xkxdifm5czgcehfuieapyst0o46mb Template:Unbalanced section 10 1129 2490 2489 2020-09-29T19:17:51Z Chrisb 1 1 revision imported 2489 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Unbalanced section}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox |name = Unbalanced section | type = content | image = [[Image:Ambox scales.svg|50px|link=]] | issue = This section '''may be [[WP:DUE|unbalanced]] towards certain viewpoints'''. | fix = Please [{{SERVER}}{{localurl:{{PAGENAME}}|action=edit}} improve the article] or discuss the issue on the [[:{{NAMESPACE}} talk:{{PAGENAME}}|talk page]]. | date = {{{date|}}} }}{{DMCA|Articles needing more viewpoints|from|{{{date|}}}}}<!--{{Unbalanced section}} end--> }}<noinclude> {{Documentation}} </noinclude> cq6y36uapbxv47sfomt6gct3q08umvm Template:Unchronological 10 1130 2492 2491 2020-09-29T19:17:51Z Chrisb 1 1 revision imported 2491 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Unchronological}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox |name = Unchronological | type = content | image = [[File:Ambox outdated.svg|40px]] | text = The chronology in this {{#ifeq:{{{section|}}}|yes|section|{{{2|article}}}}} '''seems to be out of order.'''{{#if:{{{1|}}}|, as {{{1}}}}} [{{fullurl:{{FULLPAGENAME}}|action=edit}} You can help]. The [[{{TALKPAGENAME}}|discussion page]] may contain suggestions. | date = {{{date|}}} }}{{DMCA|Wikipedia articles needing rewrite|from|{{{date|}}}}}<!--{{Unchronological}} end--> }}<noinclude>{{Documentation}}</noinclude> 37xqb61z2qu7v31ywnnzzkfqanynj7l Template:Uncited category 10 1163 2558 2557 2020-09-29T19:17:56Z Chrisb 1 1 revision imported 2557 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = {{{name|Uncited category}}} | subst = {{{subst|<includeonly>{{subst:substcheck}}</includeonly>}}} | small = {{{small|}}} | type = content | class = ambox-Refimprove | issue = This {{#if:{{{type|}}}|{{{type|}}}|article}} is in the {{#if:{{{2|{{{cat2|}}}}}}|categories|category}} {{#if:{{{1|{{{cat1|}}}}}}|[[:Category:{{{1|{{{cat1|}}}}}}]]{{#if:{{{2|{{{cat2|}}}}}}|&nbsp;and [[:Category:{{{2|{{{cat2|}}}}}}]]}}|<noinclude>Category:{{var|Name_here}}</noinclude>}}, but no [[Wikipedia:Reliable sources|reliable sources]] are [[Help:Introduction to referencing/1|cited to verify]] {{#if:{{{2|{{{cat2|}}}}}}|their|its}} inclusion. | fix = Please help by adding references that support {{#if:{{{2|{{{cat2|}}}}}}|their|its}} inclusion, or remove the {{#if:{{{2|{{{cat2|}}}}}}|categories|category}} if none exist. | talk = {{{talk|}}} | date = {{{date|}}} | all = {{Template other|<!-- Will not categorize if transcluded into the template namespace -->|Articles with uncited categories}} | removalnotice = {{{help|yes}}} }} <!--{{Uncited category}} end--> }}<noinclude> {{documentation}}<!-- Please add categories and interwikis to the /doc subpage --> </noinclude> 277ecm4cpq8yb0hf84zub1w4t6lp7n9 Template:Unclear date 10 1131 2494 2493 2020-09-29T19:17:51Z Chrisb 1 1 revision imported 2493 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Unclear date}} begin-->{{Ambox | name = Unclear date | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | issue = '''This {{{1|article or section}}} contains statements that may [[Wikipedia:Avoid statements that will date quickly|date quickly]] and become unclear.''' | fix = Please {{plain link|url={{SERVER}}{{localurl:{{PAGENAME}}|action=edit}} improve the article}} or discuss this issue on the [[{{TALKPAGENAME}}|talk page]]. | date = {{{date|}}} | cat = Wikipedia articles needing clarification }}<!--{{Unclear date}} end--> }}<noinclude> {{Documentation}} </noinclude> ltygbgnm1eebjpfajvel4guqtyz8lxf Template:Underlinked 10 1151 2534 2533 2020-09-29T19:17:54Z Chrisb 1 1 revision imported 2533 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Underlinked}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Underlinked | type = style | image = [[File:Ambox wikify.svg|50x40px|link=|alt=]] | issue = This {{{1|article}}} '''needs more [[Wikipedia:Manual of Style/Linking|links to other articles]] to help [[Wikipedia:Manual of Style/Linking#Principles|integrate it into the encyclopedia]]'''. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by adding links [[Wikipedia:Manual of Style/Linking#Overlinking and underlinking|that are relevant to the context]] within the existing text. | removalnotice = yes | date = {{{date|}}} | cat = Articles with too few wikilinks | all = All articles with too few wikilinks | cat2 = Articles covered by WikiProject Wikify | all2 = All articles covered by WikiProject Wikify }}<!--{{Underlinked}} end--> }}<noinclude> {{Documentation}} </noinclude> 94aqkwu7hwsg52tk0sjpghczjloe1zp Template:Undisclosed paid 10 1251 2734 2733 2020-09-29T19:18:09Z Chrisb 1 1 revision imported 2733 wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__|$B= {{Ambox | name = Undisclosed paid | type = delete | image = [[File:Dollar sign in circle cleaned (PD version).svg|50x40px|link=]] | issue = This {{{1|article}}} '''may have been created or edited in return for undisclosed payments'''{{#if:{{{pre16Jun2014|}}}||, a violation of Wikipedia's [[wmf:Terms of Use|terms of use]]}}. | fix = It may require cleanup to comply with Wikipedia's [[Wikipedia:List of policies#Content|content policies]]. | date = {{{date|}}} | cat = Wikipedia articles with undisclosed paid content }} }}<noinclude>{{Documentation}}<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --></noinclude> ge1n6oob2ps3pesm6789l39si990aby Template:Undue weight 10 1243 2718 2717 2020-09-29T19:18:08Z Chrisb 1 1 revision imported 2717 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B= <!--{{Undue weight}} begin-->{{Ambox | name = Undue weight | subst = <includeonly>{{subst:substcheck}}</includeonly> | small = {{{small|}}} | type = content | image = [[File:Ambox scales.svg|50px|link=|alt=Unbalanced scales]] | class = ambox-undue-weight | sect = {{{1|}}} | issue = may '''lend [[Wikipedia:Neutral point of view#Due and undue weight|undue weight]] to {{{2|{{{to|certain ideas, incidents, or controversies}}}}}}'''. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help improve it] by rewriting it in a '''[[Wikipedia:Neutral point of view#Balance|balanced fashion]]''' that contextualizes different points of view. | removalnotice = yes | date = {{{date|}}} | cat = Articles needing POV-check }}<!--{{Undue weight}} end--> }}<noinclude> {{Documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> k49t81be52pzmk89ky9kl540i7sylxp Template:Unfocused 10 1202 2636 2635 2020-09-29T19:18:02Z Chrisb 1 1 revision imported 2635 wikitext text/x-wiki {{{{{|safesubst:}}}#invoke:Unsubst||date=__DATE__|$B={{Ambox | name = Unfocused | type = content | issue = This {{#if:{{{section|}}}|section|article}} '''may lack focus or may be about more than one topic'''. {{#if:{{{reason|}}}|In particular, {{{reason}}}.}} | fix = Please help improve this article, possibly by [[WP:Splitting|splitting]] the article and/or by introducing a [[WP:Disambiguation|disambiguation page]], or discuss this issue on the [[{{TALKPAGENAME}}#{{{talk|{{{1|}}}}}}|talk page]]. | date = {{{date|}}} | cat = Wikipedia articles lacking focus | all = All Wikipedia articles lacking focus }} }}<noinclude> {{Documentation}} </noinclude> hc1g2rbk0c221804wwz1azlp28z7jkk Template:Units attention 10 1132 2496 2495 2020-09-29T19:17:51Z Chrisb 1 1 revision imported 2495 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Unit-attn}} begin-->{{Ambox | name = Units attention | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = style | image = [[Image:Measuring tape icon.svg|55px]] | issue = '''The [[units of measurement]] used in this {{{1|article or section}}} are exclusively in [[International System of Units|SI]] or non-SI form or need some other form of clean-up.''' | fix = <br /><small>Please help <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article]</span> by [[template:convert|adding alternative units]], preferably from the references cited in the article. ([[{{TALKPAGENAME}}|talk]])</small> | date = {{{date|{{{2|}}}}}} }}<includeonly>{{#ifeq:{{lc:{{{category|}}}}}|no||{{DMCA|{{{category|Articles requiring unit attention}}}}}}}</includeonly><!--{{Unit-attn}} end--> }}<noinclude> {{documentation}} </noinclude> 6kendlqtka1uziuzz203qjt0m1k3n10 Template:Unknown 10 1589 4826 4825 2020-10-11T05:35:28Z Chrisb 1 1 revision imported 4825 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #ececec; color: #2C2C2C; font-size: smaller; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="unknown table-unknown"|{{{1|Unknown}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> hgo832orxm3cczwyq7cqxjr75za0pc2 Template:Unofficial 10 1590 4828 4827 2020-10-11T05:35:28Z Chrisb 1 1 revision imported 4827 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #5FC; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="partial table-partial"|{{{1|Unofficial}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} <!-- interwikis & categories --> </noinclude> eko97rhsgebtq18k0diglih1lzvzj5b Template:Unofficial2 10 1591 4830 4829 2020-10-11T05:35:28Z Chrisb 1 1 revision imported 4829 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #adffe6; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="partial table-partial"|{{{1|Unofficial}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} <!-- interwikis & categories --> </noinclude> l5ob0y5z51qxpr8dcf6qsq2p9fyv41e Template:Unreferenced 10 928 2088 2087 2020-09-29T19:17:24Z Chrisb 1 1 revision imported 2087 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Ambox | name = {{{name|Unreferenced}}} | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | class = ambox-Unreferenced | small = {{{small|}}} | image = [[File:Question book-new.svg|50x40px|alt=]] | issue = This {{{1|article}}} '''does not [[Wikipedia:Citing sources|cite]] any [[Wikipedia:Verifiability|sources]]'''. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this {{{1|article}}}] by [[Help:Referencing for beginners|adding citations to reliable sources]]. Unsourced material may be challenged and [[Wikipedia:Verifiability#Burden of evidence|removed]].{{#if:{{{find|}}}|{{#ifeq: {{{find|}}} |none ||<br /><small>{{find sources mainspace|{{{find}}} }}</small>}}|<br /><small>{{find sources mainspace}}</small>}} | removalnotice = yes | date = {{{date|}}} | cat = Articles {{#ifeq:{{{1}}}|section|needing additional references|lacking sources}} | all = All articles {{#ifeq:{{{1}}}|section|needing additional references|lacking sources}} | all2 = {{#ifeq:{{{status}}}|hasaref|All articles possibly lacking sources}} }} }}<noinclude> {{Documentation}} </noinclude> csr3u9iazfzow56l4qbyosovydf1pis Template:Unreferenced-law 10 1134 2500 2499 2020-09-29T19:17:52Z Chrisb 1 1 revision imported 2499 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!-- {{Unreferenced-law}} begin -->{{Ambox |name = Unreferenced-law | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | text = This [[Wikipedia:WikiProject Law|law-related]] {{{1|article}}} '''does not cite its [[{{SITENAME}}:Citing sources|references or sources]].''' You can [[{{SITENAME}}:WikiProject Fact and Reference Check|help Wikipedia]] by including appropriate citations, which can be found through [[legal research]]. Unsourced or poorly sourced material may be challenged and removed. | cat = Articles {{#ifeq:{{{1}}}|section|needing additional references|lacking sources}} | date = {{{date|}}} | all = All articles {{#ifeq:{{{1}}}|section|needing additional references|lacking sources}} | all2 = Law-related articles lacking sources | removalnotice = yes }}<!-- {{Unreferenced-law}} end --> }}<noinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> g11o8ld5oyjjq6bef1hb0a8mi6ld0lf Template:Unreferenced-medical section 10 1176 2584 2583 2020-09-29T19:17:58Z Chrisb 1 1 revision imported 2583 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{ ambox | name = Unreferenced-medical section | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | imageright = [[File:Rod of Asclepius2.svg|50x40px|]] | issue = This section '''has no [[Wikipedia:Identifying reliable sources (medicine)|medical references]] for [[Wikipedia:Verifiability|verification]] or relies exclusively on non-medical sources{{#if:{{{reason|{{#ifeq:{{{1|}}}|section||{{{1|}}}}}}}}|, specifically: {{{reason|{{{1}}}}}}}}'''. | fix = Please review the contents of the section and [{{SERVER}}{{localurl:{{PAGENAME}}|action=edit}} add the appropriate references] if you can. Unsourced or poorly sourced material may be challenged and [[Wikipedia:Verifiability#Burden of evidence|removed]]. | talk = {{{talk|}}} | small = {{{small|}}} | smalltext = Please add '''[[Wikipedia:Identifying reliable sources (medicine)|medical references]]'''. | smallimageright = [[file:Rod of asclepius.png|10px]] | date = {{{date|}}} | cat = Articles needing additional medical references | all = All articles needing additional references | removalnotice = yes }} }}<noinclude> {{Documentation}} [[Category:Citation and verifiability maintenance templates]] </noinclude> dd4g2dnvo7u2mq2z0j8hmkts8l7frtm Template:Unreferenced section 10 1156 2544 2543 2020-09-29T19:17:55Z Chrisb 1 1 revision imported 2543 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Unreferenced|section|name=Unreferenced section|small={{#if:{{{small|}}}|left}} |subst=<includeonly>{{subst:substcheck}}</includeonly> |find={{#if:{{{find|}}}|{{{find|}}}|none}} |date={{{date|}}} }} }}<noinclude> {{Documentation}} </noinclude> e3mxp6elo5aqnnv52c3iuhdgrhsiwwr Template:Unreferenced small 10 1133 2498 2497 2020-09-29T19:17:52Z Chrisb 1 1 revision imported 2497 wikitext text/x-wiki <!--{{Unreferenced}} begin-->{{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{#if:{{{auto|}}}|[[Category:Articles automatically tagged as unreferenced]]|{{Ambox |name = Unreferenced small | small = left | type = content | smallimage = [[Image:Question book-new.svg|20px|alt=|link=]] | text = This {{{1|article}}} ''' needs [[Wikipedia:Verifiability|references]]'''.<br />{{#if:{{{date|}}}|<small>''({{{date}}})''</small>}} }}}}{{#ifeq:{{{1}}}|section|{{DMCA|Articles needing additional references|from|{{{date|}}}|All articles needing additional references}}|{{DMCA|Articles lacking sources|from|{{{date|}}}|All articles lacking sources}}}}<!--{{Unreferenced}} end--><noinclude> {{Documentation}} </noinclude> h169jorzjv76m0lyxt81mk489cae02l Template:Unreleased 10 1592 4832 4831 2020-10-11T05:35:28Z Chrisb 1 1 revision imported 4831 wikitext text/x-wiki {| class="wikitable" |<onlyinclude>{{n/a|{{{1|Unreleased}}}}}</onlyinclude> |} {{documentation|content={{Table cell templates/doc}}}} [[Category:Unified table cell templates]] e4f2008ygda1ni4t1j4plheccjv17hl Template:Unreliable sources 10 1135 2502 2501 2020-09-29T19:17:52Z Chrisb 1 1 revision imported 2501 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Unreliable sources}} begin-->{{Ambox | name = Unreliable sources | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | small = {{{small|}}} | class = ambox-unreliable_sources | image = [[File:Text document with red question mark.svg|50x40px]] | issue = {{yesno|{{{some|yes}}}|yes=Some|no=Some or all}} of this {{{1|article}}}'s [[Wikipedia:citing sources|listed sources]] '''may not be [[Wikipedia:Reliable sources|reliable]]'''. {{#ifeq:{{{imdb|}}}|yes|It includes attribution to IMDb, which may not be a reliable source for information.}} | fix = Please help this article by looking for better, more reliable sources. Unreliable citations may be challenged or deleted. | date = {{{date|}}} | cat = Articles lacking reliable references | all = All articles lacking reliable references |removalnotice = yes }}<!--{{Unreliable sources}} end--> }}<noinclude>{{Documentation}}</noinclude> 2unnf5v8rze8g2f6a5kaqbeo9gb4b9g Template:Unsorted 10 1136 2504 2503 2020-09-29T19:17:52Z Chrisb 1 1 revision imported 2503 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Unsorted}} begin-->{{Ambox | name = Unsorted | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | text = '''This [[WP:LIST|list]] needs to be [[Wikipedia:LISTS#Organization|organised]]'''.<br /><small>Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this list] by ordering it according to a single criterion. For example alphabetical, numerical or chronological.</small> | date = {{{date|}}} | cat = Wikipedia external links cleanup }}<!--{{Unsorted}} end--> }}<noinclude> {{Documentation}} </noinclude> sp4lae17sslcpu36dqgw5y1s1phxtl7 Template:Update 10 1275 2782 2781 2020-09-29T19:18:12Z Chrisb 1 1 revision imported 2781 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{main other | demospace = {{{demospace|}}} |{{ambox | name = Update | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | class = ambox-Update | image = [[File:{{Ambox globe current red}}|42px|link=]] | issue = {{#if:{{{part|{{{1|}}}}}} |{{#ifeq:{{{part|{{{1|}}}}}}|section |{{#if:{{{inaccurate|}}} |This section's '''[[Wikipedia:Accuracy dispute|factual accuracy]] may be compromised due to out-of-date information''' |This section needs to be '''updated'''}} |{{#if:{{{inaccurate|}}} |The '''[[Wikipedia:Accuracy dispute|factual accuracy]]''' of parts of this article (those related to {{{part|{{{1|}}}}}}) '''may be compromised due to out-of-date information''' |Parts of this article (those related to {{{part|{{{1|}}}}}}) need to be '''updated'''}} }} |{{#if:{{{inaccurate|}}} |This article's '''[[Wikipedia:Accuracy dispute|factual accuracy]] may be compromised due to out-of-date information''' |This article needs to be '''updated'''}} }}. {{#if:{{{reason|}}}|The reason given is: {{{reason}}}.}} | fix = Please update this {{{type|{{SUBJECTSPACE formatted}}}}} to reflect recent events or newly available information. {{#if:{{{2|{{{updated|}}}}}} |<br /><small>Last update: {{{2|{{{updated}}}}}}</small> }} | talk = {{{talk|{{{talksection|{{{discuss|}}}}}}}}} | date = {{{date|}}} | cat = {{#if:{{{inaccurate|}}}|Articles with obsolete information|Wikipedia articles in need of updating}} | all = All Wikipedia articles in need of updating | all2 = {{{cat|}}} }} |{{mbox | name = Update | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | class = ambox-Update | image = [[File:{{Ambox globe current red}}|42px|link=]] | text = {{#if:{{{part|{{{1|}}}}}} |{{#if:{{{inaccurate|}}} |The '''[[Wikipedia:Accuracy dispute|factual accuracy]]''' of parts of this {{{type|{{SUBJECTSPACE formatted}}}}} (those related to {{{part|{{{1|}}}}}}) '''may be compromised due to out-of-date information''' |Parts of this {{{type|{{SUBJECTSPACE formatted}}}}} (those related to {{{part|{{{1|}}}}}}) need to be '''updated'''}} |{{#if:{{{inaccurate|}}} |The '''[[Wikipedia:Accuracy dispute|factual accuracy]]''' of this {{{type|{{SUBJECTSPACE formatted}}}}} '''may be compromised due to out-of-date information''' |This {{{type|{{SUBJECTSPACE formatted}}}}} needs to be '''updated'''}} }}. {{#if:{{{reason|}}}|The reason given is: {{{reason}}}.}} Please update this {{{type|{{SUBJECTSPACE formatted}}}}} to reflect recent events or newly available information. {{#ifexist: {{TALKPAGENAME}} |Relevant discussion may be found on {{#if: {{{talk|{{{talksection|{{{discuss|}}}}}}}}} | [[{{TALKPAGENAME}}#{{{talk|{{{talksection|{{{discuss}}}}}}}}}|the talk page]] | [[{{TALKPAGENAME}}| the talk page]] }}.}} {{#if:{{{date|}}}|<small>''({{{date}}})''</small>}} {{#if:{{{2|{{{updated|}}}}}} |<br /><small>Last update: {{{2|{{{updated}}}}}}</small> }} }} }} }}<noinclude> <!-- Place categories on /doc subpage; interwikis go to Wikidata. --> {{Documentation}} </noinclude> l0m2z8jyr2v01hm5d0sxu4jojlp7mn1 Template:Update-EB 10 1137 2506 2505 2020-09-29T19:17:52Z Chrisb 1 1 revision imported 2505 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Update-EB}} begin-->{{Ambox | name = Update-EB | type = content | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | image = [[File:Ambox outdated content.svg|40px|alt=|link=]] | issue = This {{#if:{{{section|}}}|section|article}} '''is largely based on {{#if:{{{article|}}}|the|an}} article {{#if:{{{article|}}}|'''{{{article}}}'''}} in the out-of-copyright [[Encyclopædia Britannica Eleventh Edition|''Encyclopædia Britannica'' Eleventh Edition]], which was produced in 1911.''' | fix = It should be brought up to date to reflect subsequent history or scholarship (including the references, if any). When you have completed the review, replace this notice with a simple note on this article's talk page. | date = {{{date|}}} | cat = 1911 Britannica articles needing updates }}<!--{{Update-EB}} end--> }}<noinclude> {{Documentation}} </noinclude> nssuzb762zkx7qe1gg9t99p9cuq8pec Template:Used in system 10 880 1992 1991 2020-09-29T19:15:37Z Chrisb 1 1 revision imported 1991 wikitext text/x-wiki {{ombox | type = content | text = '''This {{lcfirst:{{NAMESPACE}}}} is used {{#if:{{{1|}}}|{{{1}}}|in system messages}}.''' <br /> Changes to it can cause immediate changes to the Wikipedia user interface. {{#ifeq:{{NAMESPACENUMBER}}|6||To avoid large-scale disruption, any changes should first be tested in this {{lcfirst:{{NAMESPACE}}}}'s [[{{Sandbox other|{{SUBJECTSPACE}}:{{BASEPAGENAME}}|{{SUBJECTPAGENAME}}}}/sandbox|/sandbox]] or [[{{Sandbox other|{{SUBJECTSPACE}}:{{BASEPAGENAME}}|{{SUBJECTPAGENAME}}}}/testcases|/testcases]] subpage, or in your own [[Wikipedia:Subpages#How to create user subpages|user space]]. The tested changes can then be added in one single edit to this {{lcfirst:{{NAMESPACE}}}}.}} Please discuss any changes {{#if:{{{2|}}}|at [[{{{2}}}]]|on the [[{{Sandbox other|{{TALKSPACE}}:{{BASEPAGENAME}}|{{TALKPAGENAME}}}}|talk page]]}} before implementing them. }}<includeonly>{{Sandbox other||{{#switch:{{#invoke:Effective protection level|{{#switch:{{NAMESPACE}}|File=upload|#default=edit}}|{{FULLPAGENAME}}}}|sysop|templateeditor|interfaceadmin=|#default={{category handler|all=[[Category:Pages used in system messages needing protection]]|nocat={{{nocat|}}}}}}}}}</includeonly><noinclude> {{documentation}}<!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude> rg5imw5md0mskm3m446xur0dtn2xopx Template:User-generated 10 1211 2654 2653 2020-09-29T19:18:03Z Chrisb 1 1 revision imported 2653 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{User-generated}} begin-->{{Ambox | name = User-generated | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | class = ambox-self-published | issue = This {{{1|article}}} '''may contain improper references to [[Wikipedia:Identifying reliable sources#User-generated content|user-generated content]]'''. {{#if:{{{2|}}}|The source in dispute is: {{{2}}}.}} | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve it] by removing references to [[Wikipedia:Identifying reliable sources|unreliable sources]], where they are [[Wikipedia:Verifiability#Self-published sources|used inappropriately]]. | date = {{{date|}}} | removalnotice = yes | cat = Articles lacking reliable references }}<!--{{Self-published}} end--> }}<noinclude> {{Documentation}} </noinclude> i8ztzsm4f137q40e2pl2ymr5z6emj42 Template:Usually 10 1593 4834 4833 2020-10-11T05:35:29Z Chrisb 1 1 revision imported 4833 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #8CF; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="partial table-partial"|{{{1|Usually}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} <!-- interwikis & categories --> </noinclude> pv7w7av985y2m2a0diqrf7l9jux52jv Template:Varies 10 1594 4836 4835 2020-10-11T05:35:29Z Chrisb 1 1 revision imported 4835 wikitext text/x-wiki {| class="wikitable" |- | <onlyinclude>data-sort-value="{{{sort|}}}" style="background: #ececec; color: #2C2C2C; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-na" <!-- -->| {{{1|Varies}}}</onlyinclude> |} {{documentation}} 018nl8zp0j0p9xwfb7pvylt7k23hryu Template:Verbosity 10 1182 2596 2595 2020-09-29T19:17:59Z Chrisb 1 1 revision imported 2595 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{#ifeq:{{NAMESPACE}}|{{<includeonly>subst:</includeonly>NAMESPACE}}|<includeonly>[[Category:Pages with incorrectly substituted templates|{{PAGENAME}}]]</includeonly>|}}{{Ambox | name = Verbosity | type = style | issue = This {{{1|article}}}'s '''text uses more words than are necessary'''. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by using fewer words whilst keeping the content of the article. | date = {{{date|}}} }}{{DMCA|Wikipedia articles with style issues|from|{{{date|}}}|All articles with style issues|Wikipedia articles with style issues by month}} }}<noinclude>{{Documentation}}</noinclude> 6eaz070sgz082xrpgb5szltew0txl65 Template:Verifiability 10 1141 2514 2513 2020-09-29T19:17:53Z Chrisb 1 1 revision imported 2513 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Verifiability}} begin-->{{Ambox | name = Verifiability | image = [[File:Question book-new.svg|50px]] | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | issue = '''The [[WP:V|verifiability]] of the claims made in this article is disputed.''' | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by [[Wikipedia:Verifiability|verifying]] its references and [[Template:Citation needed|removing]] any that are not [[Wikipedia:Reliable sources|reliable]] or do not [[Wikipedia:Verifiability#Burden of evidence|support the article]]. Relevant discussion may be found on the [[:{{NAMESPACE}} talk:{{PAGENAME}}|talk page]]. | date = {{{date|}}} | cat = Articles lacking reliable references | all = All articles lacking reliable references | removalnotice = yes }}<!--{{Verifiability}} end--> }}<noinclude> {{Documentation}} </noinclude> q44y1pmnrwb3s452ftvldk8dvgoqbhx Template:Verify source 10 1459 3222 3221 2020-10-11T01:32:04Z Chrisb 1 1 revision imported 3221 wikitext text/x-wiki {{SAFESUBST:<noinclude />#invoke:Unsubst||date=__DATE__ |$B= <!--{{Verify source}} begin-->{{Fix | link = Wikipedia:Verifiability | text = {{{type|}}} verification needed | title = The material near this tag needs to be fact-checked with the cited source(s). | date = {{{date|}}} | cat = [[Category:All pages needing factual verification]] | cat-date = Category:Wikipedia articles needing factual verification}}<!--{{Verify source}} end--> }}<noinclude> {{Documentation}} </noinclude> dj3ro60r349928uiq6b7sygnxrgm9jt Template:Verify sources 10 1139 2510 2509 2020-09-29T19:17:53Z Chrisb 1 1 revision imported 2509 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Verify sources}} begin-->{{Ambox | name = Verify sources | subst = <includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> | type = content | image = [[File:Question book-new.svg|50x40px]] | issue = An editor has expressed concern that this {{#if:{{{1|}}}|{{{1}}}|article}} '''may have a number of irrelevant [[Wikipedia:Citing sources#Inline citations|citations]]'''. | fix = Please help [{{fullurl:{{FULLPAGENAME}}|action=edit}} improve this article] by [[Wikipedia:Verifiability|verifying]] these references and [[Template:Citation needed|challenge]] any that are not [[Wikipedia:Reliable sources|reliable]] or do not [[Wikipedia:Verifiability#Burden of evidence|support the article]]. | talk = {{{talk|}}} | date = {{{date|}}} | cat = Wikipedia references cleanup | all = All articles needing references cleanup | removalnotice = yes }}<!--{{Verify sources}} end--> }}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --> </noinclude> a5j7uwk9m0b74gyz7dh6loajfyr4le0 Template:Very long 10 1140 2512 2511 2020-09-29T19:17:53Z Chrisb 1 1 revision imported 2511 wikitext text/x-wiki <onlyinclude>{{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Very long}} begin-->{{Ambox | name = {{{name|Very long}}} | subst = <includeonly>{{{subst|{{subst:substcheck}}}}}</includeonly> | type = style | class = ambox-very_long | issue = This {{{1|{{#if:{{NAMESPACE}}|page|article}}}}} '''may be [[Wikipedia:Article size|too long]] to read and navigate comfortably'''. {{#if: {{{rps|}}} | The [[WP:SIZERULE|readable prose size]] is {{{rps}}} kilobytes.}} | fix = {{{fix|Please consider {{#if:{{{nosplit|}}}||[[WP:splitting|splitting]] content into sub-articles,}} [[Wikipedia:Summary style|condensing]] it, or adding [[Help:Section#Subsections|subheadings]].}}} | date = {{{date|}}} | small = {{{small|}}} | smalltext = This section is [[Wikipedia:Article size|too long]]. Consider {{#if:{{{nosplit|}}}||[[WP:splitting|splitting]] it into new pages,}} adding [[Help:Section#Subsections|subheadings]], or [[Wikipedia:Summary style|condensing]] it. | cat = Articles that may be too long }}<!--{{Very long}} end--> }}</onlyinclude> {{Documentation}} <!-- Add categories and interwikis to the /doc subpage, not here! --> 28t5anf1lu1nb54vqazvto41czfqmfg Template:Very long section 10 1143 2518 2517 2020-09-29T19:17:53Z Chrisb 1 1 revision imported 2517 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= {{Very long |name=Very long section |subst=<includeonly>{{subst:</includeonly><includeonly>substcheck}}</includeonly> |1=section |small=left |date={{{date|}}} |nosplit={{{nosplit|}}} }} }}<noinclude> {{Documentation}} </noinclude> 8848tzxubad3ifycbjrnmn7deq8fhis Template:Vietnamese script needed 10 999 2230 2229 2020-09-29T19:17:32Z Chrisb 1 1 revision imported 2229 wikitext text/x-wiki {{Script needed |language = Vietnamese |image = Dbarbowl.svg }} 6r3oxn74qqhizwmd7sotif1hjaby8xo Template:View 10 1305 2842 2841 2020-09-29T19:18:17Z Chrisb 1 1 revision imported 2841 wikitext text/x-wiki {{#invoke:navbar|navbar|plain = 1|template = {{{template|{{{1|}}}}}}}}<noinclude> {{Documentation|Template:Navbar/doc}} </noinclude> 3cdib5yx2npzm141agd4nm089qwwm12 Template:Warning 10 1266 2764 2763 2020-09-29T19:18:11Z Chrisb 1 1 revision imported 2763 wikitext text/x-wiki {{Mbox | name = Warning | demospace = {{{demospace|}}} | style = {{#if:{{{style|}}} |{{#if:{{{small|}}}||width:80%;}} {{{style}}} }} | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | image = {{#if:{{{image|}}}| [[File:{{{image}}}|{{{imagesize|40px}}}|Warning]] }} | small = {{{small|}}} | smallimage = {{#if:{{{image|}}}| [[File:{{{image}}}|30px|Warning]]}} | imageright = {{#if:{{{imageright|}}} |{{{imageright}}} |{{#if:{{{shortcut|{{{shortcut1|}}}}}} |{{Ombox/shortcut|{{{shortcut|{{{shortcut1|}}}}}}|{{{shortcut2|}}}|{{{shortcut3|}}}|{{{shortcut4|}}}|{{{shortcut5|}}}}}}} }} | textstyle = {{{textstyle|text-align: {{#if:{{{center|}}}|center|{{{align|left}}}}};}}} | text = {{#if:{{{header|{{{heading|{{{title|}}}}}}}}} |<div style="{{{headstyle|text-align: {{#if:{{{center|}}}|center|left}};}}}">'''{{{header|{{{heading|{{{title|}}}}}}}}}'''</div>}}<!-- -->{{{text|{{{content|{{{reason|{{{1}}}}}}}}}}}} }}<noinclude> <!-- Add categories to the /doc subpage; interwikis go to Wikidata. --> {{Documentation}} </noinclude> ccd5wh93blf8ugbbitkytz4k94h0llk Template:Warnsign 10 1595 4838 4837 2020-10-11T05:35:29Z Chrisb 1 1 revision imported 4837 wikitext text/x-wiki [[File:Ambox warning pn.svg|20px|link=|alt=⚠]]&nbsp;'''{{{{{|safesubst:}}}ucfirst:{{{1|Warning}}}}}'''<noinclude> {{Documentation}} <!--Please add this template's categories to the /doc subpage, not here - thanks!--> </noinclude> 1pssf1jjsub1k8rvvma596xy33lwgkp Template:Wbr 10 1625 4898 4897 2020-10-11T05:39:04Z Chrisb 1 1 revision imported 4897 wikitext text/x-wiki <wbr />&#8203;<noinclude> {{Documentation}} </noinclude> 038outj03jutckphwb9ai636hounypl Template:Weasel 10 1142 2516 2515 2020-09-29T19:17:53Z Chrisb 1 1 revision imported 2515 wikitext text/x-wiki {{ {{{|safesubst:}}}#invoke:Unsubst||date=__DATE__ |$B= <!--{{Weasel}} begin-->{{Ambox | name = Weasel | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = content | class = ambox-Weasel | issue = This {{{1|article}}} '''contains [[Wikipedia:Manual_of_Style/Words_to_watch#Unsupported_attributions|weasel words]]: vague phrasing that often accompanies [[Wikipedia:Neutral point of view|biased]] or [[Wikipedia:Verifiability|unverifiable]] information'''. | fix = Such statements should be [[Wikipedia:Manual_of_Style/Words_to_watch#Improving_weasel-worded_statements|clarified or removed]]. | date = {{{date|}}} | cat = Articles with weasel words }}<!--{{Weasel}} end--> }}<noinclude> {{Documentation}} </noinclude> fyjs6d8mc1uik4kl61m4fnxgo6yaz6w Template:Wikify 10 1206 2644 2643 2020-09-29T19:18:03Z Chrisb 1 1 revision imported 2643 wikitext text/x-wiki {{Deprecated template|Wikify|note=Please use a more specific cleanup template as listed in [[Template:Wikify#Cleanup templates|the documentation]].|nocat=true}}{{Main other|[[Category:Pages using deprecated templates]]|}} <noinclude> {{documentation|content= '''Former appearance of this template:'''{{ambox | name = Wikify | subst = <includeonly>{{subst:substcheck}}</includeonly> | type = style | class = ambox-Wikify | image = [[File:Ambox wikify.svg|50x40px|link=|alt=]] | issue = This {{{1|article}}} '''may need to be [[Wikipedia:Glossary#Wikify|wikified]] to meet Wikipedia's [[Wikipedia:Manual of Style|quality standards]]'''. | fix = Please [{{fullurl:{{FULLPAGENAME}}|action=edit}} help] by adding [[Wikipedia:Linking|''relevant'' internal links]], or by improving the article's [[Wikipedia:Layout|layout]]. | date = {{{date|}}} | info = {{{reason|}}} }} == Cleanup templates == *{{tl|MOS}} *{{tl|underlinked}} *{{tl|overlinked}} *{{tl|dead end}} *{{tl|cleanup HTML}} *{{tl|cleanup bare URLs}} *{{tl|format footnotes}} *{{tl|citation style}} *{{tl|sections}} *{{tl|lead missing}} *{{tl|lead too short}} *{{tl|lead too long}} *{{tl|inadequate lead}} *{{tl|lead rewrite}} *{{tl|infobox requested}} (only on talk pages) == Notes == *The '''Wikify section''' template is also deprecated and redirects here. *A full list of cleanup templates can be found at [[WP:Template messages/Cleanup]]. == See also == * [[Wikipedia:WikiProject Wikify]] * [[Wikipedia:Templates for discussion/Log/2012 August 10#Template:Wikify]] [[Category:Deprecated templates kept for historical reasons]] [[Category:Template disambiguation pages]] }}</noinclude> sulkcpua81xpwz0y1bo8r12t1ikodv0 Template:WinDL 10 1596 4840 4839 2020-10-11T05:35:29Z Chrisb 1 1 revision imported 4839 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: {{ #switch: {{lc:{{{res|WinDL}}}}} |windl = {{{color|<nowiki>#</nowiki>CCFFCC}}} |draw|d|D = {{{color|<nowiki>#</nowiki>FFFFCC}}} |loss|l|L = {{{color|<nowiki>#</nowiki>FFCCCC}}} |#default = {{{color|<nowiki>#</nowiki>F8EABA}}} }}; color: {{{text|black}}}; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="yes table-yes2"|{{{1|{{{res|W}}}}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> 4848ggvbvyfokk0su7411apsk7tof9p Template:Won 10 1597 4842 4841 2020-10-11T05:35:30Z Chrisb 1 1 revision imported 4841 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: {{ #switch: {{lc:{{{place|Won}}}}} |won = {{{color|<nowiki>#</nowiki>99FF99}}} |1|1st|gold = {{{color|gold}}} |2|2nd|silver = {{{color|silver}}} |3|3rd|bronze = {{{color|<nowiki>#</nowiki>D9A821}}} |#default = {{{color|<nowiki>#</nowiki>F8EABA}}} }}; color: {{{text|black}}}; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="yes table-yes2"|{{{1|{{{place|Won}}}}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} </noinclude> 9oz068i12jhncy5pfpfk1lv7lby9foj Template:WrongTitleExamples 10 1658 4964 4963 2020-10-11T05:50:42Z Chrisb 1 1 revision imported 4963 wikitext text/x-wiki #REDIRECT [[Template:Correct title examples]] h6ndodlf2z8h2quxxhks45cyh1on3j3 Template:Xtag 10 1626 4900 4899 2020-10-11T05:39:04Z Chrisb 1 1 revision imported 4899 wikitext text/x-wiki <code class="nowrap">{{#switch:{{{2|pair}}} |c|close = <!--nothing--> |s|single |o|open |p|pair = &lt;{{#switch:{{{1|}}} |categorytree=[[mw:Extension:CategoryTree|categorytree]] |charinsert=[[mw:Extension:CharInsert|charinsert]] |ce=[[Help:Displaying a formula#Chemistry|ce]] |chem=[[Help:Displaying a formula#Chemistry|chem]] |gallery=[[Help:Gallery tag|gallery]] |graph=[[Help:Graph|graph]] |hiero=[[mw:Extension:WikiHiero|hiero]] |includeonly=[[Help:Template#Noinclude, includeonly, and onlyinclude|includeonly]] |indicator=[[mw:Help:Page status indicators|indicator]] |imagemap=[[mw:Extension:ImageMap|imagemap]] |inputbox=[[mw:Extension:InputBox|inputbox]] |mapframe=[[mw:Extension:Kartographer|mapframe]] |maplink=[[mw:Extension:Kartographer#<maplink>|maplink]] |math=[[mw:Extension:Math|math]] |math chem=[[Help:Displaying a formula#Chemistry|math chem]] |noinclude=[[Help:Template#Noinclude, includeonly, and onlyinclude|noinclude]] |nowiki=[[Help:Nowiki|nowiki]] |onlyinclude=[[Help:Template#Noinclude, includeonly, and onlyinclude|onlyinclude]] |poem=[[mw:Extension:Poem|poem]] |pre=[[WP:PRE|pre]] |ref=[[mw:Extension:Cite/Cite.php|ref]] |references=[[mw:Extension:Cite/Cite.php|references]] |score=[[Help:Score|score]] |section=[[mw:Extension:Labeled Section Transclusion|section]] |source=[[mw:Extension:SyntaxHighlight|source]] |syntaxhighlight=[[mw:Extension:SyntaxHighlight|syntaxhighlight]] |templatedata=[[Wikipedia:TemplateData/Tutorial|templatedata]] |templatestyles=[[mw:Extension:TemplateStyles|templatestyles]] |timeline=[[mw:Extension:EasyTimeline|timeline]] |#default={{{1|}}}[[Category:Pages using xtag template with unsupported tag name]] }}{{#if:{{{params|}}}|&#32;{{{params}}}}} }}{{#switch:{{{2|open}}} |c|close = {{{content|}}} |s|single = &#32;/&gt; |o|open = &gt;{{{content|}}} |p|pair = &gt;{{{content|...}}} }}{{#switch:{{{2|open}}} |s|single |o|open = <!--nothing--> |c|close |p|pair = &lt;/{{{1|tag}}}&gt; }}</code><noinclude> {{documentation}} </noinclude> 4la5a5vxsl3ky1njkzhvnecnlvco3m8 Template:Ya 10 1491 4630 4629 2020-10-11T05:35:15Z Chrisb 1 1 revision imported 4629 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>data-sort-value="{{{sort|Yes}}}" style="background: {{{color|#D2FFD2}}}; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="table-yes2" {{#if:{{{rowspan|}}}|rowspan="{{{rowspan}}}"}} |{{{text|[[File:Green check.svg|13px|link={{{link|}}}|{{{1|Yes}}}]]}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} [[Category:Checkmark insertion templates]] </noinclude> ixn188e0v57o0f7tdcnodmm2soypsyr Template:Yes 10 1598 4844 4843 2020-10-11T05:35:30Z Chrisb 1 1 revision imported 4843 wikitext text/x-wiki <noinclude> {| class="wikitable" |- |</noinclude>style="background:#9F9;vertical-align:middle;text-align:{{{align|center}}};{{{style|}}}" class="table-yes"|{{{1|Yes}}}<noinclude> |} {{documentation}} </noinclude> tac11s4bgfdohg6hu289wiklat0xbk7 Template:Yes-No 10 1599 4846 4845 2020-10-11T05:35:30Z Chrisb 1 1 revision imported 4845 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background: #FFD; color: black; vertical-align: middle; text-align: {{{align|center}}}; {{{style|}}}" class="partial table-partial"|{{{1|Yes/No}}}<noinclude> |} {{Documentation|Template:Table cell templates/doc}} <!-- interwikis & categories --> </noinclude> 6jfz2rjw6it0y5bw3a0k6229za610hi Template:Yes2 10 1600 4848 4847 2020-10-11T05:35:30Z Chrisb 1 1 revision imported 4847 wikitext text/x-wiki <noinclude>{| class="wikitable" |- |</noinclude>style="background:#bfd; color:black; vertical-align:middle; text-align:{{{align|center}}}; {{{style|}}}" class="table-yes2" |{{{1|}}}<noinclude> |} {{documentation}} </noinclude> g8ru5wexcbkah1ii8j2dbutxe5g3wjx Template:Yes C 10 1601 4850 4849 2020-10-11T05:35:30Z Chrisb 1 1 revision imported 4849 wikitext text/x-wiki <noinclude> {| class="wikitable" |- |</noinclude>style="background:#9F9;vertical-align:middle;text-align:{{{align|center}}};{{{style|}}}" class="table-yes"|[[File:Green check.svg|13px|link=|]] {{{1|Yes}}}<noinclude> |}{{Documentation|Template:Table cell templates/doc}} </noinclude> es5h760x177ineymfhu38q1f8e948h7 Template:Yes O 10 1602 4852 4851 2020-10-11T05:35:31Z Chrisb 1 1 revision imported 4851 wikitext text/x-wiki <noinclude> {| class="wikitable" |- |</noinclude>style="background:#9F9;vertical-align:middle;text-align:{{{align|center}}};{{{style|}}}" class="table-yes"|[[File:Symbol confirmed.svg|18px|link=|]] {{{1|Yes}}}<noinclude> |}{{Documentation|Template:Table cell templates/doc}} </noinclude> 3mc3hfb9zpflzps4ractpama7tawfy0 Template:Yesno 10 1482 3268 3267 2020-10-11T01:41:31Z Chrisb 1 1 revision imported 3267 wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#switch: {{<includeonly>safesubst:</includeonly>lc: {{{1|¬}}} }} |no |n |f |false |off |0 = {{{no|<!-- null -->}}} | = {{{blank|{{{no|<!-- null -->}}}}}} |¬ = {{{¬|}}} |yes |y |t |true |on |1 = {{{yes|yes}}} |#default = {{{def|{{{yes|yes}}}}}} }}<noinclude> {{Documentation}} </noinclude> bioaq6x8oitfnx7oqmfhviol4hbp1nd Template:Yesno-no 10 1483 3270 3269 2020-10-11T01:41:31Z Chrisb 1 1 revision imported 3269 wikitext text/x-wiki {{safesubst:<noinclude />yesno|{{{1}}}|yes={{{yes|yes}}}|no={{{no|no}}}|blank={{{blank|no}}}|¬={{{¬|no}}}|def={{{def|no}}}}}<noinclude> {{Documentation|Template:Yesno/doc}} <!--Categories go in the doc page referenced above; interwikis go in Wikidata.--> </noinclude> 34vmtxa9ubuh1vz2ulp78m5ela68riu Template:Yiddish script needed 10 1065 2362 2361 2020-09-29T19:17:42Z Chrisb 1 1 revision imported 2361 wikitext text/x-wiki {{Script needed |language = Yiddish |image = Jidysz.png }} 645z7klm15nt2rqo0mskw7gfzyk5rf4 Category:Annotation 14 1766 5246 2020-11-22T00:20:45Z Chrisb 1 Page was autogenerated by Semantic Image Annotator Extension. 5246 wikitext text/x-wiki This is the Annotation category used by the Annotator Tools. mfr0e611106pnz3girzwe7sqyhk8awv Category:Article message templates with missing parameters 14 1146 2524 2523 2020-09-29T19:17:53Z Chrisb 1 1 revision imported 2523 wikitext text/x-wiki {{template category}} {{Category used by module|[[Module:Message box/configuration]]}} {{Wikipedia category|tracking=y}} [[Category:Article message templates]] {{CatAutoTOC}} 8xwkcicfp31atz44lfpaabms4yecyld Category:Game Consoles 14 2105 6324 6323 2022-01-08T05:17:36Z Alpha Bravo Tech. 538 6324 wikitext text/x-wiki Game Consoles. This page is dedicated game console repair. tmbxcnpd5vr1wiu80bbvzcc1rz2rk2q Category:ImageAnnotation 14 1767 5247 2020-11-22T00:20:45Z Chrisb 1 Page was autogenerated by Semantic Image Annotator Extension. 5247 wikitext text/x-wiki This is the ImageAnnotation category used by Semantic Image Annotator. [[Category:Annotation]] tja6mopk5446qo6d3zni6btrhf1fawn Category:Mac 14 193 603 600 2020-02-02T15:07:25Z Chrisb 1 603 wikitext text/x-wiki <br /> 7egt9rvm0oxpiin85je6tdx61r5zj6q Category:MacBook 14 194 602 601 2020-02-02T15:06:40Z Chrisb 1 602 wikitext text/x-wiki [[Category:Mac]] <br /> qeik6dzqx6tf5eg35obarlyohzjmen6 Category:MacBook Air 14 195 6949 6948 2023-09-29T16:26:51Z Cndarch5 1026 6949 wikitext text/x-wiki [[Category:MacBook]] 7wp7sovrkdm4qbl3nv18fz8t5qdq9x6 Category:MacBook Pro 14 196 540 2020-02-02T11:20:23Z Piernov 10 Category:MacBook Pro 540 wikitext text/x-wiki [[Category:MacBook]] 7wp7sovrkdm4qbl3nv18fz8t5qdq9x6 Category:Mac mini 14 1345 2958 2020-10-04T20:15:01Z Chrisb 1 Created page with "[[Category:Mac]]" 2958 wikitext text/x-wiki [[Category:Mac]] 5cympk57no9mhgvdzq2hlcee8fsg2ac Category:PowerPC 14 198 594 547 2020-02-02T11:41:23Z Piernov 10 Category Mac 594 wikitext text/x-wiki [[Category:Mac]] 5cympk57no9mhgvdzq2hlcee8fsg2ac Category:Resources 14 199 573 2020-02-02T11:34:40Z Piernov 10 Category:Resources 573 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 Category:Troubleshooting Guide 14 60 101 99 2019-11-10T17:14:04Z Chrisb 1 Chrisb moved page [[Category:Troubleshooting]] to [[Category:Troubleshooting Guide]] without leaving a redirect 99 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 Category:iMac 14 813 1748 2020-09-14T16:44:09Z Chrisb 1 Created page with "[[Category:Mac]]" 1748 wikitext text/x-wiki [[Category:Mac]] 5cympk57no9mhgvdzq2hlcee8fsg2ac Category:iPad 14 200 583 2020-02-02T11:37:57Z Piernov 10 Category:iPhone 583 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 Category:iPhone 14 197 7101 776 2024-05-04T19:27:53Z Shoppingbusiness40 1134 added addition sub category 7101 wikitext text/x-wiki IPhone schematic Lines and their functions 1sibki1p5p8zcsbviwg8vo24eadbwp4 Category:iPhone 11 14 801 1712 2020-09-13T23:01:39Z Eden 191 Created page with "[[Category:iPhone]]" 1712 wikitext text/x-wiki [[Category:iPhone]] 5rkuml38rlgy2cfisk56ua9r2azssh0 Category:iPhone 11 Pro 14 802 1713 2020-09-13T23:01:45Z Eden 191 Created page with "[[Category:iPhone]]" 1713 wikitext text/x-wiki [[Category:iPhone]] 5rkuml38rlgy2cfisk56ua9r2azssh0 Category:iPhone 11 Pro Max 14 803 1714 2020-09-13T23:01:55Z Eden 191 Created page with "[[Category:iPhone]]" 1714 wikitext text/x-wiki [[Category:iPhone]] 5rkuml38rlgy2cfisk56ua9r2azssh0 Category:iPhone 12 14 804 1715 2020-09-13T23:02:02Z Eden 191 Created page with "[[Category:iPhone]]" 1715 wikitext text/x-wiki [[Category:iPhone]] 5rkuml38rlgy2cfisk56ua9r2azssh0 Category:iPhone 12 Max 14 805 1716 2020-09-13T23:02:10Z Eden 191 Created page with "[[Category:iPhone]]" 1716 wikitext text/x-wiki [[Category:iPhone]] 5rkuml38rlgy2cfisk56ua9r2azssh0 Category:iPhone 12 Pro 14 806 1717 2020-09-13T23:02:23Z Eden 191 Created page with "[[Category:iPhone]]" 1717 wikitext text/x-wiki [[Category:iPhone]] 5rkuml38rlgy2cfisk56ua9r2azssh0 Category:iPhone 12 Pro Max 14 807 1718 2020-09-13T23:02:30Z Eden 191 Created page with "[[Category:iPhone]]" 1718 wikitext text/x-wiki [[Category:iPhone]] 5rkuml38rlgy2cfisk56ua9r2azssh0 Category:iPhone 5 14 787 1768 1766 2020-09-20T18:05:41Z Eden 191 1768 wikitext text/x-wiki [[Category:iPhone | 1]] p1ybs0dhrahm918dtnyu6w8d1o81a65 Category:iPhone 5c 14 788 1767 1699 2020-09-20T18:04:52Z Eden 191 1767 wikitext text/x-wiki [[Category:iPhone | 2]] bdhgqvfomzvvea47qc7z5fib3zogj8w Category:iPhone 5s 14 789 1769 1700 2020-09-20T18:06:06Z Eden 191 1769 wikitext text/x-wiki [[Category:iPhone | 3]] o7fsfwcqya0wofoc9lztae4l7x0y4l9 Category:iPhone 6 14 790 1770 1701 2020-09-20T18:06:24Z Eden 191 1770 wikitext text/x-wiki [[Category:iPhone | 4]] oiqcu26bwioe1vd4xjtx9ngmngrkxsl Category:iPhone 6+ 14 791 1772 1771 2020-09-20T18:07:00Z Eden 191 1772 wikitext text/x-wiki [[Category:iPhone | 5]] 9607hzufboo5to9e9sosivs60hkv3o2 Category:iPhone 6s 14 792 1773 1703 2020-09-20T18:07:26Z Eden 191 1773 wikitext text/x-wiki [[Category:iPhone | 6]] jrran4q263mpwgva50ibza6960qywhq Category:iPhone 6s+ 14 793 1774 1704 2020-09-20T18:07:40Z Eden 191 1774 wikitext text/x-wiki [[Category:iPhone | 7]] 8v98cgrbvwjbq9box2rwo2qjv8f04rz Category:iPhone 7 14 794 1775 1705 2020-09-20T18:08:06Z Eden 191 1775 wikitext text/x-wiki [[Category:iPhone | 8]] l8gg8fn3t92tex0h3b60ee1c10u9h6f Category:iPhone 7+ 14 795 1776 1706 2020-09-20T18:08:29Z Eden 191 1776 wikitext text/x-wiki [[Category:iPhone | 9]] s9vk5bllgib8lhiepw7dajq7h46024q Category:iPhone 8 14 786 1781 1777 2020-09-20T18:10:43Z Eden 191 1781 wikitext text/x-wiki [[Category:iPhone | A1]] fv9smhlqka19m3720cezs7c3u3tjdok Category:iPhone 8+ 14 796 1782 1778 2020-09-20T18:11:02Z Eden 191 1782 wikitext text/x-wiki [[Category:iPhone | A2]] nkgole57u8km9h2yorfsuojwximiewh Category:iPhone SE 14 809 1783 1779 2020-09-20T18:11:14Z Eden 191 1783 wikitext text/x-wiki [[Category:iPhone | A3]] g99iywgca5aux9grlgqxdof2nlnhhd5 Category:iPhone SE (2020) 14 808 1784 1780 2020-09-20T18:11:26Z Eden 191 1784 wikitext text/x-wiki [[Category:iPhone | A4]] pd15gsylsnv5ndyzxzk0d825edm5n4s Category:iPhone X 14 797 1785 1765 2020-09-20T18:11:50Z Eden 191 1785 wikitext text/x-wiki [[Category:iPhone | A5]] ol9sj7vsjq9y4vwur4qrtbiqk7gdqfa Category:iPhone XR 14 798 1786 1709 2020-09-20T18:12:07Z Eden 191 1786 wikitext text/x-wiki [[Category:iPhone | A6]] 4vljx8miwosmku63al178eceemb9yif Category:iPhone XS 14 799 1787 1710 2020-09-20T18:12:21Z Eden 191 1787 wikitext text/x-wiki [[Category:iPhone | A7]] 1d78qhda1wlzaeicxqetaw91mmdrdz6 Category:iPhone XS Max 14 800 1788 1711 2020-09-20T18:12:38Z Eden 191 1788 wikitext text/x-wiki [[Category:iPhone | A8]] a690kqjnosui5oczakbehnpwe06gxtp Category talk:Mac 15 2031 6217 6048 2021-11-12T02:10:37Z Alan.l 19 /* 820-3437-B multiple sensor issues */ 6217 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 Category talk:Mac mini 15 1876 5550 5539 2021-02-07T17:46:29Z Chrisb 1 5550 wikitext text/x-wiki '''Mac Mini 2011 Common issue.''' '''Quarter Fan spin.''' ''No water damage.'' In most cases a quarter fan spin on in this year is a corrupted EFI chip. You will need to dump the proper bios of the year and model into the Mac Mini. De-Soldering the original Bios chip and reprogramming it will help resolve the issue. MOVED TO [[A1347 2010-2012 common issues]] m84sky3kufktpao7iidicz545xx8frv Module:About 828 1637 4922 4921 2020-10-11T05:50:33Z Chrisb 1 1 revision imported 4921 Scribunto text/plain local mArguments --initialize lazily local mHatnote = require('Module:Hatnote') local mHatList = require('Module:Hatnote list') local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local p = {} function p.about (frame) -- A passthrough that gets args from the frame and all mArguments = require('Module:Arguments') args = mArguments.getArgs(frame) return p._about(args) end function p._about (args, options) -- Produces "about" hatnote. -- Type checks and defaults checkType('_about', 1, args, 'table', true) args = args or {} checkType('_about', 2, options, 'table', true) options = options or {} local defaultOptions = { aboutForm = 'This %s is about %s. ', PageType = require('Module:Pagetype').main(), otherText = nil, --included for complete list sectionString = 'section' } for k, v in pairs(defaultOptions) do if options[k] == nil then options[k] = v end end -- Set initial "about" string local pageType = (args.section and options.sectionString) or options.PageType local about = '' if args[1] then about = string.format(options.aboutForm, pageType, args[1]) end --Allow passing through certain options local fsOptions = { otherText = options.otherText, extratext = args.text } local hnOptions = { selfref = args.selfref } -- Set for-see list local forSee = mHatList._forSee(args, 2, fsOptions) -- Concatenate and return return mHatnote._hatnote(about .. forSee, hnOptions) end return p 34eqkrvgvpb6coyf5mc8amjmasfegyy Module:Aligned table 828 1650 4948 4947 2020-10-11T05:50:40Z Chrisb 1 1 revision imported 4947 Scribunto text/plain -- This module implements {{aligned table}} local p = {} local function isnotempty(s) return s and s:match( '^%s*(.-)%s*$' ) ~= '' end function p.table(frame) local args = (frame.args[3] ~= nil) and frame.args or frame:getParent().args local entries = {} local colclass = {} local colstyle = {} local cols = tonumber(args['cols']) or 2 -- create the root table local root = mw.html.create('table') -- add table style for fullwidth if isnotempty(args['fullwidth']) then root :css('width', '100%') :css('border-collapse', 'collapse') :css('border-spacing', '0px 0px') :css('border', 'none') end -- add table classes if isnotempty(args['class']) then root:addClass(args['class']) end -- add table style if isnotempty(args['style']) then root:cssText(args['style']) end -- build arrays with the column styles and classes if isnotempty(args['leftright']) then colstyle[1] = 'text-align:left;' colstyle[2] = 'text-align:right;' end if isnotempty(args['rightleft']) then colstyle[1] = 'text-align:right;' colstyle[2] = 'text-align:left;' end for i = 1,cols do colclass[ i ] = colclass[ i ] or '' colstyle[ i ] = colstyle[ i ] or '' if isnotempty(args['colstyle']) then colstyle[ i ] = args['colstyle'] .. ';' .. colstyle[ i ] end if isnotempty(args['colalign' .. tostring(i)]) then colstyle[ i ] = 'text-align:' .. args['colalign' .. tostring(i)] .. ';' .. colstyle[ i ] elseif isnotempty(args['col' .. tostring(i) .. 'align']) then colstyle[ i ] = 'text-align:' .. args['col' .. tostring(i) .. 'align'] .. ';' .. colstyle[ i ] elseif isnotempty(args['align' .. tostring(i)]) then colstyle[ i ] = 'text-align:' .. args['align' .. tostring(i)] .. ';' .. colstyle[ i ] end if isnotempty(args['colnowrap' .. tostring(i)]) then colstyle[ i ] = 'white-space:nowrap;' .. colstyle[ i ] elseif isnotempty(args['col' .. tostring(i) .. 'nowrap']) then colstyle[ i ] = 'white-space:nowrap;' .. colstyle[ i ] elseif isnotempty(args['nowrap' .. tostring(i)]) then colstyle[ i ] = 'white-space:nowrap;' .. colstyle[ i ] end if isnotempty(args['colwidth' .. tostring(i)]) then colstyle[ i ] = 'width:' .. args['colwidth' .. tostring(i)] .. ';' .. colstyle[ i ] elseif isnotempty(args['col' .. tostring(i) .. 'width']) then colstyle[ i ] = 'width:' .. args['col' .. tostring(i) .. 'width'] .. ';' .. colstyle[ i ] elseif isnotempty(args['colwidth']) then colstyle[ i ] = 'width:' .. args['colwidth'] .. ';' .. colstyle[ i ] end if isnotempty(args['colstyle' .. tostring(i)]) then colstyle[ i ] = colstyle[ i ] .. args['colstyle' .. tostring(i)] elseif isnotempty(args['col' .. tostring(i) .. 'style']) then colstyle[ i ] = colstyle[ i ] .. args['col' .. tostring(i) .. 'style'] elseif isnotempty(args['style' .. tostring(i)]) then colstyle[ i ] = colstyle[ i ] .. args['style' .. tostring(i)] end if isnotempty(args['colclass' .. tostring(i)]) then colclass[ i ] = args['colclass' .. tostring(i)] elseif isnotempty(args['col' .. tostring(i) .. 'class']) then colclass[ i ] = args['col' .. tostring(i) .. 'class'] elseif isnotempty(args['class' .. tostring(i)]) then colclass[ i ] = args['class' .. tostring(i)] end end -- compute the maximum cell index local cellcount = 0 for k, v in pairs( args ) do if type( k ) == 'number' then cellcount = math.max(cellcount, k) end end -- compute the number of rows local rows = math.ceil(cellcount / cols) -- build the table content if isnotempty(args['title']) then local caption = root:tag('caption') caption:cssText(args['titlestyle']) caption:wikitext(args['title']) end if isnotempty(args['above']) then local row = root:tag('tr') local cell = row:tag('th') cell:attr('colspan', cols) cell:cssText(args['abovestyle']) cell:wikitext(args['above']) end for j=1,rows do -- start a new row local row = root:tag('tr') if isnotempty(args['rowstyle']) then row:cssText(args['rowstyle']) else row:css('vertical-align', 'top') end -- loop over the cells in the row for i=1,cols do local cell if isnotempty(args['row' .. tostring(j) .. 'header']) then cell = row:tag('th'):attr('scope','col') elseif isnotempty(args['col' .. tostring(i) .. 'header']) then cell = row:tag('th'):attr('scope','row') else cell = row:tag('td') end if args['class' .. tostring(j) .. '.' .. tostring(i)] then cell:addClass(args['class' .. tostring(j) .. '.' .. tostring(i)]) else if args['rowclass' .. tostring(j)] then cell:addClass(args['rowclass' .. tostring(j)]) elseif args['row' .. tostring(j) .. 'class'] then cell:addClass(args['row' .. tostring(j) .. 'class']) elseif args['rowevenclass'] and math.fmod(j,2) == 0 then cell:addClass(args['rowevenclass']) elseif args['rowoddclass'] and math.fmod(j,2) == 1 then cell:addClass(args['rowoddclass']) end if colclass[i] ~= '' then cell:addClass(colclass[i]) end end if args['style' .. tostring(j) .. '.' .. tostring(i)] then cell:cssText(args['style' .. tostring(j) .. '.' .. tostring(i)]) else if args['rowstyle' .. tostring(j)] then cell:cssText(args['rowstyle' .. tostring(j)]) elseif args['rowevenstyle'] and math.fmod(j,2) == 0 then cell:cssText(args['rowevenstyle']) elseif args['rowoddstyle'] and math.fmod(j,2) == 1 then cell:cssText(args['rowoddstyle']) elseif args['row' .. tostring(j) .. 'style'] then cell:cssText(args['row' .. tostring(j) .. 'style']) end if isnotempty(colstyle[i]) then cell:cssText(colstyle[i]) end end cell:wikitext(mw.ustring.gsub(args[cols*(j - 1) + i] or '', '^(.-)%s*$', '%1') or '') end end -- return the root table return tostring(root) end return p lkoars5bco6x4lfsuz77evrgpgjjg0r Module:Anchor 828 1306 2844 2843 2020-09-29T19:18:17Z Chrisb 1 1 revision imported 2843 Scribunto text/plain -- This module implements {{anchor}}. local getArgs = require('Module:Arguments').getArgs local tableTools = require('Module:TableTools') local p = {} function p.main(frame) -- Get the positional arguments from #invoke, remove any nil values, -- and pass them to p._main. local args = getArgs(frame) local argArray = tableTools.compressSparseArray(args) return p._main(unpack(argArray)) end function p._main(...) -- Generate the list of anchors. local anchors = {...} local ret = {} for _, anchor in ipairs(anchors) do ret[#ret + 1] = '<span class="anchor" id="' .. anchor .. '"></span>' end return table.concat(ret) end return p qn9l8z10vmc8ghld7804a9aaffg6g8o Module:Arguments 828 881 1994 1993 2020-09-29T19:15:37Z Chrisb 1 1 revision imported 1993 Scribunto text/plain -- This module provides easy processing of arguments passed to Scribunto from -- #invoke. It is intended for use by other Lua modules, and should not be -- called from #invoke directly. local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local arguments = {} -- Generate four different tidyVal functions, so that we don't have to check the -- options every time we call it. local function tidyValDefault(key, val) if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val == '' then return nil else return val end else return val end end local function tidyValTrimOnly(key, val) if type(val) == 'string' then return val:match('^%s*(.-)%s*$') else return val end end local function tidyValRemoveBlanksOnly(key, val) if type(val) == 'string' then if val:find('%S') then return val else return nil end else return val end end local function tidyValNoChange(key, val) return val end local function matchesTitle(given, title) local tp = type( given ) return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title end local translate_mt = { __index = function(t, k) return k end } function arguments.getArgs(frame, options) checkType('getArgs', 1, frame, 'table', true) checkType('getArgs', 2, options, 'table', true) frame = frame or {} options = options or {} --[[ -- Set up argument translation. --]] options.translate = options.translate or {} if getmetatable(options.translate) == nil then setmetatable(options.translate, translate_mt) end if options.backtranslate == nil then options.backtranslate = {} for k,v in pairs(options.translate) do options.backtranslate[v] = k end end if options.backtranslate and getmetatable(options.backtranslate) == nil then setmetatable(options.backtranslate, { __index = function(t, k) if options.translate[k] ~= k then return nil else return k end end }) end --[[ -- Get the argument tables. If we were passed a valid frame object, get the -- frame arguments (fargs) and the parent frame arguments (pargs), depending -- on the options set and on the parent frame's availability. If we weren't -- passed a valid frame object, we are being called from another Lua module -- or from the debug console, so assume that we were passed a table of args -- directly, and assign it to a new variable (luaArgs). --]] local fargs, pargs, luaArgs if type(frame.args) == 'table' and type(frame.getParent) == 'function' then if options.wrappers then --[[ -- The wrappers option makes Module:Arguments look up arguments in -- either the frame argument table or the parent argument table, but -- not both. This means that users can use either the #invoke syntax -- or a wrapper template without the loss of performance associated -- with looking arguments up in both the frame and the parent frame. -- Module:Arguments will look up arguments in the parent frame -- if it finds the parent frame's title in options.wrapper; -- otherwise it will look up arguments in the frame object passed -- to getArgs. --]] local parent = frame:getParent() if not parent then fargs = frame.args else local title = parent:getTitle():gsub('/sandbox$', '') local found = false if matchesTitle(options.wrappers, title) then found = true elseif type(options.wrappers) == 'table' then for _,v in pairs(options.wrappers) do if matchesTitle(v, title) then found = true break end end end -- We test for false specifically here so that nil (the default) acts like true. if found or options.frameOnly == false then pargs = parent.args end if not found or options.parentOnly == false then fargs = frame.args end end else -- options.wrapper isn't set, so check the other options. if not options.parentOnly then fargs = frame.args end if not options.frameOnly then local parent = frame:getParent() pargs = parent and parent.args or nil end end if options.parentFirst then fargs, pargs = pargs, fargs end else luaArgs = frame end -- Set the order of precedence of the argument tables. If the variables are -- nil, nothing will be added to the table, which is how we avoid clashes -- between the frame/parent args and the Lua args. local argTables = {fargs} argTables[#argTables + 1] = pargs argTables[#argTables + 1] = luaArgs --[[ -- Generate the tidyVal function. If it has been specified by the user, we -- use that; if not, we choose one of four functions depending on the -- options chosen. This is so that we don't have to call the options table -- every time the function is called. --]] local tidyVal = options.valueFunc if tidyVal then if type(tidyVal) ~= 'function' then error( "bad value assigned to option 'valueFunc'" .. '(function expected, got ' .. type(tidyVal) .. ')', 2 ) end elseif options.trim ~= false then if options.removeBlanks ~= false then tidyVal = tidyValDefault else tidyVal = tidyValTrimOnly end else if options.removeBlanks ~= false then tidyVal = tidyValRemoveBlanksOnly else tidyVal = tidyValNoChange end end --[[ -- Set up the args, metaArgs and nilArgs tables. args will be the one -- accessed from functions, and metaArgs will hold the actual arguments. Nil -- arguments are memoized in nilArgs, and the metatable connects all of them -- together. --]] local args, metaArgs, nilArgs, metatable = {}, {}, {}, {} setmetatable(args, metatable) local function mergeArgs(tables) --[[ -- Accepts multiple tables as input and merges their keys and values -- into one table. If a value is already present it is not overwritten; -- tables listed earlier have precedence. We are also memoizing nil -- values, which can be overwritten if they are 's' (soft). --]] for _, t in ipairs(tables) do for key, val in pairs(t) do if metaArgs[key] == nil and nilArgs[key] ~= 'h' then local tidiedVal = tidyVal(key, val) if tidiedVal == nil then nilArgs[key] = 's' else metaArgs[key] = tidiedVal end end end end end --[[ -- Define metatable behaviour. Arguments are memoized in the metaArgs table, -- and are only fetched from the argument tables once. Fetching arguments -- from the argument tables is the most resource-intensive step in this -- module, so we try and avoid it where possible. For this reason, nil -- arguments are also memoized, in the nilArgs table. Also, we keep a record -- in the metatable of when pairs and ipairs have been called, so we do not -- run pairs and ipairs on the argument tables more than once. We also do -- not run ipairs on fargs and pargs if pairs has already been run, as all -- the arguments will already have been copied over. --]] metatable.__index = function (t, key) --[[ -- Fetches an argument when the args table is indexed. First we check -- to see if the value is memoized, and if not we try and fetch it from -- the argument tables. When we check memoization, we need to check -- metaArgs before nilArgs, as both can be non-nil at the same time. -- If the argument is not present in metaArgs, we also check whether -- pairs has been run yet. If pairs has already been run, we return nil. -- This is because all the arguments will have already been copied into -- metaArgs by the mergeArgs function, meaning that any other arguments -- must be nil. --]] if type(key) == 'string' then key = options.translate[key] end local val = metaArgs[key] if val ~= nil then return val elseif metatable.donePairs or nilArgs[key] then return nil end for _, argTable in ipairs(argTables) do local argTableVal = tidyVal(key, argTable[key]) if argTableVal ~= nil then metaArgs[key] = argTableVal return argTableVal end end nilArgs[key] = 'h' return nil end metatable.__newindex = function (t, key, val) -- This function is called when a module tries to add a new value to the -- args table, or tries to change an existing value. if type(key) == 'string' then key = options.translate[key] end if options.readOnly then error( 'could not write to argument table key "' .. tostring(key) .. '"; the table is read-only', 2 ) elseif options.noOverwrite and args[key] ~= nil then error( 'could not write to argument table key "' .. tostring(key) .. '"; overwriting existing arguments is not permitted', 2 ) elseif val == nil then --[[ -- If the argument is to be overwritten with nil, we need to erase -- the value in metaArgs, so that __index, __pairs and __ipairs do -- not use a previous existing value, if present; and we also need -- to memoize the nil in nilArgs, so that the value isn't looked -- up in the argument tables if it is accessed again. --]] metaArgs[key] = nil nilArgs[key] = 'h' else metaArgs[key] = val end end local function translatenext(invariant) local k, v = next(invariant.t, invariant.k) invariant.k = k if k == nil then return nil elseif type(k) ~= 'string' or not options.backtranslate then return k, v else local backtranslate = options.backtranslate[k] if backtranslate == nil then -- Skip this one. This is a tail call, so this won't cause stack overflow return translatenext(invariant) else return backtranslate, v end end end metatable.__pairs = function () -- Called when pairs is run on the args table. if not metatable.donePairs then mergeArgs(argTables) metatable.donePairs = true end return translatenext, { t = metaArgs } end local function inext(t, i) -- This uses our __index metamethod local v = t[i + 1] if v ~= nil then return i + 1, v end end metatable.__ipairs = function (t) -- Called when ipairs is run on the args table. return inext, t, 0 end return args end return arguments 5qx9tzlul9ser30uxj9nbasjt92cevn Module:Category handler 828 871 1974 1973 2020-09-29T19:15:36Z Chrisb 1 1 revision imported 1973 Scribunto text/plain -------------------------------------------------------------------------------- -- -- -- CATEGORY HANDLER -- -- -- -- This module implements the {{category handler}} template in Lua, -- -- with a few improvements: all namespaces and all namespace aliases -- -- are supported, and namespace names are detected automatically for -- -- the local wiki. This module requires [[Module:Namespace detect]] -- -- and [[Module:Yesno]] to be available on the local wiki. It can be -- -- configured for different wikis by altering the values in -- -- [[Module:Category handler/config]], and pages can be blacklisted -- -- from categorisation by using [[Module:Category handler/blacklist]]. -- -- -- -------------------------------------------------------------------------------- -- Load required modules local yesno = require('Module:Yesno') -- Lazily load things we don't always need local mShared, mappings local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function trimWhitespace(s, removeBlanks) if type(s) ~= 'string' then return s end s = s:match('^%s*(.-)%s*$') if removeBlanks then if s ~= '' then return s else return nil end else return s end end -------------------------------------------------------------------------------- -- CategoryHandler class -------------------------------------------------------------------------------- local CategoryHandler = {} CategoryHandler.__index = CategoryHandler function CategoryHandler.new(data, args) local obj = setmetatable({ _data = data, _args = args }, CategoryHandler) -- Set the title object do local pagename = obj:parameter('demopage') local success, titleObj if pagename then success, titleObj = pcall(mw.title.new, pagename) end if success and titleObj then obj.title = titleObj if titleObj == mw.title.getCurrentTitle() then obj._usesCurrentTitle = true end else obj.title = mw.title.getCurrentTitle() obj._usesCurrentTitle = true end end -- Set suppression parameter values for _, key in ipairs{'nocat', 'categories'} do local value = obj:parameter(key) value = trimWhitespace(value, true) obj['_' .. key] = yesno(value) end do local subpage = obj:parameter('subpage') local category2 = obj:parameter('category2') if type(subpage) == 'string' then subpage = mw.ustring.lower(subpage) end if type(category2) == 'string' then subpage = mw.ustring.lower(category2) end obj._subpage = trimWhitespace(subpage, true) obj._category2 = trimWhitespace(category2) -- don't remove blank values end return obj end function CategoryHandler:parameter(key) local parameterNames = self._data.parameters[key] local pntype = type(parameterNames) if pntype == 'string' or pntype == 'number' then return self._args[parameterNames] elseif pntype == 'table' then for _, name in ipairs(parameterNames) do local value = self._args[name] if value ~= nil then return value end end return nil else error(string.format( 'invalid config key "%s"', tostring(key) ), 2) end end function CategoryHandler:isSuppressedByArguments() return -- See if a category suppression argument has been set. self._nocat == true or self._categories == false or ( self._category2 and self._category2 ~= self._data.category2Yes and self._category2 ~= self._data.category2Negative ) -- Check whether we are on a subpage, and see if categories are -- suppressed based on our subpage status. or self._subpage == self._data.subpageNo and self.title.isSubpage or self._subpage == self._data.subpageOnly and not self.title.isSubpage end function CategoryHandler:shouldSkipBlacklistCheck() -- Check whether the category suppression arguments indicate we -- should skip the blacklist check. return self._nocat == false or self._categories == true or self._category2 == self._data.category2Yes end function CategoryHandler:matchesBlacklist() if self._usesCurrentTitle then return self._data.currentTitleMatchesBlacklist else mShared = mShared or require('Module:Category handler/shared') return mShared.matchesBlacklist( self.title.prefixedText, mw.loadData('Module:Category handler/blacklist') ) end end function CategoryHandler:isSuppressed() -- Find if categories are suppressed by either the arguments or by -- matching the blacklist. return self:isSuppressedByArguments() or not self:shouldSkipBlacklistCheck() and self:matchesBlacklist() end function CategoryHandler:getNamespaceParameters() if self._usesCurrentTitle then return self._data.currentTitleNamespaceParameters else if not mappings then mShared = mShared or require('Module:Category handler/shared') mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData end return mShared.getNamespaceParameters( self.title, mappings ) end end function CategoryHandler:namespaceParametersExist() -- Find whether any namespace parameters have been specified. -- We use the order "all" --> namespace params --> "other" as this is what -- the old template did. if self:parameter('all') then return true end if not mappings then mShared = mShared or require('Module:Category handler/shared') mappings = mShared.getParamMappings(true) -- gets mappings with mw.loadData end for ns, params in pairs(mappings) do for i, param in ipairs(params) do if self._args[param] then return true end end end if self:parameter('other') then return true end return false end function CategoryHandler:getCategories() local params = self:getNamespaceParameters() local nsCategory for i, param in ipairs(params) do local value = self._args[param] if value ~= nil then nsCategory = value break end end if nsCategory ~= nil or self:namespaceParametersExist() then -- Namespace parameters exist - advanced usage. if nsCategory == nil then nsCategory = self:parameter('other') end local ret = {self:parameter('all')} local numParam = tonumber(nsCategory) if numParam and numParam >= 1 and math.floor(numParam) == numParam then -- nsCategory is an integer ret[#ret + 1] = self._args[numParam] else ret[#ret + 1] = nsCategory end if #ret < 1 then return nil else return table.concat(ret) end elseif self._data.defaultNamespaces[self.title.namespace] then -- Namespace parameters don't exist, simple usage. return self._args[1] end return nil end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p = {} function p._exportClasses() -- Used for testing purposes. return { CategoryHandler = CategoryHandler } end function p._main(args, data) data = data or mw.loadData('Module:Category handler/data') local handler = CategoryHandler.new(data, args) if handler:isSuppressed() then return nil end return handler:getCategories() end function p.main(frame, data) data = data or mw.loadData('Module:Category handler/data') local args = require('Module:Arguments').getArgs(frame, { wrappers = data.wrappers, valueFunc = function (k, v) v = trimWhitespace(v) if type(k) == 'number' then if v ~= '' then return v else return nil end else return v end end }) return p._main(args, data) end return p letwavu3yvlayfzew66uuwixmwebq5b Module:Category handler/blacklist 828 900 2032 2031 2020-09-29T19:15:41Z Chrisb 1 1 revision imported 2031 Scribunto text/plain -- This module contains the blacklist used by [[Module:Category handler]]. -- Pages that match Lua patterns in this list will not be categorised unless -- categorisation is explicitly requested. return { '^Main Page$', -- don't categorise the main page. -- Don't categorise the following pages or their subpages. -- "%f[/\0]" matches if the next character is "/" or the end of the string. '^Wikipedia:Cascade%-protected items%f[/\0]', '^User:UBX%f[/\0]', -- The userbox "template" space. '^User talk:UBX%f[/\0]', -- Don't categorise subpages of these pages, but allow -- categorisation of the base page. '^Wikipedia:Template index/.*$', -- Don't categorise archives. '/[aA]rchive', "^Wikipedia:Administrators' noticeboard/IncidentArchive%d+$", } fsv1drcay6t25e91hzhqxtyp7pckbpx Module:Category handler/config 828 901 2034 2033 2020-09-29T19:15:42Z Chrisb 1 1 revision imported 2033 Scribunto text/plain -------------------------------------------------------------------------------- -- [[Module:Category handler]] configuration data -- -- Language-specific parameter names and values can be set here. -- -- For blacklist config, see [[Module:Category handler/blacklist]]. -- -------------------------------------------------------------------------------- local cfg = {} -- Don't edit this line. -------------------------------------------------------------------------------- -- Start configuration data -- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -- Parameter names -- -- These configuration items specify custom parameter names. -- -- To add one extra name, you can use this format: -- -- -- -- foo = 'parameter name', -- -- -- -- To add multiple names, you can use this format: -- -- -- -- foo = {'parameter name 1', 'parameter name 2', 'parameter name 3'}, -- -------------------------------------------------------------------------------- cfg.parameters = { -- The nocat and categories parameter suppress -- categorisation. They are used with Module:Yesno, and work as follows: -- -- cfg.nocat: -- Result of yesno() Effect -- true Categorisation is suppressed -- false Categorisation is allowed, and -- the blacklist check is skipped -- nil Categorisation is allowed -- -- cfg.categories: -- Result of yesno() Effect -- true Categorisation is allowed, and -- the blacklist check is skipped -- false Categorisation is suppressed -- nil Categorisation is allowed nocat = 'nocat', categories = 'categories', -- The parameter name for the legacy "category2" parameter. This skips the -- blacklist if set to the cfg.category2Yes value, and suppresses -- categorisation if present but equal to anything other than -- cfg.category2Yes or cfg.category2Negative. category2 = 'category2', -- cfg.subpage is the parameter name to specify how to behave on subpages. subpage = 'subpage', -- The parameter for data to return in all namespaces. all = 'all', -- The parameter name for data to return if no data is specified for the -- namespace that is detected. other = 'other', -- The parameter name used to specify a page other than the current page; -- used for testing and demonstration. demopage = 'page', } -------------------------------------------------------------------------------- -- Parameter values -- -- These are set values that can be used with certain parameters. Only one -- -- value can be specified, like this: -- -- -- -- cfg.foo = 'value name' -- -- -------------------------------------------------------------------------------- -- The following settings are used with the cfg.category2 parameter. Setting -- cfg.category2 to cfg.category2Yes skips the blacklist, and if cfg.category2 -- is present but equal to anything other than cfg.category2Yes or -- cfg.category2Negative then it supresses cateogrisation. cfg.category2Yes = 'yes' cfg.category2Negative = '¬' -- The following settings are used with the cfg.subpage parameter. -- cfg.subpageNo is the value to specify to not categorise on subpages; -- cfg.subpageOnly is the value to specify to only categorise on subpages. cfg.subpageNo = 'no' cfg.subpageOnly = 'only' -------------------------------------------------------------------------------- -- Default namespaces -- -- This is a table of namespaces to categorise by default. The keys are the -- -- namespace numbers. -- -------------------------------------------------------------------------------- cfg.defaultNamespaces = { [ 0] = true, -- main [ 6] = true, -- file [ 12] = true, -- help [ 14] = true, -- category [100] = true, -- portal [108] = true, -- book } -------------------------------------------------------------------------------- -- Wrappers -- -- This is a wrapper template or a list of wrapper templates to be passed to -- -- [[Module:Arguments]]. -- -------------------------------------------------------------------------------- cfg.wrappers = 'Template:Category handler' -------------------------------------------------------------------------------- -- End configuration data -- -------------------------------------------------------------------------------- return cfg -- Don't edit this line. 6ga9hbq2pdwalsvx68i53dmbr421rq5 Module:Category handler/data 828 902 2036 2035 2020-09-29T19:15:42Z Chrisb 1 1 revision imported 2035 Scribunto text/plain -- This module assembles data to be passed to [[Module:Category handler]] using -- mw.loadData. This includes the configuration data and whether the current -- page matches the title blacklist. local data = require('Module:Category handler/config') local mShared = require('Module:Category handler/shared') local blacklist = require('Module:Category handler/blacklist') local title = mw.title.getCurrentTitle() data.currentTitleMatchesBlacklist = mShared.matchesBlacklist( title.prefixedText, blacklist ) data.currentTitleNamespaceParameters = mShared.getNamespaceParameters( title, mShared.getParamMappings() ) return data k26mwixuaeijisfddb0sxkg82iux8v4 Module:Category handler/doc 828 903 2038 2037 2020-09-29T19:15:43Z Chrisb 1 1 revision imported 2037 wikitext text/x-wiki {{high-use|4486247|all-pages = yes}} {{Used in system}} {{Module rating|p}} This module implements the {{tl|category handler}} template. The category handler template helps other templates to automate both categorization and [[Wikipedia:Category suppression|category suppression]]. For information about using the category handler template in other templates, please see the '''[[Template:Category handler|template documentation]]'''. Keep reading for information about using the category handler module in other Lua modules, or for information on exporting this module to other wikis. == Use from other Lua modules == === When not to use this module === For cases where a module only needs to categorise in one of the namespaces main (articles), file (images) or category, then using this module is overkill. Instead, you can simply get a title object using [[mw:Extension:Scribunto/Lua reference manual#mw.title.getCurrentTitle|mw.title.getCurrentTitle]] and check the <code>nsText</code> field. For example: <syntaxhighlight lang="lua"> local title = mw.title.getCurrentTitle() if title.nsText == 'File' then -- do something end </syntaxhighlight> However, if your module needs to categorize in any other namespace, then we recommend you use this module, since it provides proper category suppression and makes it easy to select how to categorize in the different namespaces. === Namespaces === This module detects and groups all the different [[Wikipedia:Namespace|namespaces]] used on Wikipedia into several types. These types are used as parameter names in this module. :'''main''' = Main/article space, as in normal Wikipedia articles. :'''talk''' = Any talk space, such as page names that start with "Talk:", "User talk:", "File talk:" and so on. :'''user, wikipedia, file ... = The other namespaces except the talk pages. Namespace aliases are also accepted. See the table below for the full list.''' :'''other''' = Any namespaces that were not specified as a parameter to the template. See examples below. ;List of possible namespace parameters (excluding <code>''talk''</code> and <code>''other''</code>) {{#invoke:Namespace detect|table}} === Basic usage === This module takes two or more parameters. Here's an example using a hello world program: <syntaxhighlight lang="lua"> p = {} local categoryHandler = require( 'Module:Category handler' ).main function p.main( frame ) local result = 'Hello world!' local category = categoryHandler{ '[[Category:Somecat]]', nocat = frame.args.nocat -- So "nocat=true/false" works } category = category or '' -- Check that we don't have a nil value for the category variable. return result .. category end return p </syntaxhighlight> The above example uses the default settings for the category handler module. That means the example module will categorize on pages in the following namespaces: :'''main''', '''file''', '''help''', '''category''', '''portal''' and '''book''' But it will ''not'' categorize in any other namespaces, e.g.: :'''talk''', '''user''', '''wikipedia''', '''mediawiki''', '''template''' ... And it will ''not'' categorize on blacklisted pages. (See section [[#Blacklist|blacklist]] below.) The reason the category handler module does not categorize in some of the namespaces is that in those namespaces most modules and templates are just demonstrated or listed, not used. Thus most modules and templates should not categorize in those namespaces. Any module or template that is meant for one or more of the namespaces where this module categorizes can use the basic syntax as shown above. === Advanced usage === This module takes one or more parameters named after the different page types as listed in section [[#Namespaces|namespaces]] above. By using those parameters you can specify exactly in which namespaces your template should categorize. Like this: <syntaxhighlight lang="lua"> p = {} local categoryHandler = require( 'Module:Category handler' ).main function p.main( frame ) local result = 'This is a module meant for articles and talk pages.' local category = categoryHandler{ main = '[[Category:Somecat1]]', -- Categorize in main (article) space talk = '[[Category:Somecat2]]', -- Categorize in talk space nocat = frame.args.nocat -- So "nocat=true/false" works } category = category or '' -- Check that we don't have a nil value for the category variable. return result .. category end return p </syntaxhighlight> The above module will only categorize in main and talk space. But it will not categorize on /archive pages since they are blacklisted. (See section [[#Blacklist|blacklist]] below.) And if you need to demonstrate (discuss) the module on a talkpage, then you can feed "<code>nocat='true'</code>" to prevent that template from categorizing. (See section [[#Nocat|nocat]] below.) Like this: <pre> == My new module == Hey guys, have you seen my new module? {{#invoke:mymodule|main|nocat=true}} Nice, isn't it? --~~~~ </pre> Sometimes we want to use the same category in several namespaces, then do like this: <syntaxhighlight lang="lua"> p = {} local categoryHandler = require( 'Module:Category handler' ).main function p.main( frame ) local result = 'This is a module used in several namespaces.' local category = categoryHandler{ main = '[[Category:Somecat1]]', [ 1 ] = '[[Category:Somecat2]]', -- For help and user space help = 1, user = 1, talk = '', -- No categories on talk pages other = '[[Category:Somecat3]]', -- For all other namespaces nocat = frame.args.nocat -- So "nocat=true/false" works } category = category or '' -- Check that we don't have a nil value for the category variable. return result .. category end return p </syntaxhighlight> In the above example we use a numbered parameter to feed one of the categories, and then we tell this module to use that numbered parameter for both the help and user space. The category handler module understands an unlimited number of numbered parameters. The '''other''' parameter defines what should be used in the remaining namespaces that have not explicitly been fed data. Note the empty but defined '''talk''' parameter. That stops this module from showing what has been fed to the '''other''' parameter, when in talk space. The category handler module also has a parameter called '''all'''. It works like this: <syntaxhighlight lang="lua"> p = {} local categoryHandler = require( 'Module:Category handler' ).main function p.main( frame ) local result = 'This is a module used in all namespaces.' local category = categoryHandler{ all = '[[Category:Somecat1]]', -- Categorize in all namespaces nocat = frame.args.nocat -- So "nocat=true/false" works } category = category or '' -- Check that we don't have a nil value for the category variable. return result .. category end return p </syntaxhighlight> The above example will categorize in all namespaces, but not on blacklisted pages. If you want to demonstrate that module on a page, then use "<code>nocat=true</code>" to prevent the template from categorizing. We suggest avoiding the '''all''' parameter, since modules and templates should preferably only categorize in the namespaces they need to. The all parameter can also be combined with the rest of the parameters. Like this: <syntaxhighlight lang="lua"> p = {} local categoryHandler = require( 'Module:Category handler' ).main function p.main( frame ) local result = 'This is a module used in all namespaces.' local category = categoryHandler{ all = '[[Category:Somecat1]]', -- Categorize in all namespaces main = '[[Category:Somecat2]]', -- And add this in main space other = '[[Category:Somecat3]]', -- And add this in all other namespaces nocat = frame.args.nocat -- So "nocat=true/false" works } category = category or '' -- Check that we don't have a nil value for the category variable. return result .. category end return p </syntaxhighlight> If the above module is placed on an article, then it will add the categories "Somecat1" and "Somecat2". But on all other types of pages it will instead add "Somecat1" and "Somecat3". As the example shows, the all parameter works independently of the rest of the parameters. === Subpages === The category handler module understands the '''subpage''' parameter. Like this: <syntaxhighlight lang="lua"> p = {} local categoryHandler = require( 'Module:Category handler' ).main function p.main( frame ) local result = 'This is a module used in all namespaces.' local category = categoryHandler{ subpage = 'no' -- Don't categorize on subpages wikipedia = '[[Category:Somecat]]', nocat = frame.args.nocat -- So "nocat=true/false" works } category = category or '' -- Check that we don't have a nil value for the category variable. return result .. category end return p </syntaxhighlight> If "<code>subpage='no'</code>" then this template will ''not'' categorize on subpages. For the rare occasion you ''only'' want to categorize on subpages, then use "<code>subpage='only'</code>". If '''subpage''' is empty or undefined then this template categorizes both on basepages and on subpages. === Blacklist === This module has a blacklist of the pages and page types where templates should not auto-categorize. Thus modules that use this meta-template will for instance not categorize on /archive pages and on the subpages of [[Wikipedia:Template messages]]. If you want a template to categorize on a blacklisted page, then feed "<code><nowiki>nocat = false</nowiki></code>" to the module when you place it on the page, thus skipping the blacklist check. Note that this module only categorizes if it has data for the namespace. For instance, if the basic syntax is used (see [[#Basic usage|basic usage]] above), then even if you set "<code>nocat = false</code>" the template will not categorize on a talk page, since it has no data for talk pages. But it has data for help space, so on a blacklisted help page it will categorize. The blacklist is located in the configuration table <code>cfg.blacklist</code> near the top of the module code. === The "nocat" parameter === This module understands the '''nocat''' parameter: * If "<code>nocat = true</code>" then this template does ''not'' categorize. * If '''nocat''' is <code>nil</code> then this template categorizes as usual. * If "<code>nocat = false</code>" this template categorizes even when on blacklisted pages. (See section [[#Blacklist|blacklist]] above.) * The nocat parameter also accepts aliases for <code>true</code> and <code>false</code> as defined by [[Module:Yesno]], e.g. "yes", "y", "true", and 1 for <code>true</code>, and "no", "n", "false", and 0 for <code>false</code>. Modules and templates that use {{tlf|category handler}} should forward '''nocat''', so they too understand '''nocat'''. The code "<code>nocat = frame.args.nocat</code>" shown in the examples on this page does that. === The "categories" parameter === For backwards compatibility this module also understands the '''categories''' parameter. It works the same as '''nocat'''. Like this: * If "<code>categories = false</code>" then this template does ''not'' categorize. * If '''categories''' is empty or undefined then this template categorizes as usual. * If "<code>categories = true</code>" this template categorizes even when on blacklisted pages. * The categories parameter also accepts aliases for <code>true</code> and <code>false</code> as defined by [[Module:Yesno]], e.g. "yes", "y", "true", and 1 for <code>true</code>, and "no", "n", "false", and 0 for <code>false</code>. === The "category2" parameter === For backwards compatibility this template kind of supports the old "category =" parameter. But the parameter name "category" is already used in this module to feed category data for when in category space. So instead this template uses '''category2''' for the usage similar to '''nocat'''. Like this: * If "<code>category2 = "</code>" (empty but defined), or "<code>category2 = 'no'</code>", or if '''category2''' is fed any other data (except as described in the next two points), then this template does ''not'' categorize. * If '''category2''' is undefined or if "<code>category2 = '¬'</code>", then this template categorizes as usual. * If "<code>category2 = 'yes'</code>" this template categorizes even when on blacklisted pages. === Categories and text === Besides from categories, you can feed anything else to this module, for instance some text. Like this: <syntaxhighlight lang="lua"> p = {} local categoryHandler = require( 'Module:Category handler' ).main function p.main( frame ) local result = 'This is a module used on talk pages.' local category = categoryHandler{ talk = '[[Category:Somecat]]', other = '<p class="error">This module should only be used on talk pages.</p>', nocat = frame.args.nocat -- So "nocat=true/false" works } category = category or '' -- Check that we don't have a nil value for the category variable. return result .. category end return p </syntaxhighlight> When the module code above is used on anything other than a talk page, it will look like this: :This is a module used on talk pages.{{#invoke:category handler|main | talk = [[Category:Somecat]] | other = <p class="error">This module should only be used on talk pages.</p> | nocat = {{{nocat|}}} <!--So "nocat=true/false" works--> }} That text will not show on blacklisted pages, so don't use this method to show any important information. Feeding "<code>nocat = 'true'</code>" to the template hides the text, just as it suppresses any categories. === The "page" parameter === For testing and demonstration purposes this module can take a parameter named '''page'''. Like this: <syntaxhighlight lang="lua"> p = {} local categoryHandler = require( 'Module:Category handler' ).main function p.main( frame ) local category = categoryHandler{ main = 'Category:Some cat', talk = 'Category:Talk cat', nocat = frame.args.nocat, -- So "nocat=true/false" works page = 'User talk:Example' } return category end return p </syntaxhighlight> In the above code we on purpose left out the brackets around the category names so we see the output on the page. No matter on what kind of page the code above is used it will return this: :{{#invoke:category handler|main | main = Category:Some cat | talk = Category:Talk cat | nocat = {{{nocat|}}} <!--So "nocat=true/false" works--> | page = User talk:Example }} The '''page''' parameter makes this module behave exactly as if on that page. Even the blacklist works. The pagename doesn't have to be an existing page. If the '''page''' parameter is empty or undefined, the name of the current page determines the result. You can make it so your module also understands the '''page''' parameter. That means you can test how your template will categorize on different pages, without having to actually edit those pages. Then do like this: <syntaxhighlight lang="lua"> p = {} local categoryHandler = require( 'Module:Category handler' ).main function p.main( frame ) local category = categoryHandler{ main = 'Category:Some cat', talk = 'Category:Talk cat', nocat = frame.args.nocat, -- So "nocat=true/false" works page = frame.args.page -- For testing } return category end return p </syntaxhighlight> === Parameters === List of all parameters: * First positional parameter - for default settings * subpage = 'no' / 'only' * 1, 2, 3 ... * all = '<nowiki>[[Category:Somecat]]</nowiki>' / 'Text' * main = 1, 2, 3 ... / '<nowiki>[[Category:Somecat]]</nowiki>' / 'Text' * ... * other = 1, 2, 3 ... / '<nowiki>[[Category:Somecat]]</nowiki>' / 'Text' * nocat = frame.args.nocat / true / false / 'yes' / 'no' / 'y' / 'n' / 'true' / 'false' / 1 / 0 * categories = frame.args.categories / false / true / 'no' / 'yes' / 'n' / 'y' / 'false' / 'true' / 0 / 1 * category2 = frame.args.category or '¬' / 'no' / 'not defined' / '¬' / 'yes' * page = frame.args.page / 'User:Example' Note that empty values to the "main" ... "other" parameters have special meaning (see examples above). The "all" parameter doesn't understand numbered parameters, since there should never be a need for that. == Exporting to other wikis == This module can be exported to other wikis by changing the configuration values in the <code>cfg</code> table. All the variable values are configurable, so after the configuration values have been set there should be no need to alter the main module code. Details of each configuration value are included in the module code comments. In addition, this module requires [[Module:Namespace detect]] to be available on the local wiki. == See also == * {{tl|Category handler}} – for using this module with templates, rather than Lua modules. * [[Wikipedia:Category suppression]] – The how-to guide. * [[Wikipedia:WikiProject Category Suppression]] – The WikiProject. * [[Wikipedia:Namespace]] – Lists all the namespaces. 5kxmyqwfbg89dg8t6et327d4b1oa9z5 Module:Category handler/shared 828 904 2040 2039 2020-09-29T19:15:44Z Chrisb 1 1 revision imported 2039 Scribunto text/plain -- This module contains shared functions used by [[Module:Category handler]] -- and its submodules. local p = {} function p.matchesBlacklist(page, blacklist) for i, pattern in ipairs(blacklist) do local match = mw.ustring.match(page, pattern) if match then return true end end return false end function p.getParamMappings(useLoadData) local dataPage = 'Module:Namespace detect/data' if useLoadData then return mw.loadData(dataPage).mappings else return require(dataPage).mappings end end function p.getNamespaceParameters(titleObj, mappings) -- We don't use title.nsText for the namespace name because it adds -- underscores. local mappingsKey if titleObj.isTalkPage then mappingsKey = 'talk' else mappingsKey = mw.site.namespaces[titleObj.namespace].name end mappingsKey = mw.ustring.lower(mappingsKey) return mappings[mappingsKey] or {} end return p omlsnhudxz6juptvtxz7ns97jutbzc5 Module:Check for unknown parameters 828 1318 2868 2867 2020-09-29T19:18:22Z Chrisb 1 1 revision imported 2867 Scribunto text/plain -- This module may be used to compare the arguments passed to the parent -- with a list of arguments, returning a specified result if an argument is -- not on the list local p = {} local function trim(s) return s:match('^%s*(.-)%s*$') end local function isnotempty(s) return s and s:match('%S') end local function clean(text) -- Return text cleaned for display and truncated if too long. -- Strip markers are replaced with dummy text representing the original wikitext. local pos, truncated local function truncate(text) if truncated then return '' end if mw.ustring.len(text) > 25 then truncated = true text = mw.ustring.sub(text, 1, 25) .. '...' end return mw.text.nowiki(text) end local parts = {} for before, tag, remainder in text:gmatch('([^\127]*)\127[^\127]*%-(%l+)%-[^\127]*\127()') do pos = remainder table.insert(parts, truncate(before) .. '&lt;' .. tag .. '&gt;...&lt;/' .. tag .. '&gt;') end table.insert(parts, truncate(text:sub(pos or 1))) return table.concat(parts) end function p._check(args, pargs) if type(args) ~= "table" or type(pargs) ~= "table" then -- TODO: error handling return end local ignoreblank = isnotempty(args['ignoreblank']) local showblankpos = isnotempty(args['showblankpositional']) local knownargs = {} local unknown = args['unknown'] or 'Found _VALUE_, ' local preview = args['preview'] local values = {} local res = {} local regexps = {} -- create the list of known args, regular expressions, and the return string for k, v in pairs(args) do if type(k) == 'number' then v = trim(v) knownargs[v] = 1 elseif k:find('^regexp[1-9][0-9]*$') then table.insert(regexps, '^' .. v .. '$') end end if isnotempty(preview) then preview = '<div class="hatnote" style="color:red"><strong>Warning:</strong> ' .. preview .. ' (this message is shown only in preview).</div>' elseif preview == nil then preview = unknown end -- loop over the parent args, and make sure they are on the list for k, v in pairs(pargs) do if type(k) == 'string' and knownargs[k] == nil then local knownflag = false for _, regexp in ipairs(regexps) do if mw.ustring.match(k, regexp) then knownflag = true break end end if not knownflag and ( not ignoreblank or isnotempty(v) ) then table.insert(values, clean(k)) end elseif type(k) == 'number' and knownargs[tostring(k)] == nil and ( showblankpos or isnotempty(v) ) then table.insert(values, k .. ' = ' .. clean(v)) end end -- add results to the output tables if #values > 0 then if mw.getCurrentFrame():preprocess( "{{REVISIONID}}" ) == "" then unknown = preview end for _, v in pairs(values) do if v == '' then -- Fix odd bug for | = which gets stripped to the empty string and -- breaks category links v = ' ' end -- avoid error with v = 'example%2' ("invalid capture index") local r = unknown:gsub('_VALUE_', {_VALUE_ = v}) table.insert(res, r) end end return table.concat(res) end function p.check(frame) local args = frame.args local pargs = frame:getParent().args return p._check(args, pargs) end return p fai6f8jbbmvoyopkl9xbkhi5th8yqh4 Module:Citation/CS1 828 1460 3224 3223 2020-10-11T01:32:07Z Chrisb 1 1 revision imported 3223 Scribunto text/plain require('Module:No globals'); --[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- each of these counts against the Lua upvalue limit ]] local validation; -- functions in Module:Citation/CS1/Date_validation local utilities; -- functions in Module:Citation/CS1/Utilities local z ={}; -- table of tables in Module:Citation/CS1/Utilities local identifiers; -- functions and tables in Module:Citation/CS1/Identifiers local metadata; -- functions in Module:Citation/CS1/COinS local cfg = {}; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration local whitelist = {}; -- table of tables listing valid template parameter names; defined in Module:Citation/CS1/Whitelist --[[--------------------------< P A G E S C O P E V A R I A B L E S >-------------------------------------- declare variables here that have page-wide scope that are not brought in from other modules; that are created here and used here ]] local added_deprecated_cat; -- Boolean flag so that the category is added only once local added_vanc_errs; -- Boolean flag so we only emit one Vancouver error / category local Frame; -- holds the module's frame table --[[--------------------------< F I R S T _ S E T >------------------------------------------------------------ Locates and returns the first set value in a table of values where the order established in the table, left-to-right (or top-to-bottom), is the order in which the values are evaluated. Returns nil if none are set. This version replaces the original 'for _, val in pairs do' and a similar version that used ipairs. With the pairs version the order of evaluation could not be guaranteed. With the ipairs version, a nil value would terminate the for-loop before it reached the actual end of the list. ]] local function first_set (list, count) local i = 1; while i <= count do -- loop through all items in list if utilities.is_set( list[i] ) then return list[i]; -- return the first set list member end i = i + 1; -- point to next end end --[[--------------------------< A D D _ V A N C _ E R R O R >---------------------------------------------------- Adds a single Vancouver system error message to the template's output regardless of how many error actually exist. To prevent duplication, added_vanc_errs is nil until an error message is emitted. added_vanc_errs is a Boolean declared in page scope variables above ]] local function add_vanc_error (source) if not added_vanc_errs then added_vanc_errs = true; -- note that we've added this category table.insert( z.message_tail, { utilities.set_message ( 'err_vancouver', {source}, true ) } ); end end --[[--------------------------< I S _ S C H E M E >------------------------------------------------------------ does this thing that purports to be a URI scheme seem to be a valid scheme? The scheme is checked to see if it is in agreement with http://tools.ietf.org/html/std66#section-3.1 which says: Scheme names consist of a sequence of characters beginning with a letter and followed by any combination of letters, digits, plus ("+"), period ("."), or hyphen ("-"). returns true if it does, else false ]] local function is_scheme (scheme) return scheme and scheme:match ('^%a[%a%d%+%.%-]*:'); -- true if scheme is set and matches the pattern end --[=[-------------------------< I S _ D O M A I N _ N A M E >-------------------------------------------------- Does this thing that purports to be a domain name seem to be a valid domain name? Syntax defined here: http://tools.ietf.org/html/rfc1034#section-3.5 BNF defined here: https://tools.ietf.org/html/rfc4234 Single character names are generally reserved; see https://tools.ietf.org/html/draft-ietf-dnsind-iana-dns-01#page-15; see also [[Single-letter second-level domain]] list of TLDs: https://www.iana.org/domains/root/db RFC 952 (modified by RFC 1123) requires the first and last character of a hostname to be a letter or a digit. Between the first and last characters the name may use letters, digits, and the hyphen. Also allowed are IPv4 addresses. IPv6 not supported domain is expected to be stripped of any path so that the last character in the last character of the TLD. tld is two or more alpha characters. Any preceding '//' (from splitting a URL with a scheme) will be stripped here. Perhaps not necessary but retained in case it is necessary for IPv4 dot decimal. There are several tests: the first character of the whole domain name including subdomains must be a letter or a digit internationalized domain name (ASCII characters with .xn-- ASCII Compatible Encoding (ACE) prefix xn-- in the TLD) see https://tools.ietf.org/html/rfc3490 single-letter/digit second-level domains in the .org, .cash, and .today TLDs q, x, and z SL domains in the .com TLD i and q SL domains in the .net TLD single-letter SL domains in the ccTLDs (where the ccTLD is two letters) two-character SL domains in gTLDs (where the gTLD is two or more letters) three-plus-character SL domains in gTLDs (where the gTLD is two or more letters) IPv4 dot-decimal address format; TLD not allowed returns true if domain appears to be a proper name and TLD or IPv4 address, else false ]=] local function is_domain_name (domain) if not domain then return false; -- if not set, abandon end domain = domain:gsub ('^//', ''); -- strip '//' from domain name if present; done here so we only have to do it once if not domain:match ('^[%w]') then -- first character must be letter or digit return false; end if domain:match ('^%a+:') then -- hack to detect things that look like s:Page:Title where Page: is namespace at Wikisource return false; end local patterns = { -- patterns that look like URLs '%f[%w][%w][%w%-]+[%w]%.%a%a+$', -- three or more character hostname.hostname or hostname.tld '%f[%w][%w][%w%-]+[%w]%.xn%-%-[%w]+$', -- internationalized domain name with ACE prefix '%f[%a][qxz]%.com$', -- assigned one character .com hostname (x.com times out 2015-12-10) '%f[%a][iq]%.net$', -- assigned one character .net hostname (q.net registered but not active 2015-12-10) '%f[%w][%w]%.%a%a$', -- one character hostname and ccTLD (2 chars) '%f[%w][%w][%w]%.%a%a+$', -- two character hostname and TLD '^%d%d?%d?%.%d%d?%d?%.%d%d?%d?%.%d%d?%d?', -- IPv4 address } for _, pattern in ipairs (patterns) do -- loop through the patterns list if domain:match (pattern) then return true; -- if a match then we think that this thing that purports to be a URL is a URL end end for _, d in ipairs ({'cash', 'company', 'today', 'org'}) do -- look for single letter second level domain names for these top level domains if domain:match ('%f[%w][%w]%.' .. d) then return true end end return false; -- no matches, we don't know what this thing is end --[[--------------------------< I S _ U R L >------------------------------------------------------------------ returns true if the scheme and domain parts of a URL appear to be a valid URL; else false. This function is the last step in the validation process. This function is separate because there are cases that are not covered by split_url(), for example is_parameter_ext_wikilink() which is looking for bracketted external wikilinks. ]] local function is_url (scheme, domain) if utilities.is_set (scheme) then -- if scheme is set check it and domain return is_scheme (scheme) and is_domain_name (domain); else return is_domain_name (domain); -- scheme not set when URL is protocol-relative end end --[[--------------------------< S P L I T _ U R L >------------------------------------------------------------ Split a URL into a scheme, authority indicator, and domain. First remove Fully Qualified Domain Name terminator (a dot following TLD) (if any) and any path(/), query(?) or fragment(#). If protocol-relative URL, return nil scheme and domain else return nil for both scheme and domain. When not protocol-relative, get scheme, authority indicator, and domain. If there is an authority indicator (one or more '/' characters immediately following the scheme's colon), make sure that there are only 2. Any URL that does not have news: scheme must have authority indicator (//). TODO: are there other common schemes like news: that don't use authority indicator? Strip off any port and path; ]] local function split_url (url_str) local scheme, authority, domain; url_str = url_str:gsub ('([%a%d])%.?[/%?#].*$', '%1'); -- strip FQDN terminator and path(/), query(?), fragment (#) (the capture prevents false replacement of '//') if url_str:match ('^//%S*') then -- if there is what appears to be a protocol-relative URL domain = url_str:match ('^//(%S*)') elseif url_str:match ('%S-:/*%S+') then -- if there is what appears to be a scheme, optional authority indicator, and domain name scheme, authority, domain = url_str:match ('(%S-:)(/*)(%S+)'); -- extract the scheme, authority indicator, and domain portions if utilities.is_set (authority) then authority = authority:gsub ('//', '', 1); -- replace place 1 pair of '/' with nothing; if utilities.is_set(authority) then -- if anything left (1 or 3+ '/' where authority should be) then return scheme; -- return scheme only making domain nil which will cause an error message end else if not scheme:match ('^news:') then -- except for news:..., MediaWiki won't link URLs that do not have authority indicator; TODO: a better way to do this test? return scheme; -- return scheme only making domain nil which will cause an error message end end domain = domain:gsub ('(%a):%d+', '%1'); -- strip port number if present end return scheme, domain; end --[[--------------------------< L I N K _ P A R A M _ O K >--------------------------------------------------- checks the content of |title-link=, |series-link=, |author-link=, etc. for properly formatted content: no wikilinks, no URLs Link parameters are to hold the title of a Wikipedia article, so none of the WP:TITLESPECIALCHARACTERS are allowed: # < > [ ] | { } _ except the underscore which is used as a space in wiki URLs and # which is used for section links returns false when the value contains any of these characters. When there are no illegal characters, this function returns TRUE if value DOES NOT appear to be a valid URL (the |<param>-link= parameter is ok); else false when value appears to be a valid URL (the |<param>-link= parameter is NOT ok). ]] local function link_param_ok (value) local scheme, domain; if value:find ('[<>%[%]|{}]') then -- if any prohibited characters return false; end scheme, domain = split_url (value); -- get scheme or nil and domain or nil from URL; return not is_url (scheme, domain); -- return true if value DOES NOT appear to be a valid URL end --[[--------------------------< L I N K _ T I T L E _ O K >--------------------------------------------------- Use link_param_ok() to validate |<param>-link= value and its matching |<title>= value. |<title>= may be wiki-linked but not when |<param>-link= has a value. This function emits an error message when that condition exists check <link> for inter-language interwiki-link prefix. prefix must be a MediaWiki-recognized language code and must begin with a colon. ]] local function link_title_ok (link, lorig, title, torig) local orig; if utilities.is_set (link) then -- don't bother if <param>-link doesn't have a value if not link_param_ok (link) then -- check |<param>-link= markup orig = lorig; -- identify the failing link parameter elseif title:find ('%[%[') then -- check |title= for wikilink markup orig = torig; -- identify the failing |title= parameter elseif link:match ('^%a+:') then -- if the link is what looks like an interwiki local prefix = link:match ('^(%a+):'):lower(); -- get the interwiki prefix if cfg.inter_wiki_map[prefix] then -- if prefix is in the map, must have preceding colon orig = lorig; -- flag as error end end end if utilities.is_set (orig) then link = ''; -- unset table.insert( z.message_tail, { utilities.set_message ( 'err_bad_paramlink', orig)}); -- URL or wikilink in |title= with |title-link=; end return link; -- link if ok, empty string else end --[[--------------------------< C H E C K _ U R L >------------------------------------------------------------ Determines whether a URL string appears to be valid. First we test for space characters. If any are found, return false. Then split the URL into scheme and domain portions, or for protocol-relative (//example.com) URLs, just the domain. Use is_url() to validate the two portions of the URL. If both are valid, or for protocol-relative if domain is valid, return true, else false. Because it is different from a standard URL, and because this module used external_link() to make external links that work for standard and news: links, we validate newsgroup names here. The specification for a newsgroup name is at https://tools.ietf.org/html/rfc5536#section-3.1.4 ]] local function check_url( url_str ) if nil == url_str:match ("^%S+$") then -- if there are any spaces in |url=value it can't be a proper URL return false; end local scheme, domain; scheme, domain = split_url (url_str); -- get scheme or nil and domain or nil from URL; if 'news:' == scheme then -- special case for newsgroups return domain:match('^[%a%d%+%-_]+%.[%a%d%+%-_%.]*[%a%d%+%-_]$'); end return is_url (scheme, domain); -- return true if value appears to be a valid URL end --[=[-------------------------< I S _ P A R A M E T E R _ E X T _ W I K I L I N K >---------------------------- Return true if a parameter value has a string that begins and ends with square brackets [ and ] and the first non-space characters following the opening bracket appear to be a URL. The test will also find external wikilinks that use protocol-relative URLs. Also finds bare URLs. The frontier pattern prevents a match on interwiki-links which are similar to scheme:path URLs. The tests that find bracketed URLs are required because the parameters that call this test (currently |title=, |chapter=, |work=, and |publisher=) may have wikilinks and there are articles or redirects like '//Hus' so, while uncommon, |title=[[//Hus]] is possible as might be [[en://Hus]]. ]=] local function is_parameter_ext_wikilink (value) local scheme, domain; if value:match ('%f[%[]%[%a%S*:%S+.*%]') then -- if ext. wikilink with scheme and domain: [xxxx://yyyyy.zzz] scheme, domain = split_url (value:match ('%f[%[]%[(%a%S*:%S+).*%]')); elseif value:match ('%f[%[]%[//%S+.*%]') then -- if protocol-relative ext. wikilink: [//yyyyy.zzz] scheme, domain = split_url (value:match ('%f[%[]%[(//%S+).*%]')); elseif value:match ('%a%S*:%S+') then -- if bare URL with scheme; may have leading or trailing plain text scheme, domain = split_url (value:match ('(%a%S*:%S+)')); elseif value:match ('//%S+') then -- if protocol-relative bare URL: //yyyyy.zzz; may have leading or trailing plain text scheme, domain = split_url (value:match ('(//%S+)')); -- what is left should be the domain else return false; -- didn't find anything that is obviously a URL end return is_url (scheme, domain); -- return true if value appears to be a valid URL end --[[-------------------------< C H E C K _ F O R _ U R L >----------------------------------------------------- loop through a list of parameters and their values. Look at the value and if it has an external link, emit an error message. ]] local function check_for_url (parameter_list) local error_message = ''; for k, v in pairs (parameter_list) do -- for each parameter in the list if is_parameter_ext_wikilink (v) then -- look at the value; if there is a URL add an error message if utilities.is_set(error_message) then -- once we've added the first portion of the error message ... error_message = error_message .. ", "; -- ... add a comma space separator end error_message = error_message .. "&#124;" .. k .. "="; -- add the failed parameter end end if utilities.is_set (error_message) then -- done looping, if there is an error message, display it table.insert( z.message_tail, { utilities.set_message ( 'err_param_has_ext_link', {error_message}, true ) } ); end end --[[--------------------------< S A F E _ F O R _ U R L >------------------------------------------------------ Escape sequences for content that will be used for URL descriptions ]] local function safe_for_url( str ) if str:match( "%[%[.-%]%]" ) ~= nil then table.insert( z.message_tail, { utilities.set_message ( 'err_wikilink_in_url', {}, true ) } ); end return str:gsub( '[%[%]\n]', { ['['] = '&#91;', [']'] = '&#93;', ['\n'] = ' ' } ); end --[[--------------------------< E X T E R N A L _ L I N K >---------------------------------------------------- Format an external link with error checking ]] local function external_link( URL, label, source, access) local error_str = ""; local domain; local path; local base_url; if not utilities.is_set ( label ) then label = URL; if utilities.is_set ( source ) then error_str = utilities.set_message ( 'err_bare_url_missing_title', { utilities.wrap_style ('parameter', source) }, false, " " ); else error( cfg.messages["bare_url_no_origin"] ); end end if not check_url( URL ) then error_str = utilities.set_message ( 'err_bad_url', {utilities.wrap_style ('parameter', source)}, false, " " ) .. error_str; end domain, path = URL:match ('^([/%.%-%+:%a%d]+)([/%?#].*)$'); -- split the URL into scheme plus domain and path if path then -- if there is a path portion path = path:gsub ('[%[%]]', {['['] = '%5b', [']'] = '%5d'}); -- replace '[' and ']' with their percent-encoded values URL = table.concat ({domain, path}); -- and reassemble end base_url = table.concat({ "[", URL, " ", safe_for_url (label), "]" }); -- assemble a wiki-markup URL if utilities.is_set (access) then -- access level (subscription, registration, limited) base_url = utilities.substitute (cfg.presentation['ext-link-access-signal'], {cfg.presentation[access].class, cfg.presentation[access].title, base_url}); -- add the appropriate icon end return table.concat ({base_url, error_str}); end --[[--------------------------< D E P R E C A T E D _ P A R A M E T E R >-------------------------------------- Categorize and emit an error message when the citation contains one or more deprecated parameters. The function includes the offending parameter name to the error message. Only one error message is emitted regardless of the number of deprecated parameters in the citation. added_deprecated_cat is a Boolean declared in page scope variables above ]] local function deprecated_parameter(name) if not added_deprecated_cat then added_deprecated_cat = true; -- note that we've added this category table.insert( z.message_tail, { utilities.set_message ( 'err_deprecated_params', {name}, true ) } ); -- add error message end end --[=[-------------------------< K E R N _ Q U O T E S >-------------------------------------------------------- Apply kerning to open the space between the quote mark provided by the module and a leading or trailing quote mark contained in a |title= or |chapter= parameter's value. This function will positive kern either single or double quotes: "'Unkerned title with leading and trailing single quote marks'" " 'Kerned title with leading and trailing single quote marks' " (in real life the kerning isn't as wide as this example) Double single quotes (italic or bold wiki-markup) are not kerned. Replaces Unicode quote marks in plain text or in the label portion of a [[L|D]] style wikilink with typewriter quote marks regardless of the need for kerning. Unicode quote marks are not replaced in simple [[D]] wikilinks. Call this function for chapter titles, for website titles, etc.; not for book titles. ]=] local function kern_quotes (str) local cap = ''; local cap2 = ''; local wl_type, label, link; wl_type, label, link = utilities.is_wikilink (str); -- wl_type is: 0, no wl (text in label variable); 1, [[D]]; 2, [[L|D]] if 1 == wl_type then -- [[D]] simple wikilink with or without quote marks if mw.ustring.match (str, '%[%[[\"“”\'‘’].+[\"“”\'‘’]%]%]') then -- leading and trailing quote marks str = utilities.substitute (cfg.presentation['kern-wl-both'], str); elseif mw.ustring.match (str, '%[%[[\"“”\'‘’].+%]%]') then -- leading quote marks str = utilities.substitute (cfg.presentation['kern-wl-left'], str); elseif mw.ustring.match (str, '%[%[.+[\"“”\'‘’]%]%]') then -- trailing quote marks str = utilities.substitute (cfg.presentation['kern-wl-right'], str); end else -- plain text or [[L|D]]; text in label variable label = mw.ustring.gsub (label, '[“”]', '\"'); -- replace “” (U+201C & U+201D) with " (typewriter double quote mark) label = mw.ustring.gsub (label, '[‘’]', '\''); -- replace ‘’ (U+2018 & U+2019) with ' (typewriter single quote mark) cap, cap2 = mw.ustring.match (label, "^([\"\'])([^\'].+)"); -- match leading double or single quote but not doubled single quotes (italic markup) if utilities.is_set (cap) then label = utilities.substitute (cfg.presentation['kern-left'], {cap, cap2}); end cap, cap2 = mw.ustring.match (label, "^(.+[^\'])([\"\'])$") -- match trailing double or single quote but not doubled single quotes (italic markup) if utilities.is_set (cap) then label = utilities.substitute (cfg.presentation['kern-right'], {cap, cap2}); end if 2 == wl_type then str = utilities.make_wikilink (link, label); -- reassemble the wikilink else str = label; end end return str; end --[[--------------------------< F O R M A T _ S C R I P T _ V A L U E >---------------------------------------- |script-title= holds title parameters that are not written in Latin-based scripts: Chinese, Japanese, Arabic, Hebrew, etc. These scripts should not be italicized and may be written right-to-left. The value supplied by |script-title= is concatenated onto Title after Title has been wrapped in italic markup. Regardless of language, all values provided by |script-title= are wrapped in <bdi>...</bdi> tags to isolate RTL languages from the English left to right. |script-title= provides a unique feature. The value in |script-title= may be prefixed with a two-character ISO 639-1 language code and a colon: |script-title=ja:*** *** (where * represents a Japanese character) Spaces between the two-character code and the colon and the colon and the first script character are allowed: |script-title=ja : *** *** |script-title=ja: *** *** |script-title=ja :*** *** Spaces preceding the prefix are allowed: |script-title = ja:*** *** The prefix is checked for validity. If it is a valid ISO 639-1 language code, the lang attribute (lang="ja") is added to the <bdi> tag so that browsers can know the language the tag contains. This may help the browser render the script more correctly. If the prefix is invalid, the lang attribute is not added. At this time there is no error message for this condition. Supports |script-title=, |script-chapter=, |script-<periodical>= ]] local function format_script_value (script_value, script_param) local lang=''; -- initialize to empty string local name; if script_value:match('^%l%l%l?%s*:') then -- if first 3 or 4 non-space characters are script language prefix lang = script_value:match('^(%l%l%l?)%s*:%s*%S.*'); -- get the language prefix or nil if there is no script if not utilities.is_set (lang) then table.insert( z.message_tail, { utilities.set_message ( 'err_script_parameter', {script_param, 'missing title part'}, true ) } ); -- prefix without 'title'; add error message return ''; -- script_value was just the prefix so return empty string end -- if we get this far we have prefix and script name = cfg.lang_code_remap[lang] or mw.language.fetchLanguageName( lang, cfg.this_wiki_code ); -- get language name so that we can use it to categorize if utilities.is_set (name) then -- is prefix a proper ISO 639-1 language code? script_value = script_value:gsub ('^%l+%s*:%s*', ''); -- strip prefix from script -- is prefix one of these language codes? if utilities.in_array (lang, cfg.script_lang_codes) then utilities.add_prop_cat ('script_with_name', {name, lang}) else table.insert( z.message_tail, { utilities.set_message ( 'err_script_parameter', {script_param, 'unknown language code'}, true ) } ); -- unknown script-language; add error message end lang = ' lang="' .. lang .. '" '; -- convert prefix into a lang attribute else table.insert( z.message_tail, { utilities.set_message ( 'err_script_parameter', {script_param, 'invalid language code'}, true ) } ); -- invalid language code; add error message lang = ''; -- invalid so set lang to empty string end else table.insert( z.message_tail, { utilities.set_message ( 'err_script_parameter', {script_param, 'missing prefix'}, true ) } ); -- no language code prefix; add error message end script_value = utilities.substitute (cfg.presentation['bdi'], {lang, script_value}); -- isolate in case script is RTL return script_value; end --[[--------------------------< S C R I P T _ C O N C A T E N A T E >------------------------------------------ Initially for |title= and |script-title=, this function concatenates those two parameter values after the script value has been wrapped in <bdi> tags. ]] local function script_concatenate (title, script, script_param) if utilities.is_set (script) then script = format_script_value (script, script_param); -- <bdi> tags, lang attribute, categorization, etc.; returns empty string on error if utilities.is_set (script) then title = title .. ' ' .. script; -- concatenate title and script title end end return title; end --[[--------------------------< W R A P _ M S G >-------------------------------------------------------------- Applies additional message text to various parameter values. Supplied string is wrapped using a message_list configuration taking one argument. Supports lower case text for {{citation}} templates. Additional text taken from citation_config.messages - the reason this function is similar to but separate from wrap_style(). ]] local function wrap_msg (key, str, lower) if not utilities.is_set ( str ) then return ""; end if true == lower then local msg; msg = cfg.messages[key]:lower(); -- set the message to lower case before return utilities.substitute ( msg, str ); -- including template text else return utilities.substitute ( cfg.messages[key], str ); end end --[[--------------------------< W I K I S O U R C E _ U R L _ M A K E >---------------------------------------- Makes a Wikisource URL from Wikisource interwiki-link. Returns the URL and appropriate label; nil else. str is the value assigned to |chapter= (or aliases) or |title= or |title-link= ]] local function wikisource_url_make (str) local wl_type, D, L; local ws_url, ws_label; local wikisource_prefix = table.concat ({'https://', cfg.this_wiki_code, '.wikisource.org/wiki/'}); wl_type, D, L = utilities.is_wikilink (str); -- wl_type is 0 (not a wikilink), 1 (simple wikilink), 2 (complex wikilink) if 0 == wl_type then -- not a wikilink; might be from |title-link= str = D:match ('^[Ww]ikisource:(.+)') or D:match ('^[Ss]:(.+)'); -- article title from interwiki link with long-form or short-form namespace if utilities.is_set (str) then ws_url = table.concat ({ -- build a Wikisource URL wikisource_prefix, -- prefix str, -- article title }); ws_label = str; -- label for the URL end elseif 1 == wl_type then -- simple wikilink: [[Wikisource:ws article]] str = D:match ('^[Ww]ikisource:(.+)') or D:match ('^[Ss]:(.+)'); -- article title from interwiki link with long-form or short-form namespace if utilities.is_set (str) then ws_url = table.concat ({ -- build a Wikisource URL wikisource_prefix, -- prefix str, -- article title }); ws_label = str; -- label for the URL end elseif 2 == wl_type then -- non-so-simple wikilink: [[Wikisource:ws article|displayed text]] ([[L|D]]) str = L:match ('^[Ww]ikisource:(.+)') or L:match ('^[Ss]:(.+)'); -- article title from interwiki link with long-form or short-form namespace if utilities.is_set (str) then ws_label = D; -- get ws article name from display portion of interwiki link ws_url = table.concat ({ -- build a Wikisource URL wikisource_prefix, -- prefix str, -- article title without namespace from link portion of wikilink }); end end if ws_url then ws_url = mw.uri.encode (ws_url, 'WIKI'); -- make a usable URL ws_url = ws_url:gsub ('%%23', '#'); -- undo percent encoding of fragment marker end return ws_url, ws_label, L or D; -- return proper URL or nil and a label or nil end --[[--------------------------< F O R M A T _ P E R I O D I C A L >-------------------------------------------- Format the three periodical parameters: |script-<periodical>=, |<periodical>=, and |trans-<periodical>= into a single Periodical meta- parameter. ]] local function format_periodical (script_periodical, script_periodical_source, periodical, trans_periodical) local periodical_error = ''; if not utilities.is_set (periodical) then periodical = ''; -- to be safe for concatenation else periodical = utilities.wrap_style ('italic-title', periodical); -- style end periodical = script_concatenate (periodical, script_periodical, script_periodical_source); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped if utilities.is_set (trans_periodical) then trans_periodical = utilities.wrap_style ('trans-italic-title', trans_periodical); if utilities.is_set (periodical) then periodical = periodical .. ' ' .. trans_periodical; else -- here when trans-periodical without periodical or script-periodical periodical = trans_periodical; periodical_error = ' ' .. utilities.set_message ('err_trans_missing_title', {'periodical'}); end end return periodical .. periodical_error; end --[[--------------------------< F O R M A T _ C H A P T E R _ T I T L E >-------------------------------------- Format the four chapter parameters: |script-chapter=, |chapter=, |trans-chapter=, and |chapter-url= into a single chapter meta- parameter (chapter_url_source used for error messages). ]] local function format_chapter_title (script_chapter, script_chapter_source, chapter, chapter_source, trans_chapter, trans_chapter_source, chapter_url, chapter_url_source, no_quotes, access) local chapter_error = ''; local ws_url, ws_label, L = wikisource_url_make (chapter); -- make a wikisource URL and label from a wikisource interwiki link if ws_url then ws_label = ws_label:gsub ('_', ''); -- replace underscore separaters with space characters chapter = ws_label; end if not utilities.is_set (chapter) then chapter = ''; -- to be safe for concatenation else if false == no_quotes then chapter = kern_quotes (chapter); -- if necessary, separate chapter title's leading and trailing quote marks from module provided quote marks chapter = utilities.wrap_style ('quoted-title', chapter); end end chapter = script_concatenate (chapter, script_chapter, script_chapter_source); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped if utilities.is_set (chapter_url) then chapter = external_link (chapter_url, chapter, chapter_url_source, access); -- adds bare_url_missing_title error if appropriate elseif ws_url then chapter = external_link (ws_url, chapter .. '&nbsp;', 'ws link in chapter'); -- adds bare_url_missing_title error if appropriate; space char to move icon away from chap text; TODO: better way to do this? chapter = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, chapter}); end if utilities.is_set (trans_chapter) then trans_chapter = utilities.wrap_style ('trans-quoted-title', trans_chapter); if utilities.is_set (chapter) then chapter = chapter .. ' ' .. trans_chapter; else -- here when trans_chapter without chapter or script-chapter chapter = trans_chapter; chapter_source = trans_chapter_source:match ('trans%-?(.+)'); -- when no chapter, get matching name from trans-<param> chapter_error = ' ' .. utilities.set_message ('err_trans_missing_title', {chapter_source}); end end return chapter .. chapter_error; end --[[--------------------------< H A S _ I N V I S I B L E _ C H A R S >---------------------------------------- This function searches a parameter's value for non-printable or invisible characters. The search stops at the first match. This function will detect the visible replacement character when it is part of the Wikisource. Detects but ignores nowiki and math stripmarkers. Also detects other named stripmarkers (gallery, math, pre, ref) and identifies them with a slightly different error message. See also coins_cleanup(). Output of this function is an error message that identifies the character or the Unicode group, or the stripmarker that was detected along with its position (or, for multi-byte characters, the position of its first byte) in the parameter value. ]] local function has_invisible_chars (param, v) local position = ''; -- position of invisible char or starting position of stripmarker local dummy; -- end of matching string; not used but required to hold end position when a capture is returned local capture; -- used by stripmarker detection to hold name of the stripmarker local i = 1; local stripmarker, apostrophe; capture = string.match (v, '[%w%p ]*'); -- test for values that are simple ASCII text and bypass other tests if true if capture == v then -- if same there are no Unicode characters return; end while cfg.invisible_chars[i] do local char = cfg.invisible_chars[i][1] -- the character or group name local pattern = cfg.invisible_chars[i][2] -- the pattern used to find it position, dummy, capture = mw.ustring.find (v, pattern) -- see if the parameter value contains characters that match the pattern if position and (char == 'zero width joiner') then -- if we found a zero-width joiner character if mw.ustring.find (v, cfg.indic_script) then -- it's ok if one of the Indic scripts position = nil; -- unset position end end if position then if 'nowiki' == capture or 'math' == capture or -- nowiki and math stripmarkers (not an error condition) ('templatestyles' == capture and utilities.in_array (param, {'id', 'quote'})) then -- templatestyles stripmarker allowed in these parameters stripmarker = true; -- set a flag elseif true == stripmarker and 'delete' == char then -- because stripmakers begin and end with the delete char, assume that we've found one end of a stripmarker position = nil; -- unset else local err_msg; if capture then err_msg = capture .. ' ' .. char; else err_msg = char .. ' ' .. 'character'; end table.insert( z.message_tail, { utilities.set_message ( 'err_invisible_char', {err_msg, utilities.wrap_style ('parameter', param), position}, true ) } ); -- add error message return; -- and done with this parameter end end i = i+1; -- bump our index end end --[[--------------------------< A R G U M E N T _ W R A P P E R >---------------------------------------------- Argument wrapper. This function provides support for argument mapping defined in the configuration file so that multiple names can be transparently aliased to single internal variable. ]] local function argument_wrapper ( args ) local origin = {}; return setmetatable({ ORIGIN = function ( self, k ) local dummy = self[k]; --force the variable to be loaded. return origin[k]; end }, { __index = function ( tbl, k ) if origin[k] ~= nil then return nil; end local args, list, v = args, cfg.aliases[k]; if type( list ) == 'table' then v, origin[k] = utilities.select_one ( args, list, 'err_redundant_parameters' ); if origin[k] == nil then origin[k] = ''; -- Empty string, not nil end elseif list ~= nil then v, origin[k] = args[list], list; else -- maybe let through instead of raising an error? -- v, origin[k] = args[k], k; error( cfg.messages['unknown_argument_map'] .. ': ' .. k); end -- Empty strings, not nil; if v == nil then v = ''; origin[k] = ''; end tbl = rawset( tbl, k, v ); return v; end, }); end --[[--------------------------< N O W R A P _ D A T E >-------------------------------------------------------- When date is YYYY-MM-DD format wrap in nowrap span: <span ...>YYYY-MM-DD</span>. When date is DD MMMM YYYY or is MMMM DD, YYYY then wrap in nowrap span: <span ...>DD MMMM</span> YYYY or <span ...>MMMM DD,</span> YYYY DOES NOT yet support MMMM YYYY or any of the date ranges. ]] local function nowrap_date (date) local cap = ''; local cap2 = ''; if date:match("^%d%d%d%d%-%d%d%-%d%d$") then date = utilities.substitute (cfg.presentation['nowrap1'], date); elseif date:match("^%a+%s*%d%d?,%s+%d%d%d%d$") or date:match ("^%d%d?%s*%a+%s+%d%d%d%d$") then cap, cap2 = string.match (date, "^(.*)%s+(%d%d%d%d)$"); date = utilities.substitute (cfg.presentation['nowrap2'], {cap, cap2}); end return date; end --[[--------------------------< S E T _ T I T L E T Y P E >---------------------------------------------------- This function sets default title types (equivalent to the citation including |type=<default value>) for those templates that have defaults. Also handles the special case where it is desirable to omit the title type from the rendered citation (|type=none). ]] local function set_titletype (cite_class, title_type) if utilities.is_set (title_type) then if 'none' == cfg.keywords_xlate[title_type] then title_type = ''; -- if |type=none then type parameter not displayed end return title_type; -- if |type= has been set to any other value use that value end return cfg.title_types [cite_class] or ''; -- set template's default title type; else empty string for concatenation end --[[--------------------------< H Y P H E N _ T O _ D A S H >-------------------------------------------------- Converts a hyphen to a dash under certain conditions. The hyphen must separate like items; unlike items are returned unmodified. These forms are modified: letter - letter (A - B) digit - digit (4-5) digit separator digit - digit separator digit (4.1-4.5 or 4-1-4-5) letterdigit - letterdigit (A1-A5) (an optional separator between letter and digit is supported – a.1-a.5 or a-1-a-5) digitletter - digitletter (5a - 5d) (an optional separator between letter and digit is supported – 5.a-5.d or 5-a-5-d) any other forms are returned unmodified. str may be a comma- or semicolon-separated list ]] local function hyphen_to_dash( str ) if not utilities.is_set (str) then return str; end local accept; -- Boolean str, accept = utilities.has_accept_as_written (str); -- remove accept-this-as-written markup when it wraps all of str if accept then return str; -- when markup removed, nothing to do, we're done end str = str:gsub ('&[nm]dash;', {['&ndash;'] = '–', ['&mdash;'] = '—'}); -- replace &mdash; and &ndash; entities with their characters; semicolon mucks up the text.split str = str:gsub ('&#45;', '-'); -- replace HTML numeric entity with hyphen character str = str:gsub ('&nbsp;', ' '); -- replace &nbsp; entity with generic keyboard space character local out = {}; local list = mw.text.split (str, '%s*[,;]%s*'); -- split str at comma or semicolon separators if there are any for _, item in ipairs (list) do -- for each item in the list if mw.ustring.match (item, '^%w*[%.%-]?%w+%s*[%-–—]%s*%w*[%.%-]?%w+$') then -- if a hyphenated range or has endash or emdash separators if item:match ('^%a+[%.%-]?%d+%s*%-%s*%a+[%.%-]?%d+$') or -- letterdigit hyphen letterdigit (optional separator between letter and digit) item:match ('^%d+[%.%-]?%a+%s*%-%s*%d+[%.%-]?%a+$') or -- digitletter hyphen digitletter (optional separator between digit and letter) item:match ('^%d+[%.%-]%d+%s*%-%s*%d+[%.%-]%d+$') or -- digit separator digit hyphen digit separator digit item:match ('^%d+%s*%-%s*%d+$') or -- digit hyphen digit item:match ('^%a+%s*%-%s*%a+$') then -- letter hyphen letter item = item:gsub ('(%w*[%.%-]?%w+)%s*%-%s*(%w*[%.%-]?%w+)', '%1–%2'); -- replace hyphen, remove extraneous space characters else item = mw.ustring.gsub (item, '%s*[–—]%s*', '–'); -- for endash or emdash separated ranges, replace em with en, remove extraneous whitespace end end item = utilities.has_accept_as_written (item); -- remove accept-this-as-written markup when it wraps all of str table.insert (out, item); -- add the (possibly modified) item to the output table end return table.concat (out, ', '); -- concatenate the output table into a comma separated string end --[[--------------------------< S A F E _ J O I N >------------------------------------------------------------ Joins a sequence of strings together while checking for duplicate separation characters. ]] local function safe_join( tbl, duplicate_char ) local f = {}; -- create a function table appropriate to type of 'duplicate character' if 1 == #duplicate_char then -- for single byte ASCII characters use the string library functions f.gsub = string.gsub f.match = string.match f.sub = string.sub else -- for multi-byte characters use the ustring library functions f.gsub = mw.ustring.gsub f.match = mw.ustring.match f.sub = mw.ustring.sub end local str = ''; -- the output string local comp = ''; -- what does 'comp' mean? local end_chr = ''; local trim; for _, value in ipairs( tbl ) do if value == nil then value = ''; end if str == '' then -- if output string is empty str = value; -- assign value to it (first time through the loop) elseif value ~= '' then if value:sub(1, 1) == '<' then -- special case of values enclosed in spans and other markup. comp = value:gsub( "%b<>", "" ); -- remove HTML markup (<span>string</span> -> string) else comp = value; end -- typically duplicate_char is sepc if f.sub(comp, 1, 1) == duplicate_char then -- is first character same as duplicate_char? why test first character? -- Because individual string segments often (always?) begin with terminal punct for the -- preceding segment: 'First element' .. 'sepc next element' .. etc.? trim = false; end_chr = f.sub(str, -1, -1); -- get the last character of the output string -- str = str .. "<HERE(enchr=" .. end_chr .. ")" -- debug stuff? if end_chr == duplicate_char then -- if same as separator str = f.sub(str, 1, -2); -- remove it elseif end_chr == "'" then -- if it might be wiki-markup if f.sub(str, -3, -1) == duplicate_char .. "''" then -- if last three chars of str are sepc'' str = f.sub(str, 1, -4) .. "''"; -- remove them and add back '' elseif f.sub(str, -5, -1) == duplicate_char .. "]]''" then -- if last five chars of str are sepc]]'' trim = true; -- why? why do this and next differently from previous? elseif f.sub(str, -4, -1) == duplicate_char .. "]''" then -- if last four chars of str are sepc]'' trim = true; -- same question end elseif end_chr == "]" then -- if it might be wiki-markup if f.sub(str, -3, -1) == duplicate_char .. "]]" then -- if last three chars of str are sepc]] wikilink trim = true; elseif f.sub(str, -3, -1) == duplicate_char .. '"]' then -- if last three chars of str are sepc"] quoted external link trim = true; elseif f.sub(str, -2, -1) == duplicate_char .. "]" then -- if last two chars of str are sepc] external link trim = true; elseif f.sub(str, -4, -1) == duplicate_char .. "'']" then -- normal case when |url=something & |title=Title. trim = true; end elseif end_chr == " " then -- if last char of output string is a space if f.sub(str, -2, -1) == duplicate_char .. " " then -- if last two chars of str are <sepc><space> str = f.sub(str, 1, -3); -- remove them both end end if trim then if value ~= comp then -- value does not equal comp when value contains HTML markup local dup2 = duplicate_char; if f.match(dup2, "%A" ) then dup2 = "%" .. dup2; end -- if duplicate_char not a letter then escape it value = f.gsub(value, "(%b<>)" .. dup2, "%1", 1 ) -- remove duplicate_char if it follows HTML markup else value = f.sub(value, 2, -1 ); -- remove duplicate_char when it is first character end end end str = str .. value; --add it to the output string end end return str; end --[[--------------------------< I S _ S U F F I X >------------------------------------------------------------ returns true is suffix is properly formed Jr, Sr, or ordinal in the range 1–9. Puncutation not allowed. ]] local function is_suffix (suffix) if utilities.in_array (suffix, {'Jr', 'Sr', 'Jnr', 'Snr', '1st', '2nd', '3rd'}) or suffix:match ('^%dth$') then return true; end return false; end --[[--------------------------< I S _ G O O D _ V A N C _ N A M E >-------------------------------------------- For Vancouver style, author/editor names are supposed to be rendered in Latin (read ASCII) characters. When a name uses characters that contain diacritical marks, those characters are to converted to the corresponding Latin character. When a name is written using a non-Latin alphabet or logogram, that name is to be transliterated into Latin characters. These things are not currently possible in this module so are left to the editor to do. This test allows |first= and |last= names to contain any of the letters defined in the four Unicode Latin character sets [http://www.unicode.org/charts/PDF/U0000.pdf C0 Controls and Basic Latin] 0041–005A, 0061–007A [http://www.unicode.org/charts/PDF/U0080.pdf C1 Controls and Latin-1 Supplement] 00C0–00D6, 00D8–00F6, 00F8–00FF [http://www.unicode.org/charts/PDF/U0100.pdf Latin Extended-A] 0100–017F [http://www.unicode.org/charts/PDF/U0180.pdf Latin Extended-B] 0180–01BF, 01C4–024F |lastn= also allowed to contain hyphens, spaces, and apostrophes. (http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35029/) |firstn= also allowed to contain hyphens, spaces, apostrophes, and periods This original test: if nil == mw.ustring.find (last, "^[A-Za-zÀ-ÖØ-öø-ƿDŽ-ɏ%-%s%']*$") or nil == mw.ustring.find (first, "^[A-Za-zÀ-ÖØ-öø-ƿDŽ-ɏ%-%s%'%.]+[2-6%a]*$") then was written outside of the code editor and pasted here because the code editor gets confused between character insertion point and cursor position. The test has been rewritten to use decimal character escape sequence for the individual bytes of the Unicode characters so that it is not necessary to use an external editor to maintain this code. \195\128-\195\150 – À-Ö (U+00C0–U+00D6 – C0 controls) \195\152-\195\182 – Ø-ö (U+00D8-U+00F6 – C0 controls) \195\184-\198\191 – ø-ƿ (U+00F8-U+01BF – C0 controls, Latin extended A & B) \199\132-\201\143 – DŽ-ɏ (U+01C4-U+024F – Latin extended B) ]] local function is_good_vanc_name (last, first, suffix) if not suffix then if first:find ('[,%s]') then -- when there is a space or comma, might be first name/initials + generational suffix first = first:match ('(.-)[,%s]+'); -- get name/initials suffix = first:match ('[,%s]+(.+)$'); -- get generational suffix end end if utilities.is_set (suffix) then if not is_suffix (suffix) then add_vanc_error (cfg.err_msg_supl.suffix); return false; -- not a name with an appropriate suffix end end if nil == mw.ustring.find (last, "^[A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143%-%s%']*$") or nil == mw.ustring.find (first, "^[A-Za-z\195\128-\195\150\195\152-\195\182\195\184-\198\191\199\132-\201\143%-%s%'%.]*$") then add_vanc_error (cfg.err_msg_supl['non-Latin char']); return false; -- not a string of Latin characters; Vancouver requires Romanization end; return true; end --[[--------------------------< R E D U C E _ T O _ I N I T I A L S >------------------------------------------ Attempts to convert names to initials in support of |name-list-style=vanc. Names in |firstn= may be separated by spaces or hyphens, or for initials, a period. See http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35062/. Vancouver style requires family rank designations (Jr, II, III, etc.) to be rendered as Jr, 2nd, 3rd, etc. See http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35085/. This code only accepts and understands generational suffix in the Vancouver format because Roman numerals look like, and can be mistaken for, initials. This function uses ustring functions because firstname initials may be any of the Unicode Latin characters accepted by is_good_vanc_name (). ]] local function reduce_to_initials(first) local name, suffix = mw.ustring.match(first, "^(%u+) ([%dJS][%drndth]+)$"); if not name then -- if not initials and a suffix name = mw.ustring.match(first, "^(%u+)$"); -- is it just initials? end if name then -- if first is initials with or without suffix if 3 > mw.ustring.len (name) then -- if one or two initials if suffix then -- if there is a suffix if is_suffix (suffix) then -- is it legitimate? return first; -- one or two initials and a valid suffix so nothing to do else add_vanc_error (cfg.err_msg_supl.suffix); -- one or two initials with invalid suffix so error message return first; -- and return first unmolested end else return first; -- one or two initials without suffix; nothing to do end end end -- if here then name has 3 or more uppercase letters so treat them as a word local initials, names = {}, {}; -- tables to hold name parts and initials local i = 1; -- counter for number of initials names = mw.text.split (first, '[%s,]+'); -- split into a table of names and possible suffix while names[i] do -- loop through the table if 1 < i and names[i]:match ('[%dJS][%drndth]+%.?$') then -- if not the first name, and looks like a suffix (may have trailing dot) names[i] = names[i]:gsub ('%.', ''); -- remove terminal dot if present if is_suffix (names[i]) then -- if a legitimate suffix table.insert (initials, ' ' .. names[i]); -- add a separator space, insert at end of initials table break; -- and done because suffix must fall at the end of a name end -- no error message if not a suffix; possibly because of Romanization end if 3 > i then table.insert (initials, mw.ustring.sub(names[i], 1, 1)); -- insert the initial at end of initials table end i = i+1; -- bump the counter end return table.concat(initials) -- Vancouver format does not include spaces. end --[[--------------------------< L I S T _ P E O P L E >------------------------------------------------------- Formats a list of people (e.g. authors, contributors, editors, interviewers, translators) names in the list will be linked when |<name>-link= has a value |<name>-mask- does NOT have a value; masked names are presumed to have been rendered previously so should have been linked there when |<name>-mask=0, the associated name is not rendered ]] local function list_people (control, people, etal) local sep; local namesep; local format = control.format; local maximum = control.maximum; local lastauthoramp = control.lastauthoramp; -- TODO: delete after deprecation local name_list = {}; if 'vanc' == format then -- Vancouver-like name styling? sep = cfg.presentation['sep_nl_vanc']; -- name-list separator between names is a comma namesep = cfg.presentation['sep_name_vanc']; -- last/first separator is a space lastauthoramp = nil; -- TODO: delete after deprecation -- unset because isn't used by Vancouver style else sep = cfg.presentation['sep_nl']; -- name-list separator between names is a semicolon namesep = cfg.presentation['sep_name']; -- last/first separator is <comma><space> end if sep:sub (-1, -1) ~= " " then sep = sep .. " " end if utilities.is_set (maximum) and maximum < 1 then return "", 0; end -- returned 0 is for EditorCount; not used for other names for i, person in ipairs (people) do if utilities.is_set (person.last) then local mask = person.mask; local one; local sep_one = sep; if utilities.is_set (maximum) and i > maximum then etal = true; break; end if mask then local n = tonumber (mask); -- convert to a number if it can be converted; nil else if n then one = 0 ~= n and string.rep("&mdash;",n) or nil; -- make a string of (n > 0) mdashes, nil else, to replace name person.link = nil; -- don't create link to name if name is replaces with mdash string or has been set nil else one = mask; -- replace name with mask text (must include name-list separator) sep_one = " "; -- modify name-list separator end else one = person.last; -- get surname local first = person.first -- get given name if utilities.is_set (first) then if ("vanc" == format) then -- if Vancouver format one = one:gsub ('%.', ''); -- remove periods from surnames (http://www.ncbi.nlm.nih.gov/books/NBK7271/box/A35029/) if not person.corporate and is_good_vanc_name (one, first) then -- and name is all Latin characters; corporate authors not tested first = reduce_to_initials (first); -- attempt to convert first name(s) to initials end end one = one .. namesep .. first; end end if utilities.is_set (person.link) then one = utilities.make_wikilink (person.link, one); -- link author/editor end if one then -- if <one> has a value (name, mdash replacement, or mask text replacement) table.insert (name_list, one); -- add it to the list of names table.insert (name_list, sep_one); -- add the proper name-list separator end end end local count = #name_list / 2; -- (number of names + number of separators) divided by 2 if 0 < count then if 1 < count and not etal then if 'amp' == format or utilities.is_set (lastauthoramp) then -- TODO: delete lastauthoramp after deprecation name_list[#name_list-2] = " & "; -- replace last separator with ampersand text elseif 'and' == format then if 2 == count then name_list[#name_list-2] = cfg.presentation.sep_nl_and; -- replace last separator with 'and' text else name_list[#name_list-2] = cfg.presentation.sep_nl_end; -- replace last separator with '(sep) and' text end end end name_list[#name_list] = nil; -- erase the last separator end local result = table.concat (name_list); -- construct list if etal and utilities.is_set (result) then -- etal may be set by |display-authors=etal but we might not have a last-first list result = result .. sep .. ' ' .. cfg.messages['et al']; -- we've got a last-first list and etal so add et al. end return result, count; -- return name-list string and count of number of names (count used for editor names only) end --[[--------------------------< A N C H O R _ I D >------------------------------------------------------------ Generates a CITEREF anchor ID if we have at least one name or a date. Otherwise returns an empty string. namelist is one of the contributor-, author-, or editor-name lists chosen in that order. year is Year or anchor_year. ]] local function anchor_id (namelist, year) local names={}; -- a table for the one to four names and year for i,v in ipairs (namelist) do -- loop through the list and take up to the first four last names names[i] = v.last if i == 4 then break end -- if four then done end table.insert (names, year); -- add the year at the end local id = table.concat(names); -- concatenate names and year for CITEREF id if utilities.is_set (id) then -- if concatenation is not an empty string return "CITEREF" .. id; -- add the CITEREF portion else return ''; -- return an empty string; no reason to include CITEREF id in this citation end end --[[--------------------------< N A M E _ H A S _ E T A L >---------------------------------------------------- Evaluates the content of name parameters (author, editor, etc.) for variations on the theme of et al. If found, the et al. is removed, a flag is set to true and the function returns the modified name and the flag. This function never sets the flag to false but returns it's previous state because it may have been set by previous passes through this function or by the associated |display-<names>=etal parameter ]] local function name_has_etal (name, etal, nocat, param) if utilities.is_set (name) then -- name can be nil in which case just return local patterns = cfg.et_al_patterns; --get patterns from configuration for _, pattern in ipairs (patterns) do -- loop through all of the patterns if name:match (pattern) then -- if this 'et al' pattern is found in name name = name:gsub (pattern, ''); -- remove the offending text etal = true; -- set flag (may have been set previously here or by |display-<names>=etal) if not nocat then -- no categorization for |vauthors= table.insert( z.message_tail, {utilities.set_message ('err_etal', {param})}); -- and set an error if not added end end end end return name, etal; end --[[--------------------------< N A M E _ I S _ N U M E R I C >------------------------------------------------ Add maint cat when name parameter value does not contain letters. Does not catch mixed alphanumeric names so |last=A. Green (1922-1987) does not get caught in the current version of this test but |first=(1888) is caught. returns nothing ]] local function name_is_numeric (name, list_name) if utilities.is_set (name) then if mw.ustring.match (name, '^[%A]+$') then -- when name does not contain any letters utilities.set_message ('maint_numeric_names', cfg.special_case_translation [list_name]); -- add a maint cat for this template end end end --[[--------------------------< N A M E _ H A S _ E D _ M A R K U P >------------------------------------------ Evaluates the content of author and editor parameters for extraneous editor annotations: ed, ed., eds, (Ed.), etc. These annotation do not belong in author parameters and are redundant in editor parameters. If found, the function adds the editor markup maintenance category. returns nothing ]] local function name_has_ed_markup (name, list_name) local patterns = cfg.editor_markup_patterns; -- get patterns from configuration if utilities.is_set (name) then for _, pattern in ipairs (patterns) do -- spin through patterns table and if name:match (pattern) then utilities.set_message ('maint_extra_text_names', cfg.special_case_translation [list_name]); -- add a maint cat for this template break; end end end end --[[--------------------------< N A M E _ H A S _ M U L T _ N A M E S >---------------------------------------- Evaluates the content of last/surname (authors etc.) parameters for multiple names. Multiple names are indicated if there is more than one comma or any semicolons. If found, the function adds the multiple name maintenance category. returns nothing ]] local function name_has_mult_names (name, list_name) local _, commas, semicolons; if utilities.is_set (name) then _, commas = name:gsub (',', ''); -- count the number of commas _, semicolons = name:gsub (';', ''); -- count the number of semicolons if 1 < commas or 0 < semicolons then utilities.set_message ('maint_mult_names', cfg.special_case_translation [list_name]); -- add a maint message end end end --[[--------------------------< N A M E _ C H E C K S >-------------------------------------------------------- This function calls various name checking functions used to validate the content of the various name-holding parameters. ]] local function name_checks (last, first, list_name) local accept_name; if utilities.is_set (last) then last, accept_name = utilities.has_accept_as_written (last); -- remove accept-this-as-written markup when it wraps all of <last> if not accept_name then -- <last> not wrapped in accept-as-written markup name_has_mult_names (last, list_name); -- check for multiple names in the parameter (last only) name_has_ed_markup (last, list_name); -- check for extraneous 'editor' annotation name_is_numeric (last, list_name); -- check for names that are compsed of digits and punctuation end end if utilities.is_set (first) then first, accept_name = utilities.has_accept_as_written (first); -- remove accept-this-as-written markup when it wraps all of <first> if not accept_name then -- <first> not wrapped in accept-as-written markup name_has_ed_markup (first, list_name); -- check for extraneous 'editor' annotation name_is_numeric (first, list_name); -- check for names that are compsed of digits and punctuation end end return last, first; -- done end --[[--------------------------< E X T R A C T _ N A M E S >---------------------------------------------------- Gets name list from the input arguments Searches through args in sequential order to find |lastn= and |firstn= parameters (or their aliases), and their matching link and mask parameters. Stops searching when both |lastn= and |firstn= are not found in args after two sequential attempts: found |last1=, |last2=, and |last3= but doesn't find |last4= and |last5= then the search is done. This function emits an error message when there is a |firstn= without a matching |lastn=. When there are 'holes' in the list of last names, |last1= and |last3= are present but |last2= is missing, an error message is emitted. |lastn= is not required to have a matching |firstn=. When an author or editor parameter contains some form of 'et al.', the 'et al.' is stripped from the parameter and a flag (etal) returned that will cause list_people() to add the static 'et al.' text from Module:Citation/CS1/Configuration. This keeps 'et al.' out of the template's metadata. When this occurs, the page is added to a maintenance category. ]] local function extract_names(args, list_name) local names = {}; -- table of names local last; -- individual name components local first; local link; local mask; local i = 1; -- loop counter/indexer local n = 1; -- output table indexer local count = 0; -- used to count the number of times we haven't found a |last= (or alias for authors, |editor-last or alias for editors) local etal = false; -- return value set to true when we find some form of et al. in an author parameter local last_alias, first_alias, link_alias; -- selected parameter aliases used in error messaging while true do last, last_alias = utilities.select_one ( args, cfg.aliases[list_name .. '-Last'], 'err_redundant_parameters', i ); -- search through args for name components beginning at 1 first, first_alias = utilities.select_one ( args, cfg.aliases[list_name .. '-First'], 'err_redundant_parameters', i ); link, link_alias = utilities.select_one ( args, cfg.aliases[list_name .. '-Link'], 'err_redundant_parameters', i ); mask = utilities.select_one ( args, cfg.aliases[list_name .. '-Mask'], 'err_redundant_parameters', i ); last, etal = name_has_etal (last, etal, false, last_alias); -- find and remove variations on et al. first, etal = name_has_etal (first, etal, false, first_alias); -- find and remove variations on et al. last, first = name_checks (last, first, list_name); -- multiple names, extraneous annotation, etc. checks if first and not last then -- if there is a firstn without a matching lastn local alias = first_alias:find ('given', 1, true) and 'given' or 'first'; -- get first or given form of the alias table.insert (z.message_tail, { utilities.set_message ( 'err_first_missing_last', { first_alias, -- param name of alias missing its mate first_alias:gsub (alias, {['first'] = 'last', ['given'] = 'surname'}), -- make param name appropriate to the alias form }, true ) } ); -- add this error message elseif not first and not last then -- if both firstn and lastn aren't found, are we done? count = count + 1; -- number of times we haven't found last and first if 2 <= count then -- two missing names and we give up break; -- normal exit or there is a two-name hole in the list; can't tell which end else -- we have last with or without a first local result; link = link_title_ok (link, link_alias, last, last_alias); -- check for improper wiki-markup if first then link = link_title_ok (link, link_alias, first, first_alias); -- check for improper wiki-markup end names[n] = {last = last, first = first, link = link, mask = mask, corporate = false}; -- add this name to our names list (corporate for |vauthors= only) n = n + 1; -- point to next location in the names table if 1 == count then -- if the previous name was missing table.insert( z.message_tail, { utilities.set_message ( 'err_missing_name', {list_name:match ("(%w+)List"):lower(), i - 1}, true ) } ); -- add this error message end count = 0; -- reset the counter, we're looking for two consecutive missing names end i = i + 1; -- point to next args location end return names, etal; -- all done, return our list of names and the etal flag end --[[--------------------------< G E T _ I S O 6 3 9 _ C O D E >------------------------------------------------ Validates language names provided in |language= parameter if not an ISO639-1 or 639-2 code. Returns the language name and associated two- or three-character code. Because case of the source may be incorrect or different from the case that WikiMedia uses, the name comparisons are done in lower case and when a match is found, the Wikimedia version (assumed to be correct) is returned along with the code. When there is no match, we return the original language name string. mw.language.fetchLanguageNames(<local wiki language>, 'all') returns a list of languages that in some cases may include extensions. For example, code 'cbk-zam' and its associated name 'Chavacano de Zamboanga' (MediaWiki does not support code 'cbk' or name 'Chavacano'. Most (all?) of these languages are not used a 'language' codes per se, rather they are used as sub-domain names: cbk-zam.wikipedia.org. A list of language names and codes supported by fetchLanguageNames() can be found at Template:Citation Style documentation/language/doc Names that are included in the list will be found if that name is provided in the |language= parameter. For example, if |language=Chavacano de Zamboanga, that name will be found with the associated code 'cbk-zam'. When names are found and the associated code is not two or three characters, this function returns only the WikiMedia language name. Some language names have multiple entries under different codes: Aromanian has code rup and code roa-rup When this occurs, this function returns the language name and the 2- or 3-character code Adapted from code taken from Module:Check ISO 639-1. ]] local function get_iso639_code (lang, this_wiki_code) if cfg.lang_name_remap[lang:lower()] then -- if there is a remapped name (because MediaWiki uses something that we don't think is correct) return cfg.lang_name_remap[lang:lower()][1], cfg.lang_name_remap[lang:lower()][2]; -- for this language 'name', return a possibly new name and appropriate code end local ietf_code; -- because some languages have both IETF-like codes and ISO 639-like codes local ietf_name; local langlc = mw.ustring.lower (lang); -- lower-case version for comparisons for code, name in pairs (cfg.languages) do -- scan the list to see if we can find our language if langlc == mw.ustring.lower (name) then if 2 == #code or 3 == #code then -- two- or three-character codes only; IETF extensions not supported return name, code; -- so return the name and the code end ietf_code = code; -- remember that we found an IETF-like code and save its name ietf_name = name; -- but keep looking for a 2- or 3-char code end end -- didn't find name with 2- or 3-char code; if IETF-like code found return return ietf_code and ietf_name or lang; -- associated name; return original language text else end --[[--------------------------< L A N G U A G E _ P A R A M E T E R >------------------------------------------ Gets language name from a provided two- or three-character ISO 639 code. If a code is recognized by MediaWiki, use the returned name; if not, then use the value that was provided with the language parameter. When |language= contains a recognized language (either code or name), the page is assigned to the category for that code: Category:Norwegian-language sources (no). For valid three-character code languages, the page is assigned to the single category for '639-2' codes: Category:CS1 ISO 639-2 language sources. Languages that are the same as the local wiki are not categorized. MediaWiki does not recognize three-character equivalents of two-character codes: code 'ar' is recognized but code 'ara' is not. This function supports multiple languages in the form |language=nb, French, th where the language names or codes are separated from each other by commas with optional space characters. ]] local function language_parameter (lang) local code; -- the two- or three-character language code local name; -- the language name local language_list = {}; -- table of language names to be rendered local names_table = {}; -- table made from the value assigned to |language= local this_wiki_name = mw.language.fetchLanguageName (cfg.this_wiki_code, cfg.this_wiki_code); -- get this wiki's language name names_table = mw.text.split (lang, '%s*,%s*'); -- names should be a comma separated list for _, lang in ipairs (names_table) do -- reuse lang name = cfg.lang_code_remap[lang:lower()]; -- first see if this is a code that is not supported by MediaWiki but is in remap if name then -- there was a remapped code so if not lang:match ('^%a%a%a?%-x%-%a+$') then -- if not a private IETF tag lang = lang:gsub ('^(%a%a%a?)%-.*', '%1'); -- strip IETF tags from code end else lang = lang:gsub ('^(%a%a%a?)%-.*', '%1'); -- strip any IETF-like tags from code if 2 == lang:len() or 3 == lang:len() then -- if two-or three-character code name = mw.language.fetchLanguageName (lang:lower(), cfg.this_wiki_code); -- get language name if |language= is a proper code end end if utilities.is_set (name) then -- if |language= specified a valid code code = lang:lower(); -- save it else name, code = get_iso639_code (lang, cfg.this_wiki_code); -- attempt to get code from name (assign name here so that we are sure of proper capitalization) end if utilities.is_set (code) then -- only 2- or 3-character codes name = cfg.lang_code_remap[code] or name; -- override wikimedia when they misuse language codes/names if cfg.this_wiki_code ~= code then -- when the language is not the same as this wiki's language if 2 == code:len() then -- and is a two-character code utilities.add_prop_cat ('foreign_lang_source' .. code, {name, code}); -- categorize it; code appended to allow for multiple language categorization else -- or is a recognized language (but has a three-character code) utilities.add_prop_cat ('foreign_lang_source_2' .. code, {code}); -- categorize it differently TODO: support multiple three-character code categories per cs1|2 template end elseif cfg.local_lang_cat_enable then -- when the language and this wiki's language are the same and categorization is enabled utilities.add_prop_cat ('local_lang_source', {name, code}); -- categorize it end else utilities.set_message ('maint_unknown_lang'); -- add maint category if not already added end table.insert (language_list, name); name = ''; -- so we can reuse it end name = utilities.make_sep_list (#language_list, language_list); if this_wiki_name == name then return ''; -- if one language and that language is this wiki's return an empty string (no annotation) end return (" " .. wrap_msg ('language', name)); -- otherwise wrap with '(in ...)' --[[ TODO: should only return blank or name rather than full list so we can clean up the bunched parenthetical elements Language, Type, Format ]] end --[[--------------------------< S E T _ C S 1 _ S T Y L E >---------------------------------------------------- Set style settings for CS1 citation templates. Returns separator and postscript settings At en.wiki, for cs1: ps gets: '.' sep gets: '.' ]] local function set_cs1_style (ps) if not utilities.is_set (ps) then -- unless explicitly set to something ps = cfg.presentation['ps_cs1']; -- terminate the rendered citation end return cfg.presentation['sep_cs1'], ps; -- element separator end --[[--------------------------< S E T _ C S 2 _ S T Y L E >---------------------------------------------------- Set style settings for CS2 citation templates. Returns separator, postscript, ref settings At en.wiki, for cs2: ps gets: '' (empty string - no terminal punctuation) sep gets: ',' ]] local function set_cs2_style (ps, ref) if not utilities.is_set (ps) then -- if |postscript= has not been set, set cs2 default ps = cfg.presentation['ps_cs2']; -- terminate the rendered citation end if not utilities.is_set (ref) then -- if |ref= is not set ref = "harv"; -- set default |ref=harv end return cfg.presentation['sep_cs2'], ps, ref; -- element separator end --[[--------------------------< G E T _ S E T T I N G S _ F R O M _ C I T E _ C L A S S >---------------------- When |mode= is not set or when its value is invalid, use config.CitationClass and parameter values to establish rendered style. ]] local function get_settings_from_cite_class (ps, ref, cite_class) local sep; if (cite_class == "citation") then -- for citation templates (CS2) sep, ps, ref = set_cs2_style (ps, ref); else -- not a citation template so CS1 sep, ps = set_cs1_style (ps); end return sep, ps, ref -- return them all end --[[--------------------------< S E T _ S T Y L E >------------------------------------------------------------ Establish basic style settings to be used when rendering the citation. Uses |mode= if set and valid or uses config.CitationClass from the template's #invoke: to establish style. ]] local function set_style (mode, ps, ref, cite_class) local sep; if 'cs2' == mode then -- if this template is to be rendered in CS2 (citation) style sep, ps, ref = set_cs2_style (ps, ref); elseif 'cs1' == mode then -- if this template is to be rendered in CS1 (cite xxx) style sep, ps = set_cs1_style (ps); else -- anything but cs1 or cs2 sep, ps, ref = get_settings_from_cite_class (ps, ref, cite_class); -- get settings based on the template's CitationClass end if cfg.keywords_xlate[ps:lower()] == 'none' then -- if assigned value is 'none' then ps = ''; -- set to empty string end return sep, ps, ref end --[=[-------------------------< I S _ P D F >------------------------------------------------------------------ Determines if a URL has the file extension that is one of the PDF file extensions used by [[MediaWiki:Common.css]] when applying the PDF icon to external links. returns true if file extension is one of the recognized extensions, else false ]=] local function is_pdf (url) return url:match ('%.pdf$') or url:match ('%.PDF$') or url:match ('%.pdf[%?#]') or url:match ('%.PDF[%?#]') or url:match ('%.PDF&#035') or url:match ('%.pdf&#035'); end --[[--------------------------< S T Y L E _ F O R M A T >------------------------------------------------------ Applies CSS style to |format=, |chapter-format=, etc. Also emits an error message if the format parameter does not have a matching URL parameter. If the format parameter is not set and the URL contains a file extension that is recognized as a PDF document by MediaWiki's commons.css, this code will set the format parameter to (PDF) with the appropriate styling. ]] local function style_format (format, url, fmt_param, url_param) if utilities.is_set (format) then format = utilities.wrap_style ('format', format); -- add leading space, parentheses, resize if not utilities.is_set (url) then format = format .. ' ' .. utilities.set_message ( 'err_format_missing_url', {fmt_param, url_param} ); -- add an error message end elseif is_pdf (url) then -- format is not set so if URL is a PDF file then format = utilities.wrap_style ('format', 'PDF'); -- set format to PDF else format = ''; -- empty string for concatenation end return format; end --[[--------------------------< G E T _ D I S P L A Y _ N A M E S >-------------------------------------------- Returns a number that defines the number of names displayed for author and editor name lists and a Boolean flag to indicate when et al. should be appended to the name list. When the value assigned to |display-xxxxors= is a number greater than or equal to zero, return the number and the previous state of the 'etal' flag (false by default but may have been set to true if the name list contains some variant of the text 'et al.'). When the value assigned to |display-xxxxors= is the keyword 'etal', return a number that is one greater than the number of authors in the list and set the 'etal' flag true. This will cause the list_people() to display all of the names in the name list followed by 'et al.' In all other cases, returns nil and the previous state of the 'etal' flag. inputs: max: A['DisplayAuthors'] or A['DisplayEditors']; a number or some flavor of etal count: #a or #e list_name: 'authors' or 'editors' etal: author_etal or editor_etal ]] local function get_display_names (max, count, list_name, etal) if utilities.is_set (max) then if 'etal' == max:lower():gsub("[ '%.]", '') then -- the :gsub() portion makes 'etal' from a variety of 'et al.' spellings and stylings max = count + 1; -- number of authors + 1 so display all author name plus et al. etal = true; -- overrides value set by extract_names() elseif max:match ('^%d+$') then -- if is a string of numbers max = tonumber (max); -- make it a number if max >= count then -- if |display-xxxxors= value greater than or equal to number of authors/editors table.insert( z.message_tail, {utilities.set_message ('err_disp_name', {cfg.special_case_translation [list_name], max}, true)}); -- add error message max = nil; end else -- not a valid keyword or number table.insert( z.message_tail, {utilities.set_message ('err_disp_name', {cfg.special_case_translation [list_name], max}, true)}); -- add error message max = nil; -- unset; as if |display-xxxxors= had not been set end end return max, etal; end --[[--------------------------< E X T R A _ T E X T _ I N _ P A G E _ C H E C K >------------------------------ Adds page to Category:CS1 maint: extra text if |page= or |pages= has what appears to be some form of p. or pp. abbreviation in the first characters of the parameter content. check Page and Pages for extraneous p, p., pp, and pp. at start of parameter value: good pattern: '^P[^%.P%l]' matches when |page(s)= begins PX or P# but not Px where x and X are letters and # is a dgiit bad pattern: '^[Pp][Pp]' matches matches when |page(s)= begins pp or pP or Pp or PP ]] local function extra_text_in_page_check (page) local good_pattern = '^P[^%.Pp]'; -- ok to begin with uppercase P: P7 (pg 7 of section P) but not p123 (page 123) TODO: add Gg for PG or Pg? local bad_pattern = '^[Pp]?[Pp]%.?[ %d]'; if not page:match (good_pattern) and (page:match (bad_pattern) or page:match ('^[Pp]ages?')) then utilities.set_message ('maint_extra_text'); -- add maint cat; end end --[=[-------------------------< G E T _ V _ N A M E _ T A B L E >---------------------------------------------- split apart a |vauthors= or |veditors= parameter. This function allows for corporate names, wrapped in doubled parentheses to also have commas; in the old version of the code, the doubled parentheses were included in the rendered citation and in the metadata. Individual author names may be wikilinked |vauthors=Jones AB, [[E. B. White|White EB]], ((Black, Brown, and Co.)) ]=] local function get_v_name_table (vparam, output_table, output_link_table) local name_table = mw.text.split(vparam, "%s*,%s*"); -- names are separated by commas local wl_type, label, link; -- wl_type not used here; just a place holder local i = 1; while name_table[i] do if name_table[i]:match ('^%(%(.*[^%)][^%)]$') then -- first segment of corporate with one or more commas; this segment has the opening doubled parentheses local name = name_table[i]; i = i + 1; -- bump indexer to next segment while name_table[i] do name = name .. ', ' .. name_table[i]; -- concatenate with previous segments if name_table[i]:match ('^.*%)%)$') then -- if this table member has the closing doubled parentheses break; -- and done reassembling so end i = i + 1; -- bump indexer end table.insert (output_table, name); -- and add corporate name to the output table table.insert (output_link_table, ''); -- no wikilink else wl_type, label, link = utilities.is_wikilink (name_table[i]); -- wl_type is: 0, no wl (text in label variable); 1, [[D]]; 2, [[L|D]] table.insert (output_table, label); -- add this name if 1 == wl_type then table.insert (output_link_table, label); -- simple wikilink [[D]] else table.insert (output_link_table, link); -- no wikilink or [[L|D]]; add this link if there is one, else empty string end end i = i + 1; end return output_table; end --[[--------------------------< P A R S E _ V A U T H O R S _ V E D I T O R S >-------------------------------- This function extracts author / editor names from |vauthors= or |veditors= and finds matching |xxxxor-maskn= and |xxxxor-linkn= in args. It then returns a table of assembled names just as extract_names() does. Author / editor names in |vauthors= or |veditors= must be in Vancouver system style. Corporate or institutional names may sometimes be required and because such names will often fail the is_good_vanc_name() and other format compliance tests, are wrapped in doubled parentheses ((corporate name)) to suppress the format tests. Supports generational suffixes Jr, 2nd, 3rd, 4th–6th. This function sets the Vancouver error when a required comma is missing and when there is a space between an author's initials. ]] local function parse_vauthors_veditors (args, vparam, list_name) local names = {}; -- table of names assembled from |vauthors=, |author-maskn=, |author-linkn= local v_name_table = {}; local v_link_table = {}; -- when name is wikilinked, targets go in this table local etal = false; -- return value set to true when we find some form of et al. vauthors parameter local last, first, link, mask, suffix; local corporate = false; vparam, etal = name_has_etal (vparam, etal, true); -- find and remove variations on et al. do not categorize (do it here because et al. might have a period) v_name_table = get_v_name_table (vparam, v_name_table, v_link_table); -- names are separated by commas for i, v_name in ipairs(v_name_table) do first = ''; -- set to empty string for concatenation and because it may have been set for previous author/editor local accept_name; v_name, accept_name = utilities.has_accept_as_written (v_name); -- remove accept-this-as-written markup when it wraps all of <v_name> -- if v_name:match ('^%(%(.+%)%)$') then -- corporate authors are wrapped in doubled parentheses to suppress vanc formatting and error detection -- last = v_name:match ('^%(%((.+)%)%)$') -- remove doubled parentheses if accept_name then last = v_name; corporate = true; -- flag used in list_people() elseif string.find(v_name, "%s") then if v_name:find('[;%.]') then -- look for commonly occurring punctuation characters; add_vanc_error (cfg.err_msg_supl.punctuation); end local lastfirstTable = {} lastfirstTable = mw.text.split(v_name, "%s+") first = table.remove(lastfirstTable); -- removes and returns value of last element in table which should be initials or generational suffix if not mw.ustring.match (first, '^%u+$') then -- mw.ustring here so that later we will catch non-Latin characters suffix = first; -- not initials so assume that whatever we got is a generational suffix first = table.remove(lastfirstTable); -- get what should be the initials from the table end last = table.concat(lastfirstTable, ' ') -- returns a string that is the concatenation of all other names that are not initials and generational suffix if not utilities.is_set (last) then first = ''; -- unset last = v_name; -- last empty because something wrong with first add_vanc_error (cfg.err_msg_supl.name); end if mw.ustring.match (last, '%a+%s+%u+%s+%a+') then add_vanc_error (cfg.err_msg_supl['missing comma']); -- matches last II last; the case when a comma is missing end if mw.ustring.match (v_name, ' %u %u$') then -- this test is in the wrong place TODO: move or replace with a more appropriate test add_vanc_error (cfg.err_msg_supl.name); -- matches a space between two initials end else last = v_name; -- last name or single corporate name? Doesn't support multiword corporate names? do we need this? end if utilities.is_set (first) then if not mw.ustring.match (first, "^%u?%u$") then -- first shall contain one or two upper-case letters, nothing else add_vanc_error (cfg.err_msg_supl.initials); -- too many initials; mixed case initials (which may be ok Romanization); hyphenated initials end is_good_vanc_name (last, first, suffix); -- check first and last before restoring the suffix which may have a non-Latin digit if utilities.is_set (suffix) then first = first .. ' ' .. suffix; -- if there was a suffix concatenate with the initials suffix = ''; -- unset so we don't add this suffix to all subsequent names end else if not corporate then is_good_vanc_name (last, ''); end end link = utilities.select_one ( args, cfg.aliases[list_name .. '-Link'], 'err_redundant_parameters', i ) or v_link_table[i]; mask = utilities.select_one ( args, cfg.aliases[list_name .. '-Mask'], 'err_redundant_parameters', i ); names[i] = {last = last, first = first, link = link, mask = mask, corporate = corporate}; -- add this assembled name to our names list end return names, etal; -- all done, return our list of names end --[[--------------------------< S E L E C T _ A U T H O R _ E D I T O R _ S O U R C E >------------------------ Select one of |authors=, |authorn= / |lastn / firstn=, or |vauthors= as the source of the author name list or select one of |editors=, |editorn= / editor-lastn= / |editor-firstn= or |veditors= as the source of the editor name list. Only one of these appropriate three will be used. The hierarchy is: |authorn= (and aliases) highest and |authors= lowest and similarly, |editorn= (and aliases) highest and |editors= lowest When looking for |authorn= / |editorn= parameters, test |xxxxor1= and |xxxxor2= (and all of their aliases); stops after the second test which mimicks the test used in extract_names() when looking for a hole in the author name list. There may be a better way to do this, I just haven't discovered what that way is. Emits an error message when more than one xxxxor name source is provided. In this function, vxxxxors = vauthors or veditors; xxxxors = authors or editors as appropriate. ]] local function select_author_editor_source (vxxxxors, xxxxors, args, list_name) local lastfirst = false; if utilities.select_one ( args, cfg.aliases[list_name .. '-Last'], 'none', 1 ) or -- do this twice in case we have a |first1= without a |last1=; this ... utilities.select_one ( args, cfg.aliases[list_name .. '-First'], 'none', 1 ) or -- ... also catches the case where |first= is used with |vauthors= utilities.select_one ( args, cfg.aliases[list_name .. '-Last'], 'none', 2 ) or utilities.select_one ( args, cfg.aliases[list_name .. '-First'], 'none', 2 ) then lastfirst = true; end if (utilities.is_set (vxxxxors) and true == lastfirst) or -- these are the three error conditions (utilities.is_set (vxxxxors) and utilities.is_set (xxxxors)) or (true == lastfirst and utilities.is_set (xxxxors)) then local err_name; if 'AuthorList' == list_name then -- figure out which name should be used in error message err_name = 'author'; else err_name = 'editor'; end table.insert( z.message_tail, { utilities.set_message ( 'err_redundant_parameters', {err_name .. '-name-list parameters'}, true ) } ); -- add error message end if true == lastfirst then return 1 end; -- return a number indicating which author name source to use if utilities.is_set (vxxxxors) then return 2 end; if utilities.is_set (xxxxors) then return 3 end; return 1; -- no authors so return 1; this allows missing author name test to run in case there is a first without last end --[[--------------------------< I S _ V A L I D _ P A R A M E T E R _ V A L U E >------------------------------ This function is used to validate a parameter's assigned value for those parameters that have only a limited number of allowable values (yes, y, true, live, dead, etc.). When the parameter value has not been assigned a value (missing or empty in the source template) the function returns the value specified by ret_val. If the parameter value is one of the list of allowed values returns the translated value; else, emits an error message and returns the value specified by ret_val. ]] local function is_valid_parameter_value (value, name, possible, ret_val) if not utilities.is_set (value) then return ret_val; -- an empty parameter is ok elseif utilities.in_array (value, possible) then return cfg.keywords_xlate[value]; -- return translation of parameter keyword else table.insert( z.message_tail, { utilities.set_message ( 'err_invalid_param_val', {name, value}, true ) } ); -- not an allowed value so add error message return ret_val; end end --[[--------------------------< T E R M I N A T E _ N A M E _ L I S T >---------------------------------------- This function terminates a name list (author, contributor, editor) with a separator character (sepc) and a space when the last character is not a sepc character or when the last three characters are not sepc followed by two closing square brackets (close of a wikilink). When either of these is true, the name_list is terminated with a single space character. ]] local function terminate_name_list (name_list, sepc) if (string.sub (name_list, -3, -1) == sepc .. '. ') then -- if already properly terminated return name_list; -- just return the name list elseif (string.sub (name_list, -1, -1) == sepc) or (string.sub (name_list, -3, -1) == sepc .. ']]') then -- if last name in list ends with sepc char return name_list .. " "; -- don't add another else return name_list .. sepc .. ' '; -- otherwise terminate the name list end end --[[-------------------------< F O R M A T _ V O L U M E _ I S S U E >---------------------------------------- returns the concatenation of the formatted volume and issue parameters as a single string; or formatted volume or formatted issue, or an empty string if neither are set. ]] local function format_volume_issue (volume, issue, cite_class, origin, sepc, lower) if not utilities.is_set (volume) and not utilities.is_set (issue) then return ''; end if 'magazine' == cite_class or (utilities.in_array (cite_class, {'citation', 'map'}) and 'magazine' == origin) then if utilities.is_set (volume) and utilities.is_set (issue) then return wrap_msg ('vol-no', {sepc, volume, issue}, lower); elseif utilities.is_set (volume) then return wrap_msg ('vol', {sepc, volume}, lower); else return wrap_msg ('issue', {sepc, issue}, lower); end end if 'podcast' == cite_class and utilities.is_set (issue) then return wrap_msg ('issue', {sepc, issue}, lower); end local vol = ''; -- here for all cites except magazine if utilities.is_set (volume) then if volume:match ('^[MDCLXVI]+$') or volume:match ('^%d+$') then -- volume value is all digits or all uppercase Roman numerals vol = utilities.substitute (cfg.presentation['vol-bold'], {sepc, hyphen_to_dash(volume)}); -- render in bold face elseif (4 < mw.ustring.len(volume)) then -- not all digits or Roman numerals and longer than 4 characters vol = utilities.substitute (cfg.messages['j-vol'], {sepc, volume}); -- not bold utilities.add_prop_cat ('long_vol'); else -- four or less characters vol = utilities.substitute (cfg.presentation['vol-bold'], {sepc, hyphen_to_dash(volume)}); -- bold end end if utilities.is_set (issue) then return vol .. utilities.substitute (cfg.messages['j-issue'], issue); end return vol; end --[[-------------------------< F O R M A T _ P A G E S _ S H E E T S >----------------------------------------- adds static text to one of |page(s)= or |sheet(s)= values and returns it with all of the others set to empty strings. The return order is: page, pages, sheet, sheets Singular has priority over plural when both are provided. ]] local function format_pages_sheets (page, pages, sheet, sheets, cite_class, origin, sepc, nopp, lower) if 'map' == cite_class then -- only cite map supports sheet(s) as in-source locators if utilities.is_set (sheet) then if 'journal' == origin then return '', '', wrap_msg ('j-sheet', sheet, lower), ''; else return '', '', wrap_msg ('sheet', {sepc, sheet}, lower), ''; end elseif utilities.is_set (sheets) then if 'journal' == origin then return '', '', '', wrap_msg ('j-sheets', sheets, lower); else return '', '', '', wrap_msg ('sheets', {sepc, sheets}, lower); end end end local is_journal = 'journal' == cite_class or (utilities.in_array (cite_class, {'citation', 'map', 'interview'}) and 'journal' == origin); if utilities.is_set (page) then if is_journal then return utilities.substitute (cfg.messages['j-page(s)'], page), '', '', ''; elseif not nopp then return utilities.substitute (cfg.messages['p-prefix'], {sepc, page}), '', '', ''; else return utilities.substitute (cfg.messages['nopp'], {sepc, page}), '', '', ''; end elseif utilities.is_set (pages) then if is_journal then return utilities.substitute (cfg.messages['j-page(s)'], pages), '', '', ''; elseif tonumber(pages) ~= nil and not nopp then -- if pages is only digits, assume a single page number return '', utilities.substitute (cfg.messages['p-prefix'], {sepc, pages}), '', ''; elseif not nopp then return '', utilities.substitute (cfg.messages['pp-prefix'], {sepc, pages}), '', ''; else return '', utilities.substitute (cfg.messages['nopp'], {sepc, pages}), '', ''; end end return '', '', '', ''; -- return empty strings end --[[--------------------------< I N S O U R C E _ L O C _ G E T >---------------------------------------------- returns one of the in-source locators: page, pages, or at. If any of these are interwiki links to Wikisource, returns the label portion of the interwiki-link as plain text for use in COinS. This COinS thing is done because here we convert an interwiki-link to and external link and add an icon span around that; get_coins_pages() doesn't know about the span. TODO: should it? TODO: add support for sheet and sheets?; streamline; TODO: make it so that this function returns only one of the three as the single in-source (the return value assigned to a new name)? ]] local function insource_loc_get (page, pages, at) local ws_url, ws_label, coins_pages, L; -- for Wikisource interwiki-links; TODO: this corrupts page metadata (span remains in place after cleanup; fix there?) if utilities.is_set (page) then if utilities.is_set (pages) or utilities.is_set (at) then pages = ''; -- unset the others at = ''; end extra_text_in_page_check (page); -- add this page to maint cat if |page= value begins with what looks like p. or pp. ws_url, ws_label, L = wikisource_url_make (page); -- make ws URL from |page= interwiki link; link portion L becomes tooltip label if ws_url then page = external_link (ws_url, ws_label .. '&nbsp;', 'ws link in page'); -- space char after label to move icon away from in-source text; TODO: a better way to do this? page = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, page}); coins_pages = ws_label; end elseif utilities.is_set (pages) then if utilities.is_set (at) then at = ''; -- unset end extra_text_in_page_check (pages); -- add this page to maint cat if |pages= value begins with what looks like p. or pp. ws_url, ws_label, L = wikisource_url_make (pages); -- make ws URL from |pages= interwiki link; link portion L becomes tooltip label if ws_url then pages = external_link (ws_url, ws_label .. '&nbsp;', 'ws link in pages'); -- space char after label to move icon away from in-source text; TODO: a better way to do this? pages = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, pages}); coins_pages = ws_label; end elseif utilities.is_set (at) then ws_url, ws_label, L = wikisource_url_make (at); -- make ws URL from |at= interwiki link; link portion L becomes tooltip label if ws_url then at = external_link (ws_url, ws_label .. '&nbsp;', 'ws link in at'); -- space char after label to move icon away from in-source text; TODO: a better way to do this? at = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, at}); coins_pages = ws_label; end end return page, pages, at, coins_pages; end --[=[-------------------------< A R C H I V E _ U R L _ C H E C K >-------------------------------------------- Check archive.org URLs to make sure they at least look like they are pointing at valid archives and not to the save snapshot URL or to calendar pages. When the archive URL is 'https://web.archive.org/save/' (or http://...) archive.org saves a snapshot of the target page in the URL. That is something that Wikipedia should not allow unwitting readers to do. When the archive.org URL does not have a complete timestamp, archive.org chooses a snapshot according to its own algorithm or provides a calendar 'search' result. [[WP:ELNO]] discourages links to search results. This function looks at the value assigned to |archive-url= and returns empty strings for |archive-url= and |archive-date= and an error message when: |archive-url= holds an archive.org save command URL |archive-url= is an archive.org URL that does not have a complete timestamp (YYYYMMDDhhmmss 14 digits) in the correct place otherwise returns |archive-url= and |archive-date= There are two mostly compatible archive.org URLs: //web.archive.org/<timestamp>... -- the old form //web.archive.org/web/<timestamp>... -- the new form The old form does not support or map to the new form when it contains a display flag. There are four identified flags ('id_', 'js_', 'cs_', 'im_') but since archive.org ignores others following the same form (two letters and an underscore) we don't check for these specific flags but we do check the form. This function supports a preview mode. When the article is rendered in preview mode, this function may return a modified archive URL: for save command errors, return undated wildcard (/*/) for timestamp errors when the timestamp has a wildcard, return the URL unmodified for timestamp errors when the timestamp does not have a wildcard, return with timestamp limited to six digits plus wildcard (/yyyymm*/) ]=] local function archive_url_check (url, date) local err_msg = ''; -- start with the error message empty local path, timestamp, flag; -- portions of the archive.org URL if (not url:match('//web%.archive%.org/')) and (not url:match('//liveweb%.archive%.org/')) then -- also deprecated liveweb Wayback machine URL return url, date; -- not an archive.org archive, return ArchiveURL and ArchiveDate end if url:match('//web%.archive%.org/save/') then -- if a save command URL, we don't want to allow saving of the target page err_msg = cfg.err_msg_supl.save; url = url:gsub ('(//web%.archive%.org)/save/', '%1/*/', 1); -- for preview mode: modify ArchiveURL elseif url:match('//liveweb%.archive%.org/') then err_msg = cfg.err_msg_supl.liveweb; else path, timestamp, flag = url:match('//web%.archive%.org/([^%d]*)(%d+)([^/]*)/'); -- split out some of the URL parts for evaluation if not utilities.is_set (timestamp) or 14 ~= timestamp:len() then -- path and flag optional, must have 14-digit timestamp here err_msg = cfg.err_msg_supl.timestamp; if '*' ~= flag then url=url:gsub ('(//web%.archive%.org/[^%d]*%d?%d?%d?%d?%d?%d?)[^/]*', '%1*', 1) -- for preview, modify ts to be yearmo* max (0-6 digits plus splat) end elseif utilities.is_set (path) and 'web/' ~= path then -- older archive URLs do not have the extra 'web/' path element err_msg = cfg.err_msg_supl.path; elseif utilities.is_set (flag) and not utilities.is_set (path) then -- flag not allowed with the old form URL (without the 'web/' path element) err_msg = cfg.err_msg_supl.flag; elseif utilities.is_set (flag) and not flag:match ('%a%a_') then -- flag if present must be two alpha characters and underscore (requires 'web/' path element) err_msg = cfg.err_msg_supl.flag; else return url, date; -- return ArchiveURL and ArchiveDate end end -- if here, something not right so table.insert( z.message_tail, { utilities.set_message ( 'err_archive_url', {err_msg}, true ) } ); -- add error message and if utilities.is_set (Frame:preprocess('{{REVISIONID}}')) then return '', ''; -- return empty strings for ArchiveURL and ArchiveDate else return url, date; -- preview mode so return ArchiveURL and ArchiveDate end end --[[--------------------------< P L A C E _ C H E C K >-------------------------------------------------------- check |place=, |publication-place=, |location= to see if these params include digits. This function added because many editors misuse location to specify the in-source location (|page(s)= and |at= are supposed to do that) returns the original parameter value without modification; added maint cat when parameter value contains digits ]] local function place_check (param_val) if not utilities.is_set (param_val) then -- parameter empty or omitted return param_val; -- return that empty state end if mw.ustring.find (param_val, '%d') then -- not empty, are there digits in the parameter value utilities.set_message ('maint_location'); -- yep, add maint cat end return param_val; -- and done end --[[--------------------------< I S _ G E N E R I C _ T I T L E >---------------------------------------------- compares |title= value against list of known generic title patterns. Returns true when pattern matches; nil else the k/v pairs in 'generic_titles' each contain two tables, one for English and one for another 'local' language Each of those tables contain another table that holds the string or pattern (whole title or title fragment) in index [1]. index [2] is a Boolean that tells string.find() or mw.ustring.find() to do plain-text search (true) or a pattern search (false). The intent of all this complexity is to make these searches as fast as possible so that we don't run out of processing time on very large articles. ]] local function is_generic_title (title) title = mw.ustring.lower(title); -- switch title to lower case for _, generic_title in ipairs (cfg.special_case_translation['generic_titles']) do --spin through the list of known generic title fragments if title:find (generic_title['en'][1], 1, generic_title['en'][2]) then return true; -- found English generic title so done elseif generic_title['local'] then -- to keep work load down, generic_title['local'] should be nil except when there is a local version of the generic title if mw.ustring.find (title, generic_title['local'][1], 1, generic_title['local'][2]) then -- mw.ustring() because might not be Latin script return true; -- found local generic title so done end end end end --[[--------------------------< I S _ A R C H I V E D _ C O P Y >---------------------------------------------- compares |title= to 'Archived copy' (place holder added by bots that can't find proper title); if matches, return true; nil else ]] local function is_archived_copy (title) title = mw.ustring.lower(title); -- switch title to lower case if title:find (cfg.special_case_translation.archived_copy.en) then -- if title is 'Archived copy' return true; elseif cfg.special_case_translation.archived_copy['local'] then if mw.ustring.find (title, cfg.special_case_translation.archived_copy['local']) then -- mw.ustring() because might not be Latin script return true; end end end --[[--------------------------< C I T A T I O N 0 >------------------------------------------------------------ This is the main function doing the majority of the citation formatting. ]] local function citation0( config, args) --[[ Load Input Parameters The argument_wrapper facilitates the mapping of multiple aliases to single internal variable. ]] local A = argument_wrapper ( args ); local i -- Pick out the relevant fields from the arguments. Different citation templates -- define different field names for the same underlying things. local Mode = is_valid_parameter_value (A['Mode'], A:ORIGIN('Mode'), cfg.keywords_lists['mode'], ''); local author_etal; local a = {}; -- authors list from |lastn= / |firstn= pairs or |vauthors= local Authors; local NameListStyle = is_valid_parameter_value (A['NameListStyle'], A:ORIGIN('NameListStyle'), cfg.keywords_lists['name-list-style'], ''); local Collaboration = A['Collaboration']; do -- to limit scope of selected local selected = select_author_editor_source (A['Vauthors'], A['Authors'], args, 'AuthorList'); if 1 == selected then a, author_etal = extract_names (args, 'AuthorList'); -- fetch author list from |authorn= / |lastn= / |firstn=, |author-linkn=, and |author-maskn= elseif 2 == selected then NameListStyle = 'vanc'; -- override whatever |name-list-style= might be a, author_etal = parse_vauthors_veditors (args, args.vauthors, 'AuthorList'); -- fetch author list from |vauthors=, |author-linkn=, and |author-maskn= elseif 3 == selected then Authors = A['Authors']; -- use content of |authors= if 'authors' == A:ORIGIN('Authors') then -- but add a maint cat if the parameter is |authors= utilities.set_message ('maint_authors'); -- because use of this parameter is discouraged; what to do about the aliases is a TODO: end end if utilities.is_set (Collaboration) then author_etal = true; -- so that |display-authors=etal not required end end local Others = A['Others']; local editor_etal; local e = {}; -- editors list from |editor-lastn= / |editor-firstn= pairs or |veditors= local Editors; do -- to limit scope of selected local selected = select_author_editor_source (A['Veditors'], A['Editors'], args, 'EditorList'); if 1 == selected then e, editor_etal = extract_names (args, 'EditorList'); -- fetch editor list from |editorn= / |editor-lastn= / |editor-firstn=, |editor-linkn=, and |editor-maskn= elseif 2 == selected then NameListStyle = 'vanc'; -- override whatever |name-list-style= might be e, editor_etal = parse_vauthors_veditors (args, args.veditors, 'EditorList'); -- fetch editor list from |veditors=, |editor-linkn=, and |editor-maskn= elseif 3 == selected then Editors = A['Editors']; -- use content of |editors= end end local translator_etal; local t = {}; -- translators list from |translator-lastn= / translator-firstn= pairs local Translators; -- assembled translators name list t = extract_names (args, 'TranslatorList'); -- fetch translator list from |translatorn= / |translator-lastn=, -firstn=, -linkn=, -maskn= local interviewer_etal; local interviewers_list = {}; local Interviewers; -- used later interviewers_list = extract_names (args, 'InterviewerList'); -- process preferred interviewers parameters local contributor_etal; local c = {}; -- contributors list from |contributor-lastn= / contributor-firstn= pairs local Contributors; -- assembled contributors name list local Chapter = A['Chapter']; -- done here so that we have access to |contribution= from |chapter= aliases local Chapter_origin = A:ORIGIN ('Chapter'); local Contribution; -- because contribution is required for contributor(s) if 'contribution' == A:ORIGIN ('Chapter') then Contribution = A['Chapter']; -- get the name of the contribution end if utilities.in_array (config.CitationClass, {"book", "citation"}) and not utilities.is_set (A['Periodical']) then -- |contributor= and |contribution= only supported in book cites c = extract_names (args, 'ContributorList'); -- fetch contributor list from |contributorn= / |contributor-lastn=, -firstn=, -linkn=, -maskn= if 0 < #c then if not utilities.is_set (Contribution) then -- |contributor= requires |contribution= table.insert( z.message_tail, { utilities.set_message ( 'err_contributor_missing_required_param', 'contribution')}); -- add missing contribution error message c = {}; -- blank the contributors' table; it is used as a flag later end if 0 == #a then -- |contributor= requires |author= table.insert( z.message_tail, { utilities.set_message ( 'err_contributor_missing_required_param', 'author')}); -- add missing author error message c = {}; -- blank the contributors' table; it is used as a flag later end end else -- if not a book cite if utilities.select_one (args, cfg.aliases['ContributorList-Last'], 'err_redundant_parameters', 1 ) then -- are there contributor name list parameters? table.insert( z.message_tail, { utilities.set_message ( 'err_contributor_ignored')}); -- add contributor ignored error message end Contribution = nil; -- unset end if utilities.is_set (Others) then if 0 == #a and 0 == #e then -- add maint cat when |others= has value and used without |author=, |editor= utilities.set_message ('maint_others'); end end local Year = A['Year']; local PublicationDate = A['PublicationDate']; local OrigDate = A['OrigDate']; local Date = A['Date']; local LayDate = A['LayDate']; ------------------------------------------------- Get title data local Title = A['Title']; local ScriptTitle = A['ScriptTitle']; local BookTitle = A['BookTitle']; local Conference = A['Conference']; local TransTitle = A['TransTitle']; local TransTitle_origin = A:ORIGIN ('TransTitle'); local TitleNote = A['TitleNote']; local TitleLink = A['TitleLink']; local auto_select = ''; -- default is auto local accept_link; TitleLink, accept_link = utilities.has_accept_as_written(TitleLink, true); -- test for accept-this-as-written markup if (not accept_link) and utilities.in_array (TitleLink, {'none', 'pmc', 'doi'}) then -- check for special keywords auto_select = TitleLink; -- remember selection for later TitleLink = ''; -- treat as if |title-link= would have been empty end TitleLink = link_title_ok (TitleLink, A:ORIGIN ('TitleLink'), Title, 'title'); -- check for wiki-markup in |title-link= or wiki-markup in |title= when |title-link= is set local Section = ''; -- {{cite map}} only; preset to empty string for concatenation if not used if 'map' == config.CitationClass and 'section' == A:ORIGIN ('Chapter') then Section = A['Chapter']; -- get |section= from |chapter= alias list; |chapter= and the other aliases not supported in {{cite map}} Chapter = ''; -- unset for now; will be reset later from |map= if present end local ScriptChapter = A['ScriptChapter']; local ScriptChapter_origin = A:ORIGIN ('ScriptChapter'); local ChapterLink -- = A['ChapterLink']; -- deprecated as a parameter but still used internally by cite episode local TransChapter = A['TransChapter']; local TransChapter_origin = A:ORIGIN ('TransChapter'); local TitleType = A['TitleType']; local Degree = A['Degree']; local Docket = A['Docket']; local ArchiveFormat = A['ArchiveFormat']; local ArchiveDate; local ArchiveURL; ArchiveURL, ArchiveDate = archive_url_check (A['ArchiveURL'], A['ArchiveDate']) local UrlStatus = is_valid_parameter_value (A['UrlStatus'], A:ORIGIN('UrlStatus'), cfg.keywords_lists['url-status'], ''); local URL = A['URL'] local URL_origin = A:ORIGIN('URL'); -- get name of parameter that holds URL local ChapterURL = A['ChapterURL']; local ChapterURL_origin = A:ORIGIN('ChapterURL'); -- get name of parameter that holds ChapterURL local ConferenceFormat = A['ConferenceFormat']; local ConferenceURL = A['ConferenceURL']; local ConferenceURL_origin = A:ORIGIN('ConferenceURL'); -- get name of parameter that holds ConferenceURL local Periodical = A['Periodical']; local Periodical_origin = ''; if utilities.is_set (Periodical) then Periodical_origin = A:ORIGIN('Periodical'); -- get the name of the periodical parameter local i; Periodical, i = utilities.strip_apostrophe_markup (Periodical); -- strip apostrophe markup so that metadata isn't contaminated if i then -- non-zero when markup was stripped so emit an error message table.insert( z.message_tail, {utilities.set_message ('err_apostrophe_markup', {Periodical_origin}, true)}); end end if 'mailinglist' == config.CitationClass then -- special case for {{cite mailing list}} if utilities.is_set (Periodical) and utilities.is_set (A ['MailingList']) then -- both set emit an error table.insert( z.message_tail, {utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', Periodical_origin) .. ' and ' .. utilities.wrap_style ('parameter', 'mailinglist')}, true )}); end Periodical = A ['MailingList']; -- error or no, set Periodical to |mailinglist= value because this template is {{cite mailing list}} Periodical_origin = A:ORIGIN('MailingList'); end local ScriptPeriodical = A['ScriptPeriodical']; local ScriptPeriodical_origin = A:ORIGIN('ScriptPeriodical'); -- web and news not tested for now because of -- Wikipedia:Administrators%27_noticeboard#Is_there_a_semi-automated_tool_that_could_fix_these_annoying_"Cite_Web"_errors? if not (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) then -- 'periodical' templates require periodical parameter -- local p = {['journal'] = 'journal', ['magazine'] = 'magazine', ['news'] = 'newspaper', ['web'] = 'website'}; -- for error message local p = {['journal'] = 'journal', ['magazine'] = 'magazine'}; -- for error message if p[config.CitationClass] then table.insert( z.message_tail, {utilities.set_message ('err_missing_periodical', {config.CitationClass, p[config.CitationClass]}, true)}); end end local TransPeriodical = A['TransPeriodical']; local TransPeriodical_origin = A:ORIGIN ('TransPeriodical'); local Series = A['Series']; local Volume; local Issue; local Page; local Pages; local At; if 'citation' == config.CitationClass then if utilities.is_set (Periodical) then if not utilities.in_array (Periodical_origin, {'website', 'mailinglist'}) then -- {{citation}} does not render volume for these 'periodicals' Volume = A['Volume']; -- but does for all other 'periodicals' end elseif utilities.is_set (ScriptPeriodical) then if 'script-website' ~= ScriptPeriodical_origin then -- {{citation}} does not render volume for |script-website= Volume = A['Volume']; -- but does for all other 'periodicals' end else Volume = A['Volume']; -- and does for non-'periodical' cites end elseif utilities.in_array (config.CitationClass, cfg.templates_using_volume) then -- render |volume= for cs1 according to the configuration settings Volume = A['Volume']; end if 'citation' == config.CitationClass then if utilities.is_set (Periodical) and utilities.in_array (Periodical_origin, {'journal', 'magazine', 'newspaper', 'periodical', 'work'}) or -- {{citation}} renders issue for these 'periodicals' utilities.is_set (ScriptPeriodical) and utilities.in_array (ScriptPeriodical_origin, {'script-journal', 'script-magazine', 'script-newspaper', 'script-periodical', 'script-work'}) then -- and these 'script-periodicals' Issue = hyphen_to_dash (A['Issue']); end elseif utilities.in_array (config.CitationClass, cfg.templates_using_issue) then -- conference & map books do not support issue; {{citation}} listed here because included in settings table if not (utilities.in_array (config.CitationClass, {'conference', 'map', 'citation'}) and not (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical))) then Issue = hyphen_to_dash (A['Issue']); end end local Position = ''; if not utilities.in_array (config.CitationClass, cfg.templates_not_using_page) then Page = A['Page']; Pages = hyphen_to_dash (A['Pages']); At = A['At']; end local Edition = A['Edition']; local PublicationPlace = place_check (A['PublicationPlace'], A:ORIGIN('PublicationPlace')); local Place = place_check (A['Place'], A:ORIGIN('Place')); local PublisherName = A['PublisherName']; local PublisherName_origin = A:ORIGIN('PublisherName'); if utilities.is_set (PublisherName) then local i = 0; PublisherName, i = utilities.strip_apostrophe_markup (PublisherName); -- strip apostrophe markup so that metadata isn't contaminated; publisher is never italicized if i then -- non-zero when markup was stripped so emit an error message table.insert( z.message_tail, {utilities.set_message ('err_apostrophe_markup', {PublisherName_origin}, true)}); end end local Newsgroup = A['Newsgroup']; -- TODO: strip apostrophe markup? local Newsgroup_origin = A:ORIGIN('Newsgroup'); if 'newsgroup' == config.CitationClass then if utilities.is_set (PublisherName) then -- general use parameter |publisher= not allowed in cite newsgroup local error_text, error_state = utilities.set_message ('err_parameter_ignored', {PublisherName_origin}, true); if utilities.is_set (error_text) then table.insert( z.message_tail, {error_text, error_state} ); end end PublisherName = nil; -- ensure that this parameter is unset for the time being; will be used again after COinS end local UrlAccess = is_valid_parameter_value (A['UrlAccess'], A:ORIGIN('UrlAccess'), cfg.keywords_lists['url-access'], nil); if not utilities.is_set (URL) and utilities.is_set (UrlAccess) then UrlAccess = nil; table.insert( z.message_tail, { utilities.set_message ( 'err_param_access_requires_param', {'url'}, true ) } ); end local ChapterUrlAccess = is_valid_parameter_value (A['ChapterUrlAccess'], A:ORIGIN('ChapterUrlAccess'), cfg.keywords_lists['url-access'], nil); if not utilities.is_set (ChapterURL) and utilities.is_set (ChapterUrlAccess) then ChapterUrlAccess = nil; table.insert( z.message_tail, { utilities.set_message ( 'err_param_access_requires_param', {A:ORIGIN('ChapterUrlAccess'):gsub ('%-access', '')}, true ) } ); end local MapUrlAccess = is_valid_parameter_value (A['MapUrlAccess'], A:ORIGIN('MapUrlAccess'), cfg.keywords_lists['url-access'], nil); if not utilities.is_set (A['MapURL']) and utilities.is_set (MapUrlAccess) then MapUrlAccess = nil; table.insert( z.message_tail, { utilities.set_message ( 'err_param_access_requires_param', {'map-url'}, true ) } ); end local Via = A['Via']; local AccessDate = A['AccessDate']; local Agency = A['Agency']; local Language = A['Language']; local Format = A['Format']; local ChapterFormat = A['ChapterFormat']; local DoiBroken = A['DoiBroken']; local ID = A['ID']; local ASINTLD = A['ASINTLD']; local IgnoreISBN = is_valid_parameter_value (A['IgnoreISBN'], A:ORIGIN('IgnoreISBN'), cfg.keywords_lists['yes_true_y'], nil); local Embargo = A['Embargo']; local Class = A['Class']; -- arxiv class identifier local Quote = A['Quote']; local QuotePage = A['QuotePage']; local QuotePages = A['QuotePages']; local ScriptQuote = A['ScriptQuote']; local TransQuote = A['TransQuote']; local LayFormat = A['LayFormat']; local LayURL = A['LayURL']; local LaySource = A['LaySource']; local Transcript = A['Transcript']; local TranscriptFormat = A['TranscriptFormat']; local TranscriptURL = A['TranscriptURL'] local TranscriptURL_origin = A:ORIGIN('TranscriptURL'); -- get name of parameter that holds TranscriptURL local LastAuthorAmp = is_valid_parameter_value (A['LastAuthorAmp'], A:ORIGIN('LastAuthorAmp'), cfg.keywords_lists['yes_true_y'], nil); local no_tracking_cats = is_valid_parameter_value (A['NoTracking'], A:ORIGIN('NoTracking'), cfg.keywords_lists['yes_true_y'], nil); if 'nocat' == A:ORIGIN('NoTracking') then utilities.set_message ('maint_nocat'); -- this one so that we get the message; see main categorization at end of citation0() end --local variables that are not cs1 parameters local use_lowercase; -- controls capitalization of certain static text local this_page = mw.title.getCurrentTitle(); -- also used for COinS and for language local anchor_year; -- used in the CITEREF identifier local COinS_date = {}; -- holds date info extracted from |date= for the COinS metadata by Module:Date verification local DF = is_valid_parameter_value (A['DF'], A:ORIGIN('DF'), cfg.keywords_lists['df'], ''); if not utilities.is_set (DF) then DF = cfg.global_df; -- local |df= if present overrides global df set by {{use xxx date}} template end local sepc; -- separator between citation elements for CS1 a period, for CS2, a comma local PostScript; local Ref = A['Ref']; if 'harv' == Ref then utilities.set_message ('maint_ref_harv'); -- add maint cat to identify templates that have this now-extraneous param value elseif not utilities.is_set (Ref) then Ref = 'harv'; -- set as default when not set externally end sepc, PostScript, Ref = set_style (Mode:lower(), A['PostScript'], Ref, config.CitationClass); use_lowercase = ( sepc == ',' ); -- used to control capitalization for certain static text -- check this page to see if it is in one of the namespaces that cs1 is not supposed to add to the error categories if not utilities.is_set (no_tracking_cats) then -- ignore if we are already not going to categorize this page if utilities.in_array (this_page.nsText, cfg.uncategorized_namespaces) then no_tracking_cats = "true"; -- set no_tracking_cats end for _, v in ipairs (cfg.uncategorized_subpages) do -- cycle through page name patterns if this_page.text:match (v) then -- test page name against each pattern no_tracking_cats = "true"; -- set no_tracking_cats break; -- bail out if one is found end end end -- check for extra |page=, |pages= or |at= parameters. (also sheet and sheets while we're at it) utilities.select_one (args, {'page', 'p', 'pp', 'pages', 'at', 'sheet', 'sheets'}, 'err_redundant_parameters'); -- this is a dummy call simply to get the error message and category local coins_pages; Page, Pages, At, coins_pages = insource_loc_get (Page, Pages, At); local NoPP = is_valid_parameter_value (A['NoPP'], A:ORIGIN('NoPP'), cfg.keywords_lists['yes_true_y'], nil); if utilities.is_set (PublicationPlace) and utilities.is_set (Place) then -- both |publication-place= and |place= (|location=) allowed if different utilities.add_prop_cat ('location test'); -- add property cat to evaluate how often PublicationPlace and Place are used together if PublicationPlace == Place then Place = ''; -- unset; don't need both if they are the same end elseif not utilities.is_set (PublicationPlace) and utilities.is_set (Place) then -- when only |place= (|location=) is set ... PublicationPlace = Place; -- promote |place= (|location=) to |publication-place end if PublicationPlace == Place then Place = ''; end -- don't need both if they are the same --[[ Parameter remapping for cite encyclopedia: When the citation has these parameters: |encyclopedia= and |title= then map |title= to |article= and |encyclopedia= to |title= |encyclopedia= and |article= then map |encyclopedia= to |title= |trans-title= maps to |trans-chapter= when |title= is re-mapped |url= maps to |chapter-url= when |title= is remapped All other combinations of |encyclopedia=, |title=, and |article= are not modified ]] local Encyclopedia = A['Encyclopedia']; -- used as a flag by this module and by ~/COinS if utilities.is_set (Encyclopedia) then -- emit error message when Encyclopedia set but template is other than {{cite encyclopedia}} or {{citation}} if 'encyclopaedia' ~= config.CitationClass and 'citation' ~= config.CitationClass then table.insert (z.message_tail, {utilities.set_message ('err_parameter_ignored', {A:ORIGIN ('Encyclopedia')}, true)}); Encyclopedia = nil; -- unset because not supported by this template end end if ('encyclopaedia' == config.CitationClass) or ('citation' == config.CitationClass and utilities.is_set (Encyclopedia)) then if utilities.is_set (Periodical) and utilities.is_set (Encyclopedia) then -- when both set emit an error table.insert (z.message_tail, {utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', A:ORIGIN ('Encyclopedia')) .. ' and ' .. utilities.wrap_style ('parameter', Periodical_origin)}, true )}); end if utilities.is_set (Encyclopedia) then Periodical = Encyclopedia; -- error or no, set Periodical to Encyclopedia; allow periodical without encyclopedia Periodical_origin = A:ORIGIN ('Encyclopedia'); end if utilities.is_set (Periodical) then -- Periodical is set when |encyclopedia= is set if utilities.is_set (Title) or utilities.is_set (ScriptTitle) then if not utilities.is_set (Chapter) then Chapter = Title; -- |encyclopedia= and |title= are set so map |title= to |article= and |encyclopedia= to |title= ScriptChapter = ScriptTitle; ScriptChapter_origin = A:ORIGIN('ScriptTitle') TransChapter = TransTitle; ChapterURL = URL; ChapterURL_origin = A:ORIGIN('URL') ChapterUrlAccess = UrlAccess; if not utilities.is_set (ChapterURL) and utilities.is_set (TitleLink) then Chapter = utilities.make_wikilink (TitleLink, Chapter); end Title = Periodical; ChapterFormat = Format; Periodical = ''; -- redundant so unset TransTitle = ''; URL = ''; Format = ''; TitleLink = ''; ScriptTitle = ''; end elseif utilities.is_set (Chapter) then -- |title= not set Title = Periodical; -- |encyclopedia= set and |article= set so map |encyclopedia= to |title= Periodical = ''; -- redundant so unset end end end -- special case for cite techreport. if (config.CitationClass == "techreport") then -- special case for cite techreport if utilities.is_set (A['Number']) then -- cite techreport uses 'number', which other citations alias to 'issue' if not utilities.is_set (ID) then -- can we use ID for the "number"? ID = A['Number']; -- yes, use it else -- ID has a value so emit error message table.insert( z.message_tail, { utilities.set_message ('err_redundant_parameters', {utilities.wrap_style ('parameter', 'id') .. ' and ' .. utilities.wrap_style ('parameter', 'number')}, true )}); end end end -- Account for the oddity that is {{cite conference}}, before generation of COinS data. if 'conference' == config.CitationClass then if utilities.is_set (BookTitle) then Chapter = Title; Chapter_origin = 'title'; -- ChapterLink = TitleLink; -- |chapter-link= is deprecated ChapterURL = URL; ChapterUrlAccess = UrlAccess; ChapterURL_origin = URL_origin; URL_origin = ''; ChapterFormat = Format; TransChapter = TransTitle; TransChapter_origin = TransTitle_origin; Title = BookTitle; Format = ''; -- TitleLink = ''; TransTitle = ''; URL = ''; end elseif 'speech' ~= config.CitationClass then Conference = ''; -- not cite conference or cite speech so make sure this is empty string end -- cite map oddities local Cartography = ""; local Scale = ""; local Sheet = A['Sheet'] or ''; local Sheets = A['Sheets'] or ''; if config.CitationClass == "map" then if utilities.is_set (Chapter) then table.insert( z.message_tail, { utilities.set_message ( 'err_redundant_parameters', {utilities.wrap_style ('parameter', 'map') .. ' and ' .. utilities.wrap_style ('parameter', Chapter_origin)}, true ) } ); -- add error message end Chapter = A['Map']; Chapter_origin = A:ORIGIN('Map'); ChapterURL = A['MapURL']; ChapterURL_origin = A:ORIGIN('MapURL'); TransChapter = A['TransMap']; ScriptChapter = A['ScriptMap'] ScriptChapter_origin = A:ORIGIN('ScriptMap') ChapterUrlAccess = MapUrlAccess; ChapterFormat = A['MapFormat']; Cartography = A['Cartography']; if utilities.is_set ( Cartography ) then Cartography = sepc .. " " .. wrap_msg ('cartography', Cartography, use_lowercase); end Scale = A['Scale']; if utilities.is_set ( Scale ) then Scale = sepc .. " " .. Scale; end end -- Account for the oddities that are {{cite episode}} and {{cite serial}}, before generation of COinS data. if 'episode' == config.CitationClass or 'serial' == config.CitationClass then local SeriesLink = A['SeriesLink']; SeriesLink = link_title_ok (SeriesLink, A:ORIGIN ('SeriesLink'), Series, 'series'); -- check for wiki-markup in |series-link= or wiki-markup in |series= when |series-link= is set local Network = A['Network']; local Station = A['Station']; local s, n = {}, {}; -- do common parameters first if utilities.is_set (Network) then table.insert(n, Network); end if utilities.is_set (Station) then table.insert(n, Station); end ID = table.concat(n, sepc .. ' '); if 'episode' == config.CitationClass then -- handle the oddities that are strictly {{cite episode}} local Season = A['Season']; local SeriesNumber = A['SeriesNumber']; if utilities.is_set (Season) and utilities.is_set (SeriesNumber) then -- these are mutually exclusive so if both are set table.insert( z.message_tail, { utilities.set_message ( 'err_redundant_parameters', {utilities.wrap_style ('parameter', 'season') .. ' and ' .. utilities.wrap_style ('parameter', 'seriesno')}, true ) } ); -- add error message SeriesNumber = ''; -- unset; prefer |season= over |seriesno= end -- assemble a table of parts concatenated later into Series if utilities.is_set (Season) then table.insert(s, wrap_msg ('season', Season, use_lowercase)); end if utilities.is_set (SeriesNumber) then table.insert(s, wrap_msg ('seriesnum', SeriesNumber, use_lowercase)); end if utilities.is_set (Issue) then table.insert(s, wrap_msg ('episode', Issue, use_lowercase)); end Issue = ''; -- unset because this is not a unique parameter Chapter = Title; -- promote title parameters to chapter ScriptChapter = ScriptTitle; ScriptChapter_origin = A:ORIGIN('ScriptTitle'); ChapterLink = TitleLink; -- alias |episode-link= TransChapter = TransTitle; ChapterURL = URL; ChapterUrlAccess = UrlAccess; ChapterURL_origin = A:ORIGIN('URL'); Title = Series; -- promote series to title TitleLink = SeriesLink; Series = table.concat(s, sepc .. ' '); -- this is concatenation of season, seriesno, episode number if utilities.is_set (ChapterLink) and not utilities.is_set (ChapterURL) then -- link but not URL Chapter = utilities.make_wikilink (ChapterLink, Chapter); elseif utilities.is_set (ChapterLink) and utilities.is_set (ChapterURL) then -- if both are set, URL links episode; Series = utilities.make_wikilink (ChapterLink, Series); end URL = ''; -- unset TransTitle = ''; ScriptTitle = ''; else -- now oddities that are cite serial Issue = ''; -- unset because this parameter no longer supported by the citation/core version of cite serial Chapter = A['Episode']; -- TODO: make |episode= available to cite episode someday? if utilities.is_set (Series) and utilities.is_set (SeriesLink) then Series = utilities.make_wikilink (SeriesLink, Series); end Series = utilities.wrap_style ('italic-title', Series); -- series is italicized end end -- end of {{cite episode}} stuff -- handle type parameter for those CS1 citations that have default values if utilities.in_array (config.CitationClass, {"AV-media-notes", "interview", "mailinglist", "map", "podcast", "pressrelease", "report", "techreport", "thesis"}) then TitleType = set_titletype (config.CitationClass, TitleType); if utilities.is_set (Degree) and "Thesis" == TitleType then -- special case for cite thesis TitleType = Degree .. ' ' .. cfg.title_types ['thesis']:lower(); end end if utilities.is_set (TitleType) then -- if type parameter is specified TitleType = utilities.substitute ( cfg.messages['type'], TitleType); -- display it in parentheses -- TODO: Hack on TitleType to fix bunched parentheses problem end -- legacy: promote PublicationDate to Date if neither Date nor Year are set. local Date_origin; -- to hold the name of parameter promoted to Date; required for date error messaging if not utilities.is_set (Date) then Date = Year; -- promote Year to Date Year = nil; -- make nil so Year as empty string isn't used for CITEREF if not utilities.is_set (Date) and utilities.is_set (PublicationDate) then -- use PublicationDate when |date= and |year= are not set Date = PublicationDate; -- promote PublicationDate to Date PublicationDate = ''; -- unset, no longer needed Date_origin = A:ORIGIN('PublicationDate'); -- save the name of the promoted parameter else Date_origin = A:ORIGIN('Year'); -- save the name of the promoted parameter end else Date_origin = A:ORIGIN('Date'); -- not a promotion; name required for error messaging end if PublicationDate == Date then PublicationDate = ''; end -- if PublicationDate is same as Date, don't display in rendered citation --[[ Go test all of the date-holding parameters for valid MOS:DATE format and make sure that dates are real dates. This must be done before we do COinS because here is where we get the date used in the metadata. Date validation supporting code is in Module:Citation/CS1/Date_validation ]] do -- create defined block to contain local variables error_message, date_parameters_list, mismatch local error_message = ''; -- AirDate has been promoted to Date so not necessary to check it local date_parameters_list = { ['access-date'] = {val = AccessDate, name = A:ORIGIN ('AccessDate')}, ['archive-date'] = {val = ArchiveDate, name = A:ORIGIN ('ArchiveDate')}, ['date'] = {val = Date, name = Date_origin}, ['doi-broken-date'] = {val = DoiBroken, name = A:ORIGIN ('DoiBroken')}, ['pmc-embargo-date'] = {val = Embargo, name = A:ORIGIN ('Embargo')}, ['lay-date'] = {val = LayDate, name = A:ORIGIN ('LayDate')}, ['publication-date'] = {val = PublicationDate, name = A:ORIGIN ('PublicationDate')}, ['year'] = {val = Year, name = A:ORIGIN ('Year')}, }; local error_list = {}; anchor_year, Embargo = validation.dates(date_parameters_list, COinS_date, error_list); -- start temporary Julian / Gregorian calendar uncertainty categorization if COinS_date.inter_cal_cat then utilities.add_prop_cat ('jul_greg_uncertainty'); end -- end temporary Julian / Gregorian calendar uncertainty categorization if utilities.is_set (Year) and utilities.is_set (Date) then -- both |date= and |year= not normally needed; local mismatch = validation.year_date_check (Year, Date); if 0 == mismatch then -- |year= does not match a year-value in |date= table.insert (error_list, '<code class="cs1-code">&#124;year= / &#124;date= mismatch</code>'); elseif 1 == mismatch then -- |year= matches year-value in |date= utilities.set_message ('maint_date_year'); -- add a maint cat end end if 0 == #error_list then -- error free dates only; 0 when error_list is empty local modified = false; -- flag if utilities.is_set (DF) then -- if we need to reformat dates modified = validation.reformat_dates (date_parameters_list, DF); -- reformat to DF format, use long month names if appropriate end if true == validation.date_hyphen_to_dash (date_parameters_list) then -- convert hyphens to dashes where appropriate modified = true; utilities.set_message ('maint_date_format'); -- hyphens were converted so add maint category end -- for those wikis that can and want to have English date names translated to the local language, -- uncomment the next three lines. Not supported by en.wiki (for obvious reasons) -- set validation.date_name_xlate() second argument to true to translate English digits to local digits (will translate ymd dates) -- if validation.date_name_xlate (date_parameters_list, false) then -- modified = true; -- end if modified then -- if the date_parameters_list values were modified AccessDate = date_parameters_list['access-date'].val; -- overwrite date holding parameters with modified values ArchiveDate = date_parameters_list['archive-date'].val; Date = date_parameters_list['date'].val; DoiBroken = date_parameters_list['doi-broken-date'].val; LayDate = date_parameters_list['lay-date'].val; PublicationDate = date_parameters_list['publication-date'].val; end else table.insert (z.message_tail, {utilities.set_message ('err_bad_date', {utilities.make_sep_list (#error_list, error_list)}, true)}); -- add this error message end end -- end of do local ID_list_coins = identifiers.extract_ids (args); -- gets identifiers and their values from args; this list used for COinS and source for build_id_list() if utilities.is_set (DoiBroken) and not ID_list_coins['DOI'] then table.insert (z.message_tail, {utilities.set_message ('err_doibroken_missing_doi', A:ORIGIN('DoiBroken'))}); end local ID_access_levels = identifiers.extract_id_access_levels (args, ID_list_coins); local ID_list = identifiers.build_id_list (ID_list_coins, {IdAccessLevels = ID_access_levels, DoiBroken = DoiBroken, ASINTLD = ASINTLD, IgnoreISBN = IgnoreISBN, Embargo = Embargo, Class = Class}); -- render identifiers -- Account for the oddities that are {{cite arxiv}}, {{cite biorxiv}}, {{cite citeseerx}}, {{cite ssrn}}, before generation of COinS data. if utilities.in_array (config.CitationClass, whitelist.preprint_template_list) then if not utilities.is_set (ID_list_coins[config.CitationClass:upper()]) then -- |arxiv= or |eprint= required for cite arxiv; |biorxiv= & |citeseerx= required for their templates table.insert (z.message_tail, {utilities.set_message ('err_' .. config.CitationClass .. '_missing', {}, true)}); -- add error message end Periodical = ({['arxiv'] = 'arXiv', ['biorxiv'] = 'bioRxiv', ['citeseerx'] = 'CiteSeerX', ['ssrn'] = 'Social Science Research Network'})[config.CitationClass]; end -- Link the title of the work if no |url= was provided, but we have a |pmc= or a |doi= with |doi-access=free if config.CitationClass == "journal" and not utilities.is_set (URL) and not utilities.is_set (TitleLink) and not utilities.in_array (cfg.keywords_xlate[Title], {'off', 'none'}) then -- TODO: remove 'none' once existing citations have been switched to 'off', so 'none' can be used as token for "no title" instead if 'none' ~= cfg.keywords_xlate[auto_select] then -- if auto-linking not disabled if identifiers.auto_link_urls[auto_select] then -- manual selection URL = identifiers.auto_link_urls[auto_select]; -- set URL to be the same as identifier's external link URL_origin = cfg.id_handlers[auto_select:upper()].parameters[1]; -- set URL_origin to parameter name for use in error message if citation is missing a |title= elseif identifiers.auto_link_urls['pmc'] then -- auto-select PMC URL = identifiers.auto_link_urls['pmc']; -- set URL to be the same as the PMC external link if not embargoed URL_origin = cfg.id_handlers['PMC'].parameters[1]; -- set URL_origin to parameter name for use in error message if citation is missing a |title= elseif identifiers.auto_link_urls['doi'] then -- auto-select DOI URL = identifiers.auto_link_urls['doi']; URL_origin = cfg.id_handlers['DOI'].parameters[1]; end end if utilities.is_set (URL) and utilities.is_set (AccessDate) then -- access date requires |url=; identifier-created URL is not |url= table.insert( z.message_tail, { utilities.set_message ( 'err_accessdate_missing_url', {}, true ) } ); -- add an error message AccessDate = ''; -- unset end end -- At this point fields may be nil if they weren't specified in the template use. We can use that fact. -- Test if citation has no title if not utilities.is_set (Title) and not utilities.is_set (TransTitle) and not utilities.is_set (ScriptTitle) then -- has special case for cite episode table.insert( z.message_tail, { utilities.set_message ( 'err_citation_missing_title', {'episode' == config.CitationClass and 'series' or 'title'}, true ) } ); end if utilities.in_array (cfg.keywords_xlate[Title], {'off', 'none'}) and utilities.in_array (config.CitationClass, {'journal', 'citation'}) and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and ('journal' == Periodical_origin or 'script-journal' == ScriptPeriodical_origin) then -- special case for journal cites Title = ''; -- set title to empty string utilities.set_message ('maint_untitled'); -- add maint cat end check_for_url ({ -- add error message when any of these parameters hold a URL ['title']=Title, [A:ORIGIN('Chapter')]=Chapter, [Periodical_origin] = Periodical, [PublisherName_origin] = PublisherName }); -- COinS metadata (see <http://ocoins.info/>) for automated parsing of citation information. -- handle the oddity that is cite encyclopedia and {{citation |encyclopedia=something}}. Here we presume that -- when Periodical, Title, and Chapter are all set, then Periodical is the book (encyclopedia) title, Title -- is the article title, and Chapter is a section within the article. So, we remap local coins_chapter = Chapter; -- default assuming that remapping not required local coins_title = Title; -- et tu if 'encyclopaedia' == config.CitationClass or ('citation' == config.CitationClass and utilities.is_set (Encyclopedia)) then if utilities.is_set (Chapter) and utilities.is_set (Title) and utilities.is_set (Periodical) then -- if all are used then coins_chapter = Title; -- remap coins_title = Periodical; end end local coins_author = a; -- default for coins rft.au if 0 < #c then -- but if contributor list coins_author = c; -- use that instead end -- this is the function call to COinS() local OCinSoutput = metadata.COinS({ ['Periodical'] = utilities.strip_apostrophe_markup (Periodical), -- no markup in the metadata ['Encyclopedia'] = Encyclopedia, -- just a flag; content ignored by ~/COinS ['Chapter'] = metadata.make_coins_title (coins_chapter, ScriptChapter), -- Chapter and ScriptChapter stripped of bold / italic wiki-markup ['Degree'] = Degree; -- cite thesis only ['Title'] = metadata.make_coins_title (coins_title, ScriptTitle), -- Title and ScriptTitle stripped of bold / italic wiki-markup ['PublicationPlace'] = PublicationPlace, ['Date'] = COinS_date.rftdate, -- COinS_date has correctly formatted date if Date is valid; ['Season'] = COinS_date.rftssn, ['Quarter'] = COinS_date.rftquarter, ['Chron'] = COinS_date.rftchron or (not COinS_date.rftdate and Date) or '', -- chron but if not set and invalid date format use Date; keep this last bit? ['Series'] = Series, ['Volume'] = Volume, ['Issue'] = Issue, ['Pages'] = coins_pages or metadata.get_coins_pages (first_set ({Sheet, Sheets, Page, Pages, At}, 5)), -- pages stripped of external links ['Edition'] = Edition, ['PublisherName'] = PublisherName or Newsgroup, -- any apostrophe markup already removed from PublisherName ['URL'] = first_set ({ChapterURL, URL}, 2), ['Authors'] = coins_author, ['ID_list'] = ID_list_coins, ['RawPage'] = this_page.prefixedText, }, config.CitationClass); -- Account for the oddities that are {{cite arxiv}}, {{cite biorxiv}}, {{cite citeseerx}}, and {{cite ssrn}} AFTER generation of COinS data. if utilities.in_array (config.CitationClass, whitelist.preprint_template_list) then -- we have set rft.jtitle in COinS to arXiv, bioRxiv, CiteSeerX, or ssrn now unset so it isn't displayed Periodical = ''; -- periodical not allowed in these templates; if article has been published, use cite journal end -- special case for cite newsgroup. Do this after COinS because we are modifying Publishername to include some static text if 'newsgroup' == config.CitationClass and utilities.is_set (Newsgroup) then PublisherName = utilities.substitute (cfg.messages['newsgroup'], external_link( 'news:' .. Newsgroup, Newsgroup, Newsgroup_origin, nil )); end -- Now perform various field substitutions. -- We also add leading spaces and surrounding markup and punctuation to the -- various parts of the citation, but only when they are non-nil. local EditorCount; -- used only for choosing {ed.) or (eds.) annotation at end of editor name-list do local last_first_list; local control = { format = NameListStyle, -- empty string or 'vanc' maximum = nil, -- as if display-authors or display-editors not set lastauthoramp = LastAuthorAmp, mode = Mode }; do -- do editor name list first because the now unsupported coauthors used to modify control table control.maximum , editor_etal = get_display_names (A['DisplayEditors'], #e, 'editors', editor_etal); last_first_list, EditorCount = list_people(control, e, editor_etal); if utilities.is_set (Editors) then Editors, editor_etal = name_has_etal (Editors, editor_etal, false, 'editors'); -- find and remove variations on et al. if editor_etal then Editors = Editors .. ' ' .. cfg.messages['et al']; -- add et al. to editors parameter beause |display-editors=etal end EditorCount = 2; -- we don't know but assume |editors= is multiple names; spoof to display (eds.) annotation else Editors = last_first_list; -- either an author name list or an empty string end if 1 == EditorCount and (true == editor_etal or 1 < #e) then -- only one editor displayed but includes etal then EditorCount = 2; -- spoof to display (eds.) annotation end end do -- now do interviewers control.maximum , interviewer_etal = get_display_names (A['DisplayInterviewers'], #interviewers_list, 'interviewers', interviewer_etal); Interviewers = list_people (control, interviewers_list, interviewer_etal); end do -- now do translators control.maximum , translator_etal = get_display_names (A['DisplayTranslators'], #t, 'translators', translator_etal); Translators = list_people (control, t, translator_etal); end do -- now do contributors control.maximum , contributor_etal = get_display_names (A['DisplayContributors'], #c, 'contributors', contributor_etal); Contributors = list_people (control, c, contributor_etal); end do -- now do authors control.maximum , author_etal = get_display_names (A['DisplayAuthors'], #a, 'authors', author_etal); last_first_list = list_people(control, a, author_etal); if utilities.is_set (Authors) then Authors, author_etal = name_has_etal (Authors, author_etal, false, 'authors'); -- find and remove variations on et al. if author_etal then Authors = Authors .. ' ' .. cfg.messages['et al']; -- add et al. to authors parameter end else Authors = last_first_list; -- either an author name list or an empty string end end -- end of do if utilities.is_set (Authors) and utilities.is_set (Collaboration) then Authors = Authors .. ' (' .. Collaboration .. ')'; -- add collaboration after et al. end end -- apply |[xx-]format= styling; at the end, these parameters hold correctly styled format annotation, -- an error message if the associated URL is not set, or an empty string for concatenation ArchiveFormat = style_format (ArchiveFormat, ArchiveURL, 'archive-format', 'archive-url'); ConferenceFormat = style_format (ConferenceFormat, ConferenceURL, 'conference-format', 'conference-url'); Format = style_format (Format, URL, 'format', 'url'); LayFormat = style_format (LayFormat, LayURL, 'lay-format', 'lay-url'); TranscriptFormat = style_format (TranscriptFormat, TranscriptURL, 'transcript-format', 'transcripturl'); -- special case for chapter format so no error message or cat when chapter not supported if not (utilities.in_array (config.CitationClass, {'web', 'news', 'journal', 'magazine', 'pressrelease', 'podcast', 'newsgroup', 'arxiv', 'biorxiv', 'citeseerx', 'ssrn'}) or ('citation' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and not utilities.is_set (Encyclopedia))) then ChapterFormat = style_format (ChapterFormat, ChapterURL, 'chapter-format', 'chapter-url'); end if not utilities.is_set (URL) then if utilities.in_array (config.CitationClass, {"web", "podcast", "mailinglist"}) or -- |url= required for cite web, cite podcast, and cite mailinglist ('citation' == config.CitationClass and ('website' == Periodical_origin or 'script-website' == ScriptPeriodical_origin)) then -- and required for {{citation}} with |website= or |script-website= table.insert( z.message_tail, { utilities.set_message ( 'err_cite_web_url', {}, true ) } ); end -- do we have |accessdate= without either |url= or |chapter-url=? if utilities.is_set (AccessDate) and not utilities.is_set (ChapterURL) then -- ChapterURL may be set when URL is not set; table.insert( z.message_tail, { utilities.set_message ( 'err_accessdate_missing_url', {}, true ) } ); AccessDate = ''; end end local OriginalURL, OriginalURL_origin, OriginalFormat, OriginalAccess; UrlStatus = UrlStatus:lower(); -- used later when assembling archived text if utilities.is_set ( ArchiveURL ) then if utilities.is_set (ChapterURL) then -- if chapter-url= is set apply archive url to it OriginalURL = ChapterURL; -- save copy of source chapter's url for archive text OriginalURL_origin = ChapterURL_origin; -- name of |chapter-url= parameter for error messages OriginalFormat = ChapterFormat; -- and original |chapter-format= if 'live' ~= UrlStatus then ChapterURL = ArchiveURL -- swap-in the archive's URL ChapterURL_origin = A:ORIGIN('ArchiveURL') -- name of |archive-url= parameter for error messages ChapterFormat = ArchiveFormat or ''; -- swap in archive's format ChapterUrlAccess = nil; -- restricted access levels do not make sense for archived URLs end elseif utilities.is_set (URL) then OriginalURL = URL; -- save copy of original source URL OriginalURL_origin = URL_origin; -- name of URL parameter for error messages OriginalFormat = Format; -- and original |format= OriginalAccess = UrlAccess; if 'live' ~= UrlStatus then -- if URL set then |archive-url= applies to it URL = ArchiveURL -- swap-in the archive's URL URL_origin = A:ORIGIN('ArchiveURL') -- name of archive URL parameter for error messages Format = ArchiveFormat or ''; -- swap in archive's format UrlAccess = nil; -- restricted access levels do not make sense for archived URLs end end end if utilities.in_array (config.CitationClass, {'web', 'news', 'journal', 'magazine', 'pressrelease', 'podcast', 'newsgroup', 'arxiv', 'biorxiv', 'citeseerx', 'ssrn'}) or -- if any of the 'periodical' cites except encyclopedia ('citation' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and not utilities.is_set (Encyclopedia)) then local chap_param; if utilities.is_set (Chapter) then -- get a parameter name from one of these chapter related meta-parameters chap_param = A:ORIGIN ('Chapter') elseif utilities.is_set (TransChapter) then chap_param = A:ORIGIN ('TransChapter') elseif utilities.is_set (ChapterURL) then chap_param = A:ORIGIN ('ChapterURL') elseif utilities.is_set (ScriptChapter) then chap_param = ScriptChapter_origin; else utilities.is_set (ChapterFormat) chap_param = A:ORIGIN ('ChapterFormat') end if utilities.is_set (chap_param) then -- if we found one table.insert( z.message_tail, { utilities.set_message ( 'err_chapter_ignored', {chap_param}, true ) } ); -- add error message Chapter = ''; -- and set them to empty string to be safe with concatenation TransChapter = ''; ChapterURL = ''; ScriptChapter = ''; ChapterFormat = ''; end else -- otherwise, format chapter / article title local no_quotes = false; -- default assume that we will be quoting the chapter parameter value if utilities.is_set (Contribution) and 0 < #c then -- if this is a contribution with contributor(s) if utilities.in_array (Contribution:lower(), cfg.keywords_lists.contribution) then -- and a generic contribution title no_quotes = true; -- then render it unquoted end end Chapter = format_chapter_title (ScriptChapter, ScriptChapter_origin, Chapter, Chapter_origin, TransChapter, TransChapter_origin, ChapterURL, ChapterURL_origin, no_quotes, ChapterUrlAccess); -- Contribution is also in Chapter if utilities.is_set (Chapter) then Chapter = Chapter .. ChapterFormat ; if 'map' == config.CitationClass and utilities.is_set (TitleType) then Chapter = Chapter .. ' ' .. TitleType; -- map annotation here; not after title end Chapter = Chapter .. sepc .. ' '; elseif utilities.is_set (ChapterFormat) then -- |chapter= not set but |chapter-format= is so ... Chapter = ChapterFormat .. sepc .. ' '; -- ... ChapterFormat has error message, we want to see it end end -- Format main title local plain_title = false; local accept_title; Title, accept_title = utilities.has_accept_as_written (Title, true); -- remove accept-this-as-written markup when it wraps all of <Title> if accept_title and ('' == Title) then -- only support forced empty for now "(())" Title = cfg.messages['notitle']; -- replace by predefined "No title" message -- TODO: utilities.set_message ( 'err_redundant_parameters', ...); -- issue proper error message instead of muting ScriptTitle = ''; -- just mute for now TransTitle = ''; -- just mute for now plain_title = true; -- suppress text decoration for descriptive title utilities.set_message ('maint_untitled'); -- add maint cat end if not accept_title then -- <Title> not wrapped in accept-as-written markup if '...' == Title:sub (-3) then -- if ellipsis is the last three characters of |title= Title = Title:gsub ('(%.%.%.)%.+$', '%1'); -- limit the number of dots to three elseif not mw.ustring.find (Title, '%.%s*%a%.$') and -- end of title is not a 'dot-(optional space-)letter-dot' initialism ... not mw.ustring.find (Title, '%s+%a%.$') then -- ...and not a 'space-letter-dot' initial (''Allium canadense'' L.) Title = mw.ustring.gsub(Title, '%' .. sepc .. '$', ''); -- remove any trailing separator character; sepc and ms.ustring() here for languages that use multibyte separator characters end if utilities.is_set (ArchiveURL) and is_archived_copy (Title) then utilities.set_message ('maint_archived_copy'); -- add maintenance category before we modify the content of Title end if is_generic_title (Title) then table.insert (z.message_tail, {utilities.set_message ( 'err_generic_title', {}, true ) } ); -- set an error message end end if (not plain_title) and (utilities.in_array (config.CitationClass, {'web', 'news', 'journal', 'magazine', 'pressrelease', 'podcast', 'newsgroup', 'mailinglist', 'interview', 'arxiv', 'biorxiv', 'citeseerx', 'ssrn'}) or ('citation' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)) and not utilities.is_set (Encyclopedia)) or ('map' == config.CitationClass and (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical)))) then -- special case for cite map when the map is in a periodical treat as an article Title = kern_quotes (Title); -- if necessary, separate title's leading and trailing quote marks from module provided quote marks Title = utilities.wrap_style ('quoted-title', Title); Title = script_concatenate (Title, ScriptTitle, 'script-title'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped TransTitle = utilities.wrap_style ('trans-quoted-title', TransTitle ); elseif plain_title or ('report' == config.CitationClass) then -- no styling for cite report and descriptive titles (otherwise same as above) Title = script_concatenate (Title, ScriptTitle, 'script-title'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped TransTitle = utilities.wrap_style ('trans-quoted-title', TransTitle ); -- for cite report, use this form for trans-title else Title = utilities.wrap_style ('italic-title', Title); Title = script_concatenate (Title, ScriptTitle, 'script-title'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after title is wrapped TransTitle = utilities.wrap_style ('trans-italic-title', TransTitle); end local TransError = ""; if utilities.is_set (TransTitle) then if utilities.is_set (Title) then TransTitle = " " .. TransTitle; else TransError = " " .. utilities.set_message ( 'err_trans_missing_title', {'title'} ); end end if utilities.is_set (Title) then -- TODO: is this the right place to be making Wikisource URLs? if utilities.is_set (TitleLink) and utilities.is_set (URL) then table.insert( z.message_tail, { utilities.set_message ( 'err_wikilink_in_url', {}, true ) } ); -- set an error message because we can't have both TitleLink = ''; -- unset end if not utilities.is_set (TitleLink) and utilities.is_set (URL) then Title = external_link (URL, Title, URL_origin, UrlAccess) .. TransTitle .. TransError .. Format; URL = ''; -- unset these because no longer needed Format = ""; elseif utilities.is_set (TitleLink) and not utilities.is_set (URL) then local ws_url; ws_url = wikisource_url_make (TitleLink); -- ignore ws_label return; not used here if ws_url then Title = external_link (ws_url, Title .. '&nbsp;', 'ws link in title-link'); -- space char after Title to move icon away from italic text; TODO: a better way to do this? Title = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], TitleLink, Title}); Title = Title .. TransTitle .. TransError; else Title = utilities.make_wikilink (TitleLink, Title) .. TransTitle .. TransError; end else local ws_url, ws_label, L; -- Title has italic or quote markup by the time we get here which causes is_wikilink() to return 0 (not a wikilink) ws_url, ws_label, L = wikisource_url_make (Title:gsub('[\'"](.-)[\'"]', '%1')); -- make ws URL from |title= interwiki link (strip italic or quote markup); link portion L becomes tooltip label if ws_url then Title = Title:gsub ('%b[]', ws_label); -- replace interwiki link with ws_label to retain markup Title = external_link (ws_url, Title .. '&nbsp;', 'ws link in title'); -- space char after Title to move icon away from italic text; TODO: a better way to do this? Title = utilities.substitute (cfg.presentation['interwiki-icon'], {cfg.presentation['class-wikisource'], L, Title}); Title = Title .. TransTitle .. TransError; else Title = Title .. TransTitle .. TransError; end end else Title = TransTitle .. TransError; end if utilities.is_set (Place) then Place = " " .. wrap_msg ('written', Place, use_lowercase) .. sepc .. " "; end if utilities.is_set (Conference) then if utilities.is_set (ConferenceURL) then Conference = external_link( ConferenceURL, Conference, ConferenceURL_origin, nil ); end Conference = sepc .. " " .. Conference .. ConferenceFormat; elseif utilities.is_set (ConferenceURL) then Conference = sepc .. " " .. external_link( ConferenceURL, nil, ConferenceURL_origin, nil ); end if not utilities.is_set (Position) then local Minutes = A['Minutes']; local Time = A['Time']; if utilities.is_set (Minutes) then if utilities.is_set (Time) then table.insert( z.message_tail, { utilities.set_message ( 'err_redundant_parameters', {utilities.wrap_style ('parameter', 'minutes') .. ' and ' .. utilities.wrap_style ('parameter', 'time')}, true ) } ); end Position = " " .. Minutes .. " " .. cfg.messages['minutes']; else if utilities.is_set (Time) then local TimeCaption = A['TimeCaption'] if not utilities.is_set (TimeCaption) then TimeCaption = cfg.messages['event']; if sepc ~= '.' then TimeCaption = TimeCaption:lower(); end end Position = " " .. TimeCaption .. " " .. Time; end end else Position = " " .. Position; At = ''; end Page, Pages, Sheet, Sheets = format_pages_sheets (Page, Pages, Sheet, Sheets, config.CitationClass, Periodical_origin, sepc, NoPP, use_lowercase); At = utilities.is_set (At) and (sepc .. " " .. At) or ""; Position = utilities.is_set (Position) and (sepc .. " " .. Position) or ""; if config.CitationClass == 'map' then local Sections = A['Sections']; -- Section (singular) is an alias of Chapter so set earlier local Inset = A['Inset']; if utilities.is_set ( Inset ) then Inset = sepc .. " " .. wrap_msg ('inset', Inset, use_lowercase); end if utilities.is_set ( Sections ) then Section = sepc .. " " .. wrap_msg ('sections', Sections, use_lowercase); elseif utilities.is_set ( Section ) then Section = sepc .. " " .. wrap_msg ('section', Section, use_lowercase); end At = At .. Inset .. Section; end if utilities.is_set (Language) then Language = language_parameter (Language); -- format, categories, name from ISO639-1, etc. else Language=""; -- language not specified so make sure this is an empty string; --[[ TODO: need to extract the wrap_msg from language_parameter so that we can solve parentheses bunching problem with Format/Language/TitleType ]] end Others = utilities.is_set (Others) and (sepc .. " " .. Others) or ""; if utilities.is_set (Translators) then Others = safe_join ({sepc .. ' ', wrap_msg ('translated', Translators, use_lowercase), Others}, sepc); end if utilities.is_set (Interviewers) then Others = safe_join ({sepc .. ' ', wrap_msg ('interview', Interviewers, use_lowercase), Others}, sepc); end TitleNote = utilities.is_set (TitleNote) and (sepc .. " " .. TitleNote) or ""; if utilities.is_set (Edition) then if Edition:match ('%f[%a][Ee]d%.?$') or Edition:match ('%f[%a][Ee]dition$') then utilities.set_message ('maint_extra_text', 'edition'); -- add maint cat end Edition = " " .. wrap_msg ('edition', Edition); else Edition = ''; end Series = utilities.is_set (Series) and wrap_msg ('series', {sepc, Series}) or ""; -- not the same as SeriesNum OrigDate = utilities.is_set (OrigDate) and wrap_msg ('origdate', OrigDate) or ''; Agency = utilities.is_set (Agency) and wrap_msg ('agency', {sepc, Agency}) or ""; Volume = format_volume_issue (Volume, Issue, config.CitationClass, Periodical_origin, sepc, use_lowercase); ------------------------------------ totally unrelated data Via = utilities.is_set (Via) and wrap_msg ('via', Via) or ''; if utilities.is_set (AccessDate) then local retrv_text = " " .. cfg.messages['retrieved'] AccessDate = nowrap_date (AccessDate); -- wrap in nowrap span if date in appropriate format if (sepc ~= ".") then retrv_text = retrv_text:lower() end -- if mode is cs2, lower case AccessDate = utilities.substitute (retrv_text, AccessDate); -- add retrieved text AccessDate = utilities.substitute (cfg.presentation['accessdate'], {sepc, AccessDate}); -- allow editors to hide accessdates end if utilities.is_set (ID) then ID = sepc .. " " .. ID; end if "thesis" == config.CitationClass and utilities.is_set (Docket) then ID = sepc .. " Docket " .. Docket .. ID; end if "report" == config.CitationClass and utilities.is_set (Docket) then -- for cite report when |docket= is set ID = sepc .. ' ' .. Docket; -- overwrite ID even if |id= is set end if utilities.is_set (URL) then URL = " " .. external_link( URL, nil, URL_origin, UrlAccess ); end if utilities.is_set (Quote) or utilities.is_set (TransQuote) or utilities.is_set (ScriptQuote) then if utilities.is_set (Quote) then if Quote:sub(1, 1) == '"' and Quote:sub(-1, -1) == '"' then -- if first and last characters of quote are quote marks Quote = Quote:sub(2, -2); -- strip them off end end Quote = utilities.wrap_style ('quoted-text', Quote ); -- wrap in <q>...</q> tags if utilities.is_set (ScriptQuote) then Quote = script_concatenate (Quote, ScriptQuote, 'script-quote'); -- <bdi> tags, lang attribute, categorization, etc.; must be done after quote is wrapped end if utilities.is_set (TransQuote) then if TransQuote:sub(1, 1) == '"' and TransQuote:sub(-1, -1) == '"' then -- if first and last characters of |trans-quote are quote marks TransQuote = TransQuote:sub(2, -2); -- strip them off end Quote = Quote .. " " .. utilities.wrap_style ('trans-quoted-title', TransQuote ); end if utilities.is_set (QuotePage) or utilities.is_set (QuotePages) then -- add page prefix local quote_prefix = ''; if utilities.is_set (QuotePage) then if not NoPP then quote_prefix = utilities.substitute (cfg.messages['p-prefix'], {sepc, QuotePage}), '', '', ''; else quote_prefix = utilities.substitute (cfg.messages['nopp'], {sepc, QuotePage}), '', '', ''; end elseif utilities.is_set (QuotePages) then if tonumber(QuotePages) ~= nil and not NoPP then -- if only digits, assume single page quote_prefix = utilities.substitute (cfg.messages['p-prefix'], {sepc, QuotePages}), '', ''; elseif not NoPP then quote_prefix = utilities.substitute (cfg.messages['pp-prefix'], {sepc, QuotePages}), '', ''; else quote_prefix = utilities.substitute (cfg.messages['nopp'], {sepc, QuotePages}), '', ''; end end Quote = quote_prefix .. ": " .. Quote; else Quote = sepc .. " " .. Quote; end PostScript = ""; -- cs1|2 does not supply terminal punctuation when |quote= is set end local Archived if utilities.is_set (ArchiveURL) then local arch_text; if not utilities.is_set (ArchiveDate) then ArchiveDate = utilities.set_message ('err_archive_missing_date'); end if "live" == UrlStatus then arch_text = cfg.messages['archived']; if sepc ~= "." then arch_text = arch_text:lower() end Archived = sepc .. " " .. utilities.substitute ( cfg.messages['archived-live'], { external_link( ArchiveURL, arch_text, A:ORIGIN('ArchiveURL'), nil ) .. ArchiveFormat, ArchiveDate } ); if not utilities.is_set (OriginalURL) then Archived = Archived .. " " .. utilities.set_message ('err_archive_missing_url'); end elseif utilities.is_set (OriginalURL) then -- UrlStatus is empty, 'dead', 'unfit', 'usurped', 'bot: unknown' if utilities.in_array (UrlStatus, {'unfit', 'usurped', 'bot: unknown'}) then arch_text = cfg.messages['archived-unfit']; if sepc ~= "." then arch_text = arch_text:lower() end Archived = sepc .. " " .. arch_text .. ArchiveDate; -- format already styled if 'bot: unknown' == UrlStatus then utilities.set_message ('maint_bot_unknown'); -- and add a category if not already added else utilities.set_message ('maint_unfit'); -- and add a category if not already added end else -- UrlStatus is empty, 'dead' arch_text = cfg.messages['archived-dead']; if sepc ~= "." then arch_text = arch_text:lower() end Archived = sepc .. " " .. utilities.substitute ( arch_text, { external_link( OriginalURL, cfg.messages['original'], OriginalURL_origin, OriginalAccess ) .. OriginalFormat, ArchiveDate } ); -- format already styled end else -- OriginalUrl not set arch_text = cfg.messages['archived-missing']; if sepc ~= "." then arch_text = arch_text:lower() end Archived = sepc .. " " .. utilities.substitute ( arch_text, { utilities.set_message ('err_archive_missing_url'), ArchiveDate } ); end elseif utilities.is_set (ArchiveFormat) then Archived = ArchiveFormat; -- if set and ArchiveURL not set ArchiveFormat has error message else Archived = "" end local Lay = ''; if utilities.is_set (LayURL) then if utilities.is_set (LayDate) then LayDate = " (" .. LayDate .. ")" end if utilities.is_set (LaySource) then LaySource = " &ndash; ''" .. utilities.safe_for_italics (LaySource) .. "''"; else LaySource = ""; end if sepc == '.' then Lay = sepc .. " " .. external_link( LayURL, cfg.messages['lay summary'], A:ORIGIN('LayURL'), nil ) .. LayFormat .. LaySource .. LayDate else Lay = sepc .. " " .. external_link( LayURL, cfg.messages['lay summary']:lower(), A:ORIGIN('LayURL'), nil ) .. LayFormat .. LaySource .. LayDate end elseif utilities.is_set (LayFormat) then -- Test if |lay-format= is given without giving a |lay-url= Lay = sepc .. LayFormat; -- if set and LayURL not set, then LayFormat has error message end if utilities.is_set (Transcript) then if utilities.is_set (TranscriptURL) then Transcript = external_link( TranscriptURL, Transcript, TranscriptURL_origin, nil ); end Transcript = sepc .. ' ' .. Transcript .. TranscriptFormat; elseif utilities.is_set (TranscriptURL) then Transcript = external_link( TranscriptURL, nil, TranscriptURL_origin, nil ); end local Publisher; if utilities.is_set (PublicationDate) then PublicationDate = wrap_msg ('published', PublicationDate); end if utilities.is_set (PublisherName) then if utilities.is_set (PublicationPlace) then Publisher = sepc .. " " .. PublicationPlace .. ": " .. PublisherName .. PublicationDate; else Publisher = sepc .. " " .. PublisherName .. PublicationDate; end elseif utilities.is_set (PublicationPlace) then Publisher= sepc .. " " .. PublicationPlace .. PublicationDate; else Publisher = PublicationDate; end -- Several of the above rely upon detecting this as nil, so do it last. if (utilities.is_set (Periodical) or utilities.is_set (ScriptPeriodical) or utilities.is_set (TransPeriodical)) then if utilities.is_set (Title) or utilities.is_set (TitleNote) then Periodical = sepc .. " " .. format_periodical (ScriptPeriodical, ScriptPeriodical_origin, Periodical, TransPeriodical, TransPeriodical_origin); else Periodical = format_periodical (ScriptPeriodical, ScriptPeriodical_origin, Periodical, TransPeriodical, TransPeriodical_origin); end end --[[ Handle the oddity that is cite speech. This code overrides whatever may be the value assigned to TitleNote (through |department=) and forces it to be " (Speech)" so that the annotation directly follows the |title= parameter value in the citation rather than the |event= parameter value (if provided). ]] if "speech" == config.CitationClass then -- cite speech only TitleNote = " (Speech)"; -- annotate the citation if utilities.is_set (Periodical) then -- if Periodical, perhaps because of an included |website= or |journal= parameter if utilities.is_set (Conference) then -- and if |event= is set Conference = Conference .. sepc .. " "; -- then add appropriate punctuation to the end of the Conference variable before rendering end end end -- Piece all bits together at last. Here, all should be non-nil. -- We build things this way because it is more efficient in LUA -- not to keep reassigning to the same string variable over and over. local tcommon; local tcommon2; -- used for book cite when |contributor= is set if utilities.in_array (config.CitationClass, {"journal", "citation"}) and utilities.is_set (Periodical) then if utilities.is_set (Others) then Others = safe_join ({Others, sepc .. " "}, sepc) end -- add terminal punctuation & space; check for dup sepc; TODO why do we need to do this here? tcommon = safe_join( {Others, Title, TitleNote, Conference, Periodical, Format, TitleType, Series, Language, Edition, Publisher, Agency, Volume}, sepc ); elseif utilities.in_array (config.CitationClass, {"book", "citation"}) and not utilities.is_set (Periodical) then -- special cases for book cites if utilities.is_set (Contributors) then -- when we are citing foreword, preface, introduction, etc. tcommon = safe_join( {Title, TitleNote}, sepc ); -- author and other stuff will come after this and before tcommon2 tcommon2 = safe_join( {Conference, Periodical, Format, TitleType, Series, Language, Volume, Others, Edition, Publisher, Agency}, sepc ); else tcommon = safe_join( {Title, TitleNote, Conference, Periodical, Format, TitleType, Series, Language, Volume, Others, Edition, Publisher, Agency}, sepc ); end elseif 'map' == config.CitationClass then -- special cases for cite map if utilities.is_set (Chapter) then -- map in a book; TitleType is part of Chapter tcommon = safe_join( {Title, Format, Edition, Scale, Series, Language, Cartography, Others, Publisher, Volume}, sepc ); elseif utilities.is_set (Periodical) then -- map in a periodical tcommon = safe_join( {Title, TitleType, Format, Periodical, Scale, Series, Language, Cartography, Others, Publisher, Volume}, sepc ); else -- a sheet or stand-alone map tcommon = safe_join( {Title, TitleType, Format, Edition, Scale, Series, Language, Cartography, Others, Publisher}, sepc ); end elseif 'episode' == config.CitationClass then -- special case for cite episode tcommon = safe_join( {Title, TitleNote, TitleType, Series, Language, Edition, Publisher}, sepc ); else -- all other CS1 templates tcommon = safe_join( {Title, TitleNote, Conference, Periodical, Format, TitleType, Series, Language, Volume, Others, Edition, Publisher, Agency}, sepc ); end if #ID_list > 0 then ID_list = safe_join( { sepc .. " ", table.concat( ID_list, sepc .. " " ), ID }, sepc ); else ID_list = ID; end local idcommon; if 'audio-visual' == config.CitationClass or 'episode' == config.CitationClass then -- special case for cite AV media & cite episode position transcript idcommon = safe_join( { ID_list, URL, Archived, Transcript, AccessDate, Via, Lay, Quote }, sepc ); else idcommon = safe_join( { ID_list, URL, Archived, AccessDate, Via, Lay, Quote }, sepc ); end local text; local pgtext = Position .. Sheet .. Sheets .. Page .. Pages .. At; if utilities.is_set (Date) then if utilities.is_set (Authors) or utilities.is_set (Editors) then -- date follows authors or editors when authors not set Date = " (" .. Date .. ")" .. OrigDate .. sepc .. " "; -- in parentheses else -- neither of authors and editors set if (string.sub(tcommon, -1, -1) == sepc) then -- if the last character of tcommon is sepc Date = " " .. Date .. OrigDate; -- Date does not begin with sepc else Date = sepc .. " " .. Date .. OrigDate; -- Date begins with sepc end end end if utilities.is_set (Authors) then if (not utilities.is_set (Date)) then -- when date is set it's in parentheses; no Authors termination Authors = terminate_name_list (Authors, sepc); -- when no date, terminate with 0 or 1 sepc and a space end if utilities.is_set (Editors) then local in_text = " "; local post_text = ""; if utilities.is_set (Chapter) and 0 == #c then in_text = in_text .. cfg.messages['in'] .. " " if (sepc ~= '.') then in_text = in_text:lower() -- lowercase for cs2 end end if EditorCount <= 1 then post_text = " (" .. cfg.messages['editor'] .. ")"; -- be consistent with no-author, no-date case else post_text = " (" .. cfg.messages['editors'] .. ")"; end Editors = terminate_name_list (in_text .. Editors .. post_text, sepc); -- terminate with 0 or 1 sepc and a space end if utilities.is_set (Contributors) then -- book cite and we're citing the intro, preface, etc. local by_text = sepc .. ' ' .. cfg.messages['by'] .. ' '; if (sepc ~= '.') then by_text = by_text:lower() end -- lowercase for cs2 Authors = by_text .. Authors; -- author follows title so tweak it here if utilities.is_set (Editors) and utilities.is_set (Date) then -- when Editors make sure that Authors gets terminated Authors = terminate_name_list (Authors, sepc); -- terminate with 0 or 1 sepc and a space end if (not utilities.is_set (Date)) then -- when date is set it's in parentheses; no Contributors termination Contributors = terminate_name_list (Contributors, sepc); -- terminate with 0 or 1 sepc and a space end text = safe_join( {Contributors, Date, Chapter, tcommon, Authors, Place, Editors, tcommon2, pgtext, idcommon }, sepc ); else text = safe_join( {Authors, Date, Chapter, Place, Editors, tcommon, pgtext, idcommon }, sepc ); end elseif utilities.is_set (Editors) then if utilities.is_set (Date) then if EditorCount <= 1 then Editors = Editors .. ", " .. cfg.messages['editor']; else Editors = Editors .. ", " .. cfg.messages['editors']; end else if EditorCount <= 1 then Editors = Editors .. " (" .. cfg.messages['editor'] .. ")" .. sepc .. " " else Editors = Editors .. " (" .. cfg.messages['editors'] .. ")" .. sepc .. " " end end text = safe_join( {Editors, Date, Chapter, Place, tcommon, pgtext, idcommon}, sepc ); else if utilities.in_array (config.CitationClass, {"journal", "citation"}) and utilities.is_set (Periodical) then text = safe_join( {Chapter, Place, tcommon, pgtext, Date, idcommon}, sepc ); else text = safe_join( {Chapter, Place, tcommon, Date, pgtext, idcommon}, sepc ); end end if utilities.is_set (PostScript) and PostScript ~= sepc then text = safe_join( {text, sepc}, sepc ); --Deals with italics, spaces, etc. text = text:sub(1, -sepc:len() - 1); end text = safe_join( {text, PostScript}, sepc ); -- Now enclose the whole thing in a <cite/> element local options = {}; if utilities.is_set (config.CitationClass) and config.CitationClass ~= "citation" then options.class = string.format ('%s %s %s', 'citation', config.CitationClass, utilities.is_set (Mode) and Mode or 'cs1'); -- class=citation required for blue highlight when used with |ref= else options.class = string.format ('%s %s', 'citation', utilities.is_set (Mode) and Mode or 'cs2'); end if utilities.is_set (Ref) and 'none' ~= cfg.keywords_xlate[Ref:lower()] then local id = Ref if ('harv' == Ref ) then local namelist = {}; -- holds selected contributor, author, editor name list local year = first_set ({Year, anchor_year}, 2); -- Year first for legacy citations and for YMD dates that require disambiguation if #c > 0 then -- if there is a contributor list namelist = c; -- select it elseif #a > 0 then -- or an author list namelist = a; elseif #e > 0 then -- or an editor list namelist = e; end if #namelist > 0 then -- if there are names in namelist id = anchor_id (namelist, year); -- go make the CITEREF anchor else id = ''; -- unset end end options.id = id; end if string.len(text:gsub("<span[^>/]*>(.-)</span>", "%1"):gsub("%b<>", "")) <= 2 then -- remove <span> tags and other HTML-like markup; then get length of what remains z.error_categories = {}; text = utilities.set_message ('err_empty_citation'); z.message_tail = {}; end local render = {}; -- here we collect the final bits for concatenation into the rendered citation if utilities.is_set (options.id) then -- here we wrap the rendered citation in <cite ...>...</cite> tags table.insert (render, utilities.substitute (cfg.presentation['cite-id'], {mw.uri.anchorEncode(options.id), mw.text.nowiki(options.class), text})); -- when |ref= is set else table.insert (render, utilities.substitute (cfg.presentation['cite'], {mw.text.nowiki(options.class), text})); -- all other cases end table.insert (render, utilities.substitute (cfg.presentation['ocins'], {OCinSoutput})); -- append metadata to the citation if 0 ~= #z.message_tail then table.insert (render, ' '); for i,v in ipairs( z.message_tail ) do if utilities.is_set (v[1]) then if i == #z.message_tail then table.insert (render, utilities.error_comment ( v[1], v[2] )); else table.insert (render, utilities.error_comment ( v[1] .. "; ", v[2] )); end end end end if 0 ~= #z.maintenance_cats then local maint_msgs = {}; -- here we collect all of the maint messages for _, v in ipairs( z.maintenance_cats ) do -- append maintenance categories local maint = {}; -- here we assemble a maintenence message table.insert (maint, v); -- maint msg is the category name table.insert (maint, ' ('); -- open the link text table.insert (maint, utilities.make_wikilink (':Category:' .. v, 'link')); -- add the link table.insert (maint, ')'); -- and close it table.insert (maint_msgs, table.concat (maint)); -- assemble new maint message and add it to the maint_msgs table end table.insert (render, utilities.substitute (cfg.presentation['hidden-maint'], table.concat (maint_msgs, ' '))); -- wrap the group of maint message with proper presentation and save end if not no_tracking_cats then for _, v in ipairs( z.error_categories ) do table.insert (render, utilities.make_wikilink ('Category:' .. v)); end for _, v in ipairs( z.maintenance_cats ) do -- append maintenance categories table.insert (render, utilities.make_wikilink ('Category:' .. v)); end for _, v in ipairs( z.properties_cats ) do -- append properties categories table.insert (render, utilities.make_wikilink ('Category:' .. v)); end elseif 'nocat' == A:ORIGIN('NoTracking') then -- peculiar special case; can't track nocat without tracking nocat table.insert (render, utilities.make_wikilink ('Category:CS1 maint: nocat')); -- hand-set this category because it is supposed to be temporary end return table.concat (render); end --[[--------------------------< V A L I D A T E >-------------------------------------------------------------- Looks for a parameter's name in one of several whitelists. Parameters in the whitelist can have three values: true - active, supported parameters false - deprecated, supported parameters nil - unsupported parameters ]] local function validate (name, cite_class, empty) local name = tostring (name); local state; local function state_test (state, name) -- local function to do testing of state values if true == state then return true; end -- valid actively supported parameter if false == state then if empty then return nil; end -- deprecated empty parameters are treated as unknowns deprecated_parameter (name); -- parameter is deprecated but still supported return true; end return nil; end if name:find ('#') then -- # is a cs1|2 reserved character so parameters with # not permitted return nil; end if utilities.in_array (cite_class, whitelist.preprint_template_list ) then -- limited parameter sets allowed for these templates state = whitelist.limited_basic_arguments[name]; if true == state_test (state, name) then return true; end state = whitelist.preprint_arguments[cite_class][name]; -- look in the parameter-list for the template identified by cite_class if true == state_test (state, name) then return true; end -- limited enumerated parameters list name = name:gsub("%d+", "#" ); -- replace digit(s) with # (last25 becomes last#) (mw.ustring because non-Western 'local' digits) state = whitelist.limited_numbered_arguments[name]; if true == state_test (state, name) then return true; end return false; -- not supported because not found or name is set to nil end -- end limited parameter-set templates if utilities.in_array (cite_class, whitelist.unique_param_template_list) then -- experiment for template-specific parameters for templates that accept parameters from the basic argument list state = whitelist.unique_arguments[cite_class][name]; -- look in the template-specific parameter-lists for the template identified by cite_class if true == state_test (state, name) then return true; end end -- if here, fall into general validation state = whitelist.basic_arguments[name]; -- all other templates; all normal parameters allowed if true == state_test (state, name) then return true; end -- all enumerated parameters allowed name = name:gsub("%d+", "#" ); -- replace digit(s) with # (last25 becomes last#) (mw.ustring because non-Western 'local' digits) state = whitelist.numbered_arguments[name]; if true == state_test (state, name) then return true; end return false; -- not supported because not found or name is set to nil end --[=[-------------------------< I N T E R _ W I K I _ C H E C K >---------------------------------------------- check <value> for inter-language interwiki-link markup. <prefix> must be a MediaWiki-recognized language code. when these values have the form (without leading colon): [[<prefix>:link|label]] return label as plain-text [[<prefix>:link]] return <prefix>:link as plain-text return value as is else ]=] local function inter_wiki_check (parameter, value) local prefix = value:match ('%[%[(%a+):'); -- get an interwiki prefix if one exists local _; if prefix and cfg.inter_wiki_map[prefix:lower()] then -- if prefix is in the map, needs preceding colon so table.insert( z.message_tail, {utilities.set_message ('err_bad_paramlink', parameter)}); -- emit an error message _, value, _ = utilities.is_wikilink (value); -- extract label portion from wikilink end return value; end --[[--------------------------< M I S S I N G _ P I P E _ C H E C K >------------------------------------------ Look at the contents of a parameter. If the content has a string of characters and digits followed by an equal sign, compare the alphanumeric string to the list of cs1|2 parameters. If found, then the string is possibly a parameter that is missing its pipe. There are two tests made: {{cite ... |title=Title access-date=2016-03-17}} -- the first parameter has a value and whitespace separates that value from the missing pipe parameter name {{cite ... |title=access-date=2016-03-17}} -- the first parameter has no value (whitespace after the first = is trimmed by MediaWiki) cs1|2 shares some parameter names with XML/HTML attributes: class=, title=, etc. To prevent false positives XML/HTML tags are removed before the search. If a missing pipe is detected, this function adds the missing pipe maintenance category. ]] local function missing_pipe_check (parameter, value) local capture; value = value:gsub ('%b<>', ''); -- remove XML/HTML tags because attributes: class=, title=, etc. capture = value:match ('%s+(%a[%w%-]+)%s*=') or value:match ('^(%a[%w%-]+)%s*='); -- find and categorize parameters with possible missing pipes if capture and validate (capture) then -- if the capture is a valid parameter name table.insert( z.message_tail, {utilities.set_message ('err_missing_pipe', parameter)}); end end --[[--------------------------< H A S _ E X T R A N E O U S _ P U N C T >-------------------------------------- look for extraneous terminal punctuation in most parameter values; parameters listed in skip table are not checked ]] local function has_extraneous_punc (param, value) if 'number' == type (param) then return; end param = param:gsub ('%d+', '#'); -- enumerated name-list mask params allow terminal punct; normalize if cfg.punct_skip[param] then return; -- parameter name found in the skip table so done end if value:match ('[,;:]$') then utilities.set_message ('maint_extra_punct'); -- has extraneous punctuation; add maint cat end end --[[--------------------------< C I T A T I O N >-------------------------------------------------------------- This is used by templates such as {{cite book}} to create the actual citation text. ]] local function citation(frame) Frame = frame; -- save a copy in case we need to display an error message in preview mode local pframe = frame:getParent() local styles; if nil ~= string.find (frame:getTitle(), 'sandbox', 1, true) then -- did the {{#invoke:}} use sandbox version? cfg = mw.loadData ('Module:Citation/CS1/Configuration/sandbox'); -- load sandbox versions of support modules whitelist = mw.loadData ('Module:Citation/CS1/Whitelist/sandbox'); utilities = require ('Module:Citation/CS1/Utilities/sandbox'); validation = require ('Module:Citation/CS1/Date_validation/sandbox'); identifiers = require ('Module:Citation/CS1/Identifiers/sandbox'); metadata = require ('Module:Citation/CS1/COinS/sandbox'); styles = 'Module:Citation/CS1/sandbox/styles.css'; else -- otherwise cfg = mw.loadData ('Module:Citation/CS1/Configuration'); -- load live versions of support modules whitelist = mw.loadData ('Module:Citation/CS1/Whitelist'); utilities = require ('Module:Citation/CS1/Utilities'); validation = require ('Module:Citation/CS1/Date_validation'); identifiers = require ('Module:Citation/CS1/Identifiers'); metadata = require ('Module:Citation/CS1/COinS'); styles = 'Module:Citation/CS1/styles.css'; end utilities.set_selected_modules (cfg); -- so that functions in Utilities can see the selected cfg tables identifiers.set_selected_modules (cfg, utilities); -- so that functions in Identifiers can see the selected cfg tables and selected Utilities module validation.set_selected_modules (cfg, utilities); -- so that functions in Date validataion can see selected cfg tables and the selected Utilities module metadata.set_selected_modules (cfg, utilities); -- so that functions in COinS can see the selected cfg tables and selected Utilities module z = utilities.z; -- table of error and category tables in Module:Citation/CS1/Utilities local args = {}; -- table where we store all of the template's arguments local suggestions = {}; -- table where we store suggestions if we need to loadData them local error_text, error_state; local config = {}; -- table to store parameters from the module {{#invoke:}} for k, v in pairs( frame.args ) do -- get parameters from the {{#invoke}} frame config[k] = v; -- args[k] = v; -- crude debug support that allows us to render a citation from module {{#invoke:}}; skips parameter validation; TODO: keep? end local capture; -- the single supported capture when matching unknown parameters using patterns local empty_unknowns = {}; -- sequence table to hold empty unknown params for error message listing for k, v in pairs( pframe.args ) do -- get parameters from the parent (template) frame v = mw.ustring.gsub (v, '^%s*(.-)%s*$', '%1'); -- trim leading/trailing whitespace; when v is only whitespace, becomes empty string if v ~= '' then if ('string' == type (k)) then k = mw.ustring.gsub (k, '%d', cfg.date_names.local_digits); -- for enumerated parameters, translate 'local' digits to Western 0-9 end if not validate( k, config.CitationClass ) then error_text = ""; if type( k ) ~= 'string' then -- exclude empty numbered parameters if v:match("%S+") ~= nil then error_text, error_state = utilities.set_message ( 'err_text_ignored', {v}, true ); end elseif validate( k:lower(), config.CitationClass ) then error_text, error_state = utilities.set_message ( 'err_parameter_ignored_suggest', {k, k:lower()}, true ); -- suggest the lowercase version of the parameter else if nil == suggestions.suggestions then -- if this table is nil then we need to load it if nil ~= string.find (frame:getTitle(), 'sandbox', 1, true) then -- did the {{#invoke:}} use sandbox version? suggestions = mw.loadData( 'Module:Citation/CS1/Suggestions/sandbox' ); -- use the sandbox version else suggestions = mw.loadData( 'Module:Citation/CS1/Suggestions' ); -- use the live version end end for pattern, param in pairs (suggestions.patterns) do -- loop through the patterns to see if we can suggest a proper parameter capture = k:match (pattern); -- the whole match if no capture in pattern else the capture if a match if capture then -- if the pattern matches param = utilities.substitute (param, capture); -- add the capture to the suggested parameter (typically the enumerator) if validate (param, config.CitationClass) then -- validate the suggestion to make sure that the suggestion is supported by this template (necessary for limited parameter lists) error_text, error_state = utilities.set_message ('err_parameter_ignored_suggest', {k, param}, true); -- set the suggestion error message else error_text, error_state = utilities.set_message ( 'err_parameter_ignored', {param}, true ); -- suggested param not supported by this template v = ''; -- unset end end end if not utilities.is_set (error_text) then -- couldn't match with a pattern, is there an expicit suggestion? if suggestions.suggestions[ k:lower() ] ~= nil then error_text, error_state = utilities.set_message ( 'err_parameter_ignored_suggest', {k, suggestions.suggestions[ k:lower() ]}, true ); else error_text, error_state = utilities.set_message ( 'err_parameter_ignored', {k}, true ); v = ''; -- unset value assigned to unrecognized parameters (this for the limited parameter lists) end end end if error_text ~= '' then table.insert( z.message_tail, {error_text, error_state} ); end end args[k] = v; -- save this parameter and its value elseif not utilities.is_set (v) then -- for empty parameters if not validate (k, config.CitationClass, true) then -- is this empty parameter a valid parameter k = ('' == k) and k:gsub ('^$', '(empty string)') or k; -- when k is empty string (or was space(s) trimmed to empty string), replace with descriptive text table.insert (empty_unknowns, utilities.wrap_style ('parameter', k)); -- format for error message and add to the list end -- crude debug support that allows us to render a citation from module {{#invoke:}} TODO: keep? -- elseif args[k] ~= nil or (k == 'postscript') then -- when args[k] has a value from {{#invoke}} frame (we don't normally do that) -- args[k] = v; -- overwrite args[k] with empty string from pframe.args[k] (template frame); v is empty string here end -- not sure about the postscript bit; that gets handled in parameter validation; historical artifact? end if 0 ~= #empty_unknowns then -- create empty unknown error message table.insert (z.message_tail, {utilities.set_message ('err_param_unknown_empty', { 1 == #empty_unknowns and '' or 's', utilities.make_sep_list (#empty_unknowns, empty_unknowns) }, true )}); end for k, v in pairs( args ) do if 'string' == type (k) then -- don't evaluate positional parameters has_invisible_chars (k, v); -- look for invisible characters end has_extraneous_punc (k, v); -- look for extraneous terminal punctuation in parameter values missing_pipe_check (k, v); -- do we think that there is a parameter that is missing a pipe? args[k] = inter_wiki_check (k, v); -- when language interwiki-linked parameter missing leading colon replace with wiki-link label end return table.concat ({citation0( config, args), frame:extensionTag ('templatestyles', '', {src=styles})}); end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return {citation = citation}; g5r1sj962yc8asv8dj793xw4dsaa7ak Module:Citation/CS1/COinS 828 1461 3226 3225 2020-10-11T01:32:07Z Chrisb 1 1 revision imported 3225 Scribunto text/plain --[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- ]] local is_set, in_array, remove_wiki_link, strip_apostrophe_markup; -- functions in Module:Citation/CS1/Utilities local cfg; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration --[[--------------------------< M A K E _ C O I N S _ T I T L E >---------------------------------------------- Makes a title for COinS from Title and / or ScriptTitle (or any other name-script pairs) Apostrophe markup (bold, italics) is stripped from each value so that the COinS metadata isn't corrupted with strings of %27%27... ]] local function make_coins_title (title, script) if is_set (title) then title = strip_apostrophe_markup (title); -- strip any apostrophe markup else title=''; -- if not set, make sure title is an empty string end if is_set (script) then script = script:gsub ('^%l%l%s*:%s*', ''); -- remove language prefix if present (script value may now be empty string) script = strip_apostrophe_markup (script); -- strip any apostrophe markup else script=''; -- if not set, make sure script is an empty string end if is_set (title) and is_set (script) then script = ' ' .. script; -- add a space before we concatenate end return title .. script; -- return the concatenation end --[[--------------------------< E S C A P E _ L U A _ M A G I C _ C H A R S >---------------------------------- Returns a string where all of lua's magic characters have been escaped. This is important because functions like string.gsub() treat their pattern and replace strings as patterns, not literal strings. ]] local function escape_lua_magic_chars (argument) argument = argument:gsub("%%", "%%%%"); -- replace % with %% argument = argument:gsub("([%^%$%(%)%.%[%]%*%+%-%?])", "%%%1"); -- replace all other lua magic pattern characters return argument; end --[[--------------------------< G E T _ C O I N S _ P A G E S >------------------------------------------------ Extract page numbers from external wikilinks in any of the |page=, |pages=, or |at= parameters for use in COinS. ]] local function get_coins_pages (pages) local pattern; if not is_set (pages) then return pages; end -- if no page numbers then we're done while true do pattern = pages:match("%[(%w*:?//[^ ]+%s+)[%w%d].*%]"); -- pattern is the opening bracket, the url and following space(s): "[url " if nil == pattern then break; end -- no more urls pattern = escape_lua_magic_chars (pattern); -- pattern is not a literal string; escape lua's magic pattern characters pages = pages:gsub(pattern, ""); -- remove as many instances of pattern as possible end pages = pages:gsub("[%[%]]", ""); -- remove the brackets pages = pages:gsub("–", "-" ); -- replace endashes with hyphens pages = pages:gsub("&%w+;", "-" ); -- and replace html entities (&ndash; etc.) with hyphens; do we need to replace numerical entities like &#32; and the like? return pages; end --[=[-------------------------< C O I N S _ R E P L A C E _ M A T H _ S T R I P M A R K E R >------------------ There are three options for math markup rendering that depend on the editor's math preference settings. These settings are at [[Special:Preferences#mw-prefsection-rendering]] and are PNG images TeX source MathML with SVG or PNG fallback All three are heavy with html and css which doesn't belong in the metadata. Without this function, the metadata saved in the raw wikitext contained the rendering determined by the settings of the last editor to save the page. This function gets the rendered form of an equation according to the editor's preference before the page is saved. It then searches the rendering for the text equivalent of the rendered equation and replaces the rendering with that so that the page is saved without extraneous html/css markup and with a reasonably readable text form of the equation. When a replacement is made, this function returns true and the value with replacement; otherwise false and the intital value. To replace multipe equations it is necesary to call this function from within a loop. ]=] local function coins_replace_math_stripmarker (value) local stripmarker = cfg.stripmarkers['math']; local rendering = value:match (stripmarker); -- is there a math stripmarker if not rendering then -- when value doesn't have a math stripmarker, abandon this test return false, value; end rendering = mw.text.unstripNoWiki (rendering); -- convert stripmarker into rendered value (or nil? ''? when math render error) if rendering:match ('alt="[^"]+"') then -- if PNG math option rendering = rendering:match ('alt="([^"]+)"'); -- extract just the math text elseif rendering:match ('$%s+.+%s+%$') then -- if TeX math option; $ is legit character that is escapes as \$ rendering = rendering:match ('$%s+(.+)%s+%$') -- extract just the math text elseif rendering:match ('<annotation[^>]+>.+</annotation>') then -- if MathML math option rendering = rendering:match ('<annotation[^>]+>(.+)</annotation>') -- extract just the math text else return false, value; -- had math stripmarker but not one of the three defined forms end return true, value:gsub (stripmarker, rendering, 1); end --[[--------------------------< C O I N S _ C L E A N U P >---------------------------------------------------- Cleanup parameter values for the metadata by removing or replacing invisible characters and certain html entities. 2015-12-10: there is a bug in mw.text.unstripNoWiki (). It replaces math stripmarkers with the appropriate content when it shouldn't. See https://phabricator.wikimedia.org/T121085 and Wikipedia_talk:Lua#stripmarkers_and_mw.text.unstripNoWiki.28.29 TODO: move the replacement patterns and replacement values into a table in /Configuration similar to the invisible characters table? ]] local function coins_cleanup (value) local replaced = true; -- default state to get the do loop running while replaced do -- loop until all math stripmarkers replaced replaced, value = coins_replace_math_stripmarker (value); -- replace math stripmarker with text representation of the equation end value = value:gsub (cfg.stripmarkers['math'], "MATH RENDER ERROR"); -- one or more couldn't be replaced; insert vague error message value = mw.text.unstripNoWiki (value); -- replace nowiki stripmarkers with their content value = value:gsub ('<span class="nowrap" style="padding%-left:0%.1em;">&#39;(s?)</span>', "'%1"); -- replace {{'}} or {{'s}} with simple apostrophe or apostrophe-s value = value:gsub ('&nbsp;', ' '); -- replace &nbsp; entity with plain space value = value:gsub ('\226\128\138', ' '); -- replace hair space with plain space if not mw.ustring.find (value, cfg.indic_script) then -- don't remove zero width joiner characters from indic script value = value:gsub ('&zwj;', ''); -- remove &zwj; entities value = mw.ustring.gsub (value, '[\226\128\141\226\128\139\194\173]', ''); -- remove zero-width joiner, zero-width space, soft hyphen end value = value:gsub ('[\009\010\013]', ' '); -- replace horizontal tab, line feed, carriage return with plain space return value; end --[[--------------------------< C O I N S >-------------------------------------------------------------------- COinS metadata (see <http://ocoins.info/>) allows automated tools to parse the citation information. ]] local function COinS(data, class) if 'table' ~= type(data) or nil == next(data) then return ''; end for k, v in pairs (data) do -- spin through all of the metadata parameter values if 'ID_list' ~= k and 'Authors' ~= k then -- except the ID_list and Author tables (author nowiki stripmarker done when Author table processed) data[k] = coins_cleanup (v); end end local ctx_ver = "Z39.88-2004"; -- treat table strictly as an array with only set values. local OCinSoutput = setmetatable( {}, { __newindex = function(self, key, value) if is_set(value) then rawset( self, #self+1, table.concat{ key, '=', mw.uri.encode( remove_wiki_link( value ) ) } ); end end }); if in_array (class, {'arxiv', 'biorxiv', 'citeseerx', 'ssrn', 'journal', 'news', 'magazine'}) or (in_array (class, {'conference', 'interview', 'map', 'press release', 'web'}) and is_set(data.Periodical)) or ('citation' == class and is_set(data.Periodical) and not is_set (data.Encyclopedia)) then OCinSoutput.rft_val_fmt = "info:ofi/fmt:kev:mtx:journal"; -- journal metadata identifier if in_array (class, {'arxiv', 'biorxiv', 'citeseerx', 'ssrn'}) then -- set genre according to the type of citation template we are rendering OCinSoutput["rft.genre"] = "preprint"; -- cite arxiv, cite biorxiv, cite citeseerx, cite ssrn elseif 'conference' == class then OCinSoutput["rft.genre"] = "conference"; -- cite conference (when Periodical set) elseif 'web' == class then OCinSoutput["rft.genre"] = "unknown"; -- cite web (when Periodical set) else OCinSoutput["rft.genre"] = "article"; -- journal and other 'periodical' articles end OCinSoutput["rft.jtitle"] = data.Periodical; -- journal only OCinSoutput["rft.atitle"] = data.Title; -- 'periodical' article titles -- these used only for periodicals OCinSoutput["rft.ssn"] = data.Season; -- keywords: winter, spring, summer, fall OCinSoutput["rft.chron"] = data.Chron; -- free-form date components OCinSoutput["rft.volume"] = data.Volume; -- does not apply to books OCinSoutput["rft.issue"] = data.Issue; OCinSoutput["rft.pages"] = data.Pages; -- also used in book metadata elseif 'thesis' ~= class then -- all others except cite thesis are treated as 'book' metadata; genre distinguishes OCinSoutput.rft_val_fmt = "info:ofi/fmt:kev:mtx:book"; -- book metadata identifier if 'report' == class or 'techreport' == class then -- cite report and cite techreport OCinSoutput["rft.genre"] = "report"; elseif 'conference' == class then -- cite conference when Periodical not set OCinSoutput["rft.genre"] = "conference"; OCinSoutput["rft.atitle"] = data.Chapter; -- conference paper as chapter in proceedings (book) elseif in_array (class, {'book', 'citation', 'encyclopaedia', 'interview', 'map'}) then if is_set (data.Chapter) then OCinSoutput["rft.genre"] = "bookitem"; OCinSoutput["rft.atitle"] = data.Chapter; -- book chapter, encyclopedia article, interview in a book, or map title else if 'map' == class or 'interview' == class then OCinSoutput["rft.genre"] = 'unknown'; -- standalone map or interview else OCinSoutput["rft.genre"] = 'book'; -- book and encyclopedia end end else --{'audio-visual', 'AV-media-notes', 'DVD-notes', 'episode', 'interview', 'mailinglist', 'map', 'newsgroup', 'podcast', 'press release', 'serial', 'sign', 'speech', 'web'} OCinSoutput["rft.genre"] = "unknown"; end OCinSoutput["rft.btitle"] = data.Title; -- book only OCinSoutput["rft.place"] = data.PublicationPlace; -- book only OCinSoutput["rft.series"] = data.Series; -- book only OCinSoutput["rft.pages"] = data.Pages; -- book, journal OCinSoutput["rft.edition"] = data.Edition; -- book only OCinSoutput["rft.pub"] = data.PublisherName; -- book and dissertation else -- cite thesis OCinSoutput.rft_val_fmt = "info:ofi/fmt:kev:mtx:dissertation"; -- dissertation metadata identifier OCinSoutput["rft.title"] = data.Title; -- dissertation (also patent but that is not yet supported) OCinSoutput["rft.degree"] = data.Degree; -- dissertation only OCinSoutput['rft.inst'] = data.PublisherName; -- book and dissertation end -- and now common parameters (as much as possible) OCinSoutput["rft.date"] = data.Date; -- book, journal, dissertation for k, v in pairs( data.ID_list ) do -- what to do about these? For now assume that they are common to all? if k == 'ISBN' then v = v:gsub( "[^-0-9X]", "" ); end local id = cfg.id_handlers[k].COinS; if string.sub( id or "", 1, 4 ) == 'info' then -- for ids that are in the info:registry OCinSoutput["rft_id"] = table.concat{ id, "/", v }; elseif string.sub (id or "", 1, 3 ) == 'rft' then -- for isbn, issn, eissn, etc that have defined COinS keywords OCinSoutput[ id ] = v; elseif id then -- when cfg.id_handlers[k].COinS is not nil OCinSoutput["rft_id"] = table.concat{ cfg.id_handlers[k].prefix, v }; -- others; provide a url end end local last, first; for k, v in ipairs( data.Authors ) do last, first = coins_cleanup (v.last), coins_cleanup (v.first or ''); -- replace any nowiki strip markers, non-printing or invisible characers if k == 1 then -- for the first author name only if is_set(last) and is_set(first) then -- set these COinS values if |first= and |last= specify the first author name OCinSoutput["rft.aulast"] = last; -- book, journal, dissertation OCinSoutput["rft.aufirst"] = first; -- book, journal, dissertation elseif is_set(last) then OCinSoutput["rft.au"] = last; -- book, journal, dissertation -- otherwise use this form for the first name end else -- for all other authors if is_set(last) and is_set(first) then OCinSoutput["rft.au"] = table.concat{ last, ", ", first }; -- book, journal, dissertation elseif is_set(last) then OCinSoutput["rft.au"] = last; -- book, journal, dissertation end end end OCinSoutput.rft_id = data.URL; OCinSoutput.rfr_id = table.concat{ "info:sid/", mw.site.server:match( "[^/]*$" ), ":", data.RawPage }; OCinSoutput = setmetatable( OCinSoutput, nil ); -- sort with version string always first, and combine. --table.sort( OCinSoutput ); table.insert( OCinSoutput, 1, "ctx_ver=" .. ctx_ver ); -- such as "Z39.88-2004" return table.concat(OCinSoutput, "&"); end --[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >-------------------------------------- Sets local cfg table and imported functions table to same (live or sandbox) as that used by the other modules. ]] local function set_selected_modules (cfg_table_ptr, utilities_page_ptr) cfg = cfg_table_ptr; is_set = utilities_page_ptr.is_set; -- import functions from selected Module:Citation/CS1/Utilities module in_array = utilities_page_ptr.in_array; remove_wiki_link = utilities_page_ptr.remove_wiki_link; strip_apostrophe_markup = utilities_page_ptr.strip_apostrophe_markup; end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return { make_coins_title = make_coins_title, get_coins_pages = get_coins_pages, COinS = COinS, set_selected_modules = set_selected_modules, } l8s94fpb0lbhviey5aqaamradc5q20u Module:Citation/CS1/Configuration 828 1462 3228 3227 2020-10-11T01:32:08Z Chrisb 1 1 revision imported 3227 Scribunto text/plain --[[--------------------------< U N C A T E G O R I Z E D _ N A M E S P A C E S >------------------------------ List of namespaces that should not be included in citation error categories. Same as setting notracking = true by default Note: Namespace names should use underscores instead of spaces. ]] local uncategorized_namespaces = { 'User', 'Talk', 'User_talk', 'Wikipedia_talk', 'File_talk', 'Template_talk', 'Help_talk', 'Category_talk', 'Portal_talk', 'Book_talk', 'Draft_talk', 'Education_Program_talk', 'Module_talk', 'MediaWiki_talk' }; local uncategorized_subpages = {'/[Ss]andbox', '/[Tt]estcases'}; -- list of Lua patterns found in page names of pages we should not categorize --[[--------------------------< M E S S A G E S >-------------------------------------------------------------- Translation table The following contains fixed text that may be output as part of a citation. This is separated from the main body to aid in future translations of this module. ]] local messages = { ['agency'] = '$1 $2', -- $1 is sepc, $2 is agency ['archived-dead'] = 'Archived from $1 on $2', ['archived-live'] = '$1 from the original on $2', ['archived-missing'] = 'Archived from the original$1 on $2', ['archived-unfit'] = 'Archived from the original on ', ['archived'] = 'Archived', ['by'] = 'By', -- contributions to authored works: introduction, foreword, afterword ['cartography'] = 'Cartography by $1', ['editor'] = 'ed.', ['editors'] = 'eds.', ['edition'] = '($1 ed.)', ['episode'] = 'Episode $1', ['et al'] = 'et al.', ['in'] = 'In', -- edited works ['inactive'] = 'inactive', ['inset'] = '$1 inset', ['interview'] = 'Interviewed by $1', ['lay summary'] = 'Lay summary', ['newsgroup'] = '[[Usenet newsgroup|Newsgroup]]:&nbsp;$1', -- ['nodate'] = 'n.d.', -- in the future for |date=none|n.d.|nd ['notitle'] = 'No title', -- for |title=(()) and (in the future) |title=none ['original'] = 'the original', ['origdate'] = ' [$1]', ['published'] = ' (published $1)', ['retrieved'] = 'Retrieved $1', ['season'] = 'Season $1', ['section'] = '§ $1', ['sections'] = '§§ $1', ['series'] = '$1 $2', -- $1 is sepc, $2 is series ['seriesnum'] = 'Series $1', ['translated'] = 'Translated by $1', ['type'] = ' ($1)', -- for titletype ['written'] = 'Written at $1', ['vol'] = '$1 Vol.&nbsp;$2', -- $1 is sepc; bold journal style volume is in presentation{} ['vol-no'] = '$1 Vol.&nbsp;$2 no.&nbsp;$3', -- sepc, volume, issue ['issue'] = '$1 No.&nbsp;$2', -- $1 is sepc ['j-vol'] = '$1 $2', -- sepc, volume; bold journal volume is in presentation{} ['j-issue'] = ' ($1)', ['nopp'] = '$1 $2'; -- page(s) without prefix; $1 is sepc ['p-prefix'] = "$1 p.&nbsp;$2", -- $1 is sepc ['pp-prefix'] = "$1 pp.&nbsp;$2", -- $1 is sepc ['j-page(s)'] = ': $1', -- same for page and pages ['sheet'] = '$1 Sheet&nbsp;$2', -- $1 is sepc ['sheets'] = '$1 Sheets&nbsp;$2', -- $1 is sepc ['j-sheet'] = ': Sheet&nbsp;$1', ['j-sheets'] = ': Sheets&nbsp;$1', ['language'] = '(in $1)', ['via'] = " &ndash; via $1", ['event'] = 'Event occurs at', ['minutes'] = 'minutes in', -- Determines the location of the help page ['help page link'] = 'Help:CS1 errors', ['help page label'] = 'help', -- Internal errors (should only occur if configuration is bad) ['undefined_error'] = 'Called with an undefined error condition', ['unknown_manual_ID'] = 'Unrecognized manual ID mode', ['unknown_ID_mode'] = 'Unrecognized ID mode', ['unknown_argument_map'] = 'Argument map not defined for this variable', ['bare_url_no_origin'] = 'Bare URL found but origin indicator is nil or empty', } --[=[-------------------------< E T _ A L _ P A T T E R N S >-------------------------------------------------- This table provides Lua patterns for the phrase "et al" and variants in name text (author, editor, etc.). The main module uses these to identify and emit the 'etal' message. ]=] local et_al_patterns = { "[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][%.\"']*$", -- variations on the 'et al' theme "[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][Ii][Aa][%.\"']*$", -- variations on the 'et alia' theme "[;,]? *%f[%a]and [Oo]thers", -- and alternate to et al. "%[%[ *[Ee][Tt]%.? *[Aa][Ll]%.? *%]%]", -- a wikilinked form "[%(%[] *[Ee][Tt]%.? *[Aa][Ll]%.? *[%)%]]", -- a bracketed form } --[[--------------------------< E D I T O R _ M A R K U P _ P A T T E R N S >---------------------------------- This table provides Lua patterns for the phrase "ed" and variants in name text (author, editor, etc.). The main module uses these to identify and emit the 'extra_text_names' message. (It is not the only series of patterns for this message.) ]] local editor_markup_patterns = { -- these patterns match annotations at end of name '%f[%(%[][%(%[]%s*[Ee][Dd][Ss]?%.?%s*[%)%]]?$', -- (ed) or (eds): leading '(', case insensitive 'ed', optional 's', '.' and/or ')' '[,%.%s]%f[e]eds?%.?$', -- ed or eds: without '('or ')'; case sensitive (ED could be initials Ed could be name) '%f[%(%[][%(%[]%s*[Ee][Dd][Ii][Tt][Oo][Rr][Ss]?%.?%s*[%)%]]?$', -- (editor) or (editors): leading '(', case insensitive, optional '.' and/or ')' '[,%.%s]%f[Ee][Dd][Ii][Tt][Oo][Rr][Ss]?%.?$', -- editor or editors: without '('or ')'; case insensitive -- these patterns match annotations at beginning of name '^eds?[%.,;]', -- ed. or eds.: lower case only, optional 's', requires '.' '^[%(%[]%s*[Ee][Dd][Ss]?%.?%s*[%)%]]', -- (ed) or (eds): also sqare brackets, case insensitive, optional 's', '.' '^[%(%[]?%s*[Ee][Dd][Ii][Tt][Oo][Rr][Ss]?%A', -- (editor or (editors: also square brackets, case insensitive, optional brackets, 's' '^[%(%[]?%s*[Ee][Dd][Ii][Tt][Ee][Dd]%A', -- (edited: also square brackets, case insensitive, optional brackets -- these patterns match annotations that are the 'name' '^[Ee][Dd][Ii][Tt][Oo][Rr][Ss]?%.?$', -- editor or editors; case insensitive } --[[--------------------------< P R E S E N T A T I O N >------------------------------------------------------ Fixed presentation markup. Originally part of citation_config.messages it has been moved into its own, more semantically correct place. ]] local presentation = { -- Error output -- .error class is specified at https://git.wikimedia.org/blob/mediawiki%2Fcore.git/9553bd02a5595da05c184f7521721fb1b79b3935/skins%2Fcommon%2Fshared.css#L538 -- .citation-comment class is specified at Help:CS1_errors#Controlling_error_message_display ['hidden-error'] = '<span class="cs1-hidden-error error citation-comment">$1</span>', ['visible-error'] = '<span class="cs1-visible-error error citation-comment">$1</span>', ['hidden-maint'] = '<span class="cs1-maint citation-comment">$1</span>', ['accessdate'] = '<span class="reference-accessdate">$1$2</span>', -- to allow editors to hide accessdate using personal CSS ['bdi'] = '<bdi$1>$2</bdi>', -- bidirectional isolation used with |script-title= and the like ['cite'] = '<cite class="$1">$2</cite>'; -- |ref= not set so no id="..." attribute ['cite-id'] = '<cite id="$1" class="$2">$3</cite>'; -- for use when |ref= is set ['format'] = ' <span class="cs1-format">($1)</span>', -- for |format=, |chapter-format=, etc. -- various access levels, for |access=, |doi-access=, |arxiv=, ... -- narrow no-break space &#8239; may work better than nowrap CSS. Or not? Browser support? ['ext-link-access-signal'] = '<span class="$1" title="$2">$3</span>', -- external link with appropriate lock icon ['free'] = {class='cs1-lock-free', title='Freely accessible'}, -- classes defined in Module:Citation/CS1/styles.css ['registration'] = {class='cs1-lock-registration', title='Free registration required'}, ['limited'] = {class='cs1-lock-limited', title='Free access subject to limited trial, subscription normally required'}, ['subscription'] = {class='cs1-lock-subscription', title='Paid subscription required'}, ['interwiki-icon'] = '<span class="$1" title="$2">$3</span>', ['class-wikisource'] = 'cs1-ws-icon', ['italic-title'] = "''$1''", ['kern-left'] = '<span class="cs1-kern-left">$1</span>$2', -- spacing to use when title contains leading single or double quote mark ['kern-right'] = '$1<span class="cs1-kern-right">$2</span>', -- spacing to use when title contains trailing single or double quote mark -- these for simple wikilinked titles [["text]], [[text"]] and [["text"]] -- span wraps entire wikilink ['kern-wl-left'] = '<span class="cs1-kern-wl-left">$1</span>', -- when title contains leading single or double quote mark ['kern-wl-right'] = '<span class="cs1-kern-wl-left">$1</span>', -- when title contains trailing single or double quote mark ['kern-wl-both'] = '<span class="cs1-kern-wl-left cs1-kern-wl-right">$1</span>', -- when title contains leading and trailing single or double quote marks ['nowrap1'] = '<span class="nowrap">$1</span>', -- for nowrapping an item: <span ...>yyyy-mm-dd</span> ['nowrap2'] = '<span class="nowrap">$1</span> $2', -- for nowrapping portions of an item: <span ...>dd mmmm</span> yyyy (note white space) ['ocins'] = '<span title="$1" class="Z3988"></span>', ['parameter'] = '<code class="cs1-code">&#124;$1=</code>', ['ps_cs1'] = '.'; -- CS1 style postscript (terminal) character ['ps_cs2'] = ''; -- CS2 style postscript (terminal) character (empty string) ['quoted-text'] = '<q>$1</q>', -- for wrapping |quote= content ['quoted-title'] = '"$1"', ['sep_cs1'] = '.', -- CS1 element separator ['sep_cs2'] = ',', -- CS2 separator ['sep_nl'] = ';', -- CS1|2 style name-list separator between names is a semicolon ['sep_nl_and'] = ' and ', -- used as last nl sep when |name-list-style=and and list has 2 items ['sep_nl_end'] = '; and ', -- used as last nl sep when |name-list-style=and and list has 3+ names ['sep_name'] = ', ', -- CS1|2 style last/first separator is <comma><space> ['sep_nl_vanc'] = ',', -- Vancouver style name-list separator between authors is a comma ['sep_name_vanc'] = ' ', -- Vancouver style last/first separator is a space ['sep_list'] = ', ', -- used for |language= when list has 3+ items except for last sep which uses sep_list_end ['sep_list_pair'] = ' and ', -- used for |language= when list has 2 items ['sep_list_end'] = ', and ', -- used as last list sep for |language= when list has 3+ items ['trans-italic-title'] = "&#91;''$1''&#93;", ['trans-quoted-title'] = "&#91;$1&#93;", -- for |trans-title= and |trans-quote= ['vol-bold'] = '$1 <b>$2</b>', -- sepc, volume; for bold journal cites; for other cites ['vol'] in messages{} } --[[--------------------------< A L I A S E S >---------------------------------------------------------------- Aliases table for commonly passed parameters. Parameter names on the right side in the assignements in this table must have been defined in the Whitelist before they will be recognized as valid parameter names ]] local aliases = { ['AccessDate'] = {'access-date', 'accessdate'}, -- Used by InternetArchiveBot ['Agency'] = 'agency', ['ArchiveDate'] = {'archive-date', 'archivedate'}, -- Used by InternetArchiveBot ['ArchiveFormat'] = 'archive-format', ['ArchiveURL'] = {'archive-url', 'archiveurl'}, -- Used by InternetArchiveBot ['ASINTLD'] = 'asin-tld', ['At'] = 'at', -- Used by InternetArchiveBot ['Authors'] = {'authors', 'people', 'credits'}, ['BookTitle'] = {'book-title', 'booktitle'}, ['Cartography'] = 'cartography', ['Chapter'] = {'chapter', 'contribution', 'entry', 'article', 'section'}, ['ChapterFormat'] = {'chapter-format', 'contribution-format', 'entry-format', 'article-format', 'section-format'}; ['ChapterURL'] = {'chapter-url', 'contribution-url', 'entry-url', 'article-url', 'section-url', 'chapterurl', 'contributionurl', 'sectionurl'}, -- Used by InternetArchiveBot ['ChapterUrlAccess'] = {'chapter-url-access', 'contribution-url-access', 'entry-url-access', 'article-url-access', 'section-url-access'}, -- Used by InternetArchiveBot ['Class'] = 'class', -- cite arxiv and arxiv identifiers ['Collaboration'] = 'collaboration', ['Conference'] = {'conference', 'event'}, ['ConferenceFormat'] = {'conference-format', 'event-format'}, ['ConferenceURL'] = {'conference-url', 'event-url', 'conferenceurl', 'eventurl'}, -- Used by InternetArchiveBot ['Date'] = {'date', 'air-date', 'airdate'}, -- air-date and airdate for cite episode and cite serial only ['Degree'] = 'degree', ['DF'] = 'df', ['DisplayAuthors'] = {'display-authors', 'display-subjects', 'displayauthors'}, ['DisplayContributors'] = 'display-contributors', ['DisplayEditors'] = 'display-editors', ['DisplayInterviewers'] = 'display-interviewers', ['DisplayTranslators'] = 'display-translators', ['Docket'] = 'docket', ['DoiBroken'] = 'doi-broken-date', ['Edition'] = 'edition', ['Editors'] = 'editors', ['Embargo'] = 'pmc-embargo-date', ['Encyclopedia'] = {'encyclopedia', 'encyclopaedia', 'dictionary'}, -- cite encyclopedia only ['Episode'] = 'episode', -- cite serial only TODO: make available to cite episode? ['Format'] = 'format', ['ID'] = {'id', 'ID'}, ['IgnoreISBN'] = 'ignore-isbn-error', ['Inset'] = 'inset', ['Issue'] = {'issue', 'number'}, ['Language'] = {'language', 'lang'}, ['LastAuthorAmp'] = {'last-author-amp', 'lastauthoramp'}, ['LayDate'] = {'lay-date', 'laydate'}, ['LayFormat'] = 'lay-format', ['LaySource'] = {'lay-source', 'laysource'}, ['LayURL'] = {'lay-url', 'layurl'}, -- Used by InternetArchiveBot ['MailingList'] = {'mailing-list', 'mailinglist'}, -- cite mailing list only ['Map'] = 'map', -- cite map only ['MapFormat'] = 'map-format', -- cite map only ['MapURL'] = {'map-url', 'mapurl'}, -- cite map only -- Used by InternetArchiveBot ['MapUrlAccess'] = 'map-url-access', -- cite map only -- Used by InternetArchiveBot ['Minutes'] = 'minutes', ['Mode'] = 'mode', ['NameListStyle'] = {'name-list-style', 'name-list-format'}, ['Network'] = 'network', ['Newsgroup'] = 'newsgroup', -- cite newsgroup only ['NoPP'] = {'no-pp', 'nopp'}, ['NoTracking'] = {'no-tracking', 'template-doc-demo', 'nocat'}, ['Number'] = 'number', -- this case only for cite techreport ['OrigDate'] = {'orig-date', 'orig-year', 'origyear'}, ['Others'] = 'others', ['Page'] = {'page', 'p'}, -- Used by InternetArchiveBot ['Pages'] = {'pages', 'pp'}, -- Used by InternetArchiveBot ['Periodical'] = {'journal', 'magazine', 'newspaper', 'periodical', 'website', 'work'}, ['Place'] = {'place', 'location'}, ['PostScript'] = 'postscript', ['PublicationDate'] = {'publication-date', 'publicationdate'}, ['PublicationPlace'] = {'publication-place', 'publicationplace'}, ['PublisherName'] = {'publisher', 'institution'}, ['Quote'] = {'quote', 'quotation'}, ['QuotePage'] = 'quote-page', ['QuotePages'] = 'quote-pages', ['Ref'] = 'ref', ['Scale'] = 'scale', ['ScriptChapter'] = {'script-chapter', 'script-contribution', 'script-entry', 'script-article', 'script-section'}, ['ScriptMap'] = 'script-map', ['ScriptPeriodical'] = {'script-journal', 'script-magazine', 'script-newspaper', 'script-periodical', 'script-website', 'script-work'}, ['ScriptQuote'] = 'script-quote', ['ScriptTitle'] = 'script-title', -- Used by InternetArchiveBot ['Season'] = 'season', ['Sections'] = 'sections', -- cite map only ['Series'] = {'series', 'version'}, ['SeriesLink'] = {'series-link', 'serieslink'}, ['SeriesNumber'] = {'series-number', 'series-no', 'seriesnumber', 'seriesno'}, ['Sheet'] = 'sheet', -- cite map only ['Sheets'] = 'sheets', -- cite map only ['Station'] = 'station', ['Time'] = 'time', ['TimeCaption'] = {'time-caption', 'timecaption'}, ['Title'] = 'title', -- Used by InternetArchiveBot ['TitleLink'] = {'title-link', 'episode-link', 'titlelink', 'episodelink'}, -- Used by InternetArchiveBot ['TitleNote'] = 'department', ['TitleType'] = {'type', 'medium'}, ['TransChapter'] = {'trans-article', 'trans-chapter', 'trans-contribution', 'trans-entry', 'trans-section'}, ['Transcript'] = 'transcript', ['TranscriptFormat'] = 'transcript-format', ['TranscriptURL'] = {'transcript-url', 'transcripturl'}, -- Used by InternetArchiveBot ['TransMap'] = 'trans-map', -- cite map only ['TransPeriodical'] = {'trans-journal', 'trans-magazine', 'trans-newspaper', 'trans-periodical', 'trans-website', 'trans-work'}, ['TransQuote'] = 'trans-quote', ['TransTitle'] = 'trans-title', -- Used by InternetArchiveBot ['URL'] = {'url', 'URL'}, -- Used by InternetArchiveBot ['UrlAccess'] = 'url-access', -- Used by InternetArchiveBot ['UrlStatus'] = 'url-status', -- Used by InternetArchiveBot ['Vauthors'] = 'vauthors', ['Veditors'] = 'veditors', ['Via'] = 'via', ['Volume'] = 'volume', ['Year'] = 'year', ['AuthorList-First'] = {"first#", "author-first#", "author#-first", "given#", "author-given#", "author#-given"}, ['AuthorList-Last'] = {"last#", "author-last#", "author#-last", "surname#", "author-surname#", "author#-surname", "author#", "subject#", 'host#'}, ['AuthorList-Link'] = {"author-link#", "author#-link", "subject-link#", "subject#-link", "authorlink#", "author#link", "subjectlink#", "subject#link"}, ['AuthorList-Mask'] = {"author-mask#", "author#-mask", "subject-mask#", "subject#-mask", "authormask#", "author#mask"}, ['ContributorList-First'] = {'contributor-first#', 'contributor#-first', 'contributor-given#', 'contributor#-given'}, ['ContributorList-Last'] = {'contributor-last#', 'contributor#-last', 'contributor-surname#', 'contributor#-surname', 'contributor#'}, ['ContributorList-Link'] = {'contributor-link#', 'contributor#-link'}, ['ContributorList-Mask'] = {'contributor-mask#', 'contributor#-mask'}, ['EditorList-First'] = {"editor-first#", "editor#-first", "editor-given#", "editor#-given"}, ['EditorList-Last'] = {"editor-last#", "editor#-last", "editor-surname#", "editor#-surname", "editor#"}, ['EditorList-Link'] = {"editor-link#", "editor#-link", "editorlink#", "editor#link"}, -- unhyphenated forms to be deprecated ['EditorList-Mask'] = {"editor-mask#", "editor#-mask"}, ['InterviewerList-First'] = {'interviewer-first#', 'interviewer#-first', 'interviewer-given#', 'interviewer#-given'}, ['InterviewerList-Last'] = {'interviewer-last#', 'interviewer#-last', 'interviewer-surname#', 'interviewer#-surname', 'interviewer#'}, ['InterviewerList-Link'] = {'interviewer-link#', 'interviewer#-link'}, ['InterviewerList-Mask'] = {'interviewer-mask#', 'interviewer#-mask'}, ['TranslatorList-First'] = {'translator-first#', 'translator#-first', 'translator-given#', 'translator#-given'}, ['TranslatorList-Last'] = {'translator-last#', 'translator#-last', 'translator-surname#', 'translator#-surname', 'translator#'}, ['TranslatorList-Link'] = {'translator-link#', 'translator#-link'}, ['TranslatorList-Mask'] = {'translator-mask#', 'translator#-mask'}, } --[[--------------------------< P U N C T _ S K I P >---------------------------------------------------------- builds a table of parameter names that the extraneous terminal punctuation check should not check. ]] local punct_skip = {}; local meta_params = { -- table of aliases[] keys (meta parameters); each key has a table of parameter names for a value 'BookTitle', 'Chapter', 'ScriptChapter', 'ScriptTitle', 'Title', 'TransChapter', 'Transcript', 'TransMap', 'TransTitle', -- title-holding parameters 'AuthorList-Mask', 'ContributorList-Mask', 'EditorList-Mask', 'InterviewerList-Mask', 'TranslatorList-Mask', -- name-list mask may have name separators 'PostScript', 'Quote', 'ScriptQuote', 'TransQuote', 'Ref', -- miscellaneous 'ArchiveURL', 'ChapterURL', 'ConferenceURL', 'LayURL', 'MapURL', 'TranscriptURL', 'URL', -- url-holding parameters } for _, meta_param in ipairs (meta_params) do -- for each meta parameter key local params = aliases[meta_param]; -- get the parameter or the table of parameters associated with the meta parameter name if 'string' == type (params) then punct_skip[params] = 1; -- just a single parameter else for _, param in ipairs (params) do -- get the parameter name punct_skip[param] = 1; -- add the parameter name to the skip table local count; param, count = param:gsub ('#', ''); -- remove enumerator marker from enumerated parameters if 0 ~= count then -- if removed punct_skip[param] = 1; -- add param name without enumerator marker end end end end --[[--------------------------< S P E C I A L C A S E T R A N S L A T I O N S >---------------------------- This table is primarily here to support internationalization. Translations in this table are used, for example, when an error message, category name, etc., is extracted from the English alias key. There may be other cases where this translation table may be useful. ]] local special_case_translation = { ['AuthorList'] = 'authors list', -- used to assemble maintenance category names ['ContributorList'] = 'contributors list', -- translation of these names plus translation of the base mainenance category names in maint_cats{} table below ['EditorList'] = 'editors list', -- must match the names of the actual categories ['InterviewerList'] = 'interviewers list', -- this group or translations used by name_has_ed_markup() and name_has_mult_names() ['TranslatorList'] = 'translators list', ['authors'] = 'authors', -- used to assemble maintenance category names ['contributors'] = 'contributors', -- translation of these names plus translation of the base maintenance category names in maint_cats{} table below ['editors'] = 'editors', -- must match the names of the actual categories ['interviewers'] = 'interviewers', -- this group of translations used by get_display_names() ['translators'] = 'translators', -- Lua patterns to match pseudo-titles used by Internet Archive bot and others as place holder for unknown |title= value ['archived_copy'] = { -- used with CS1 maint: Archive[d] copy as title ['en'] = '^archived?%s+copy$', -- for English; translators: keep this because templates imported from en.wiki ['local'] = nil, -- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language }, -- Lua patterns to match generic titles; usually created by bots of reference filling tools -- translators: replace ['local'] = nil with lowercase translation only when bots or tools create generic titles in your language ['generic_titles'] = { { ['en'] = {'^wayback%s+machine$', false}, -- patterns in this table to be lowercase only ['local'] = nil, -- leave this nil except when there is a matching generic title in your language }, {['en'] = {'are you a robot', true}, ['local'] = nil}, {['en'] = {'hugedomains.com', true}, ['local'] = nil}, {['en'] = {'^[%(%[{<]?no +title[>}%]%)]?$', false}, ['local'] = nil}, {['en'] = {'page not found', true}, ['local'] = nil}, {['en'] = {'^[%(%[{<]?unknown[>}%]%)]?$', false}, ['local'] = nil}, {['en'] = {'website is for sale', true}, ['local'] = nil}, {['en'] = {'^404', true}, ['local'] = nil}, } } --[[--------------------------< D A T E _ N A M E S >---------------------------------------------------------- This table of tables lists local language date names and fallback English date names. The code in Date_validation will look first in the local table for valid date names. If date names are not found in the local table, the code will look in the English table. Because citations can be copied to the local wiki from en.wiki, the English is required when the date-name translation function date_name_xlate() is used. In these tables, season numbering is defined by Extended Date/Time Format (EDTF) Specification (https://www.loc.gov/standards/datetime/) which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using numbers 21-41. CS1|2 only supports generic seasons. EDTF does support the distinction between north and south hemispere seasons but CS1|2 has no way to make that distinction. 33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each) The standard does not address 'named' dates so, for the purposes of CS1|2, Easter and Christmas are defined here as 98 and 99, which should be out of the ISO 8601 (EDTF) range of uses for a while. ]] local date_names = { ['en'] = { -- English ['long'] = {['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12}, ['short'] = {['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12}, ['quarter'] = {['First Quarter'] = 33, ['Second Quarter'] = 34, ['Third Quarter'] = 35, ['Fourth Quarter'] = 36}, ['season'] = {['Winter'] = 24, ['Spring'] = 21, ['Summer'] = 22, ['Fall'] = 23, ['Autumn'] = 23}, ['named'] = {['Easter'] = 98, ['Christmas'] = 99}, }, ['local'] = { -- replace these English date names with the local language equivalents ['long'] = {['January'] = 1, ['February'] = 2, ['March'] = 3, ['April'] = 4, ['May'] = 5, ['June'] = 6, ['July'] = 7, ['August'] = 8, ['September'] = 9, ['October'] = 10, ['November'] = 11, ['December'] = 12}, ['short'] = {['Jan'] = 1, ['Feb'] = 2, ['Mar'] = 3, ['Apr'] = 4, ['May'] = 5, ['Jun'] = 6, ['Jul'] = 7, ['Aug'] = 8, ['Sep'] = 9, ['Oct'] = 10, ['Nov'] = 11, ['Dec'] = 12}, ['quarter'] = {['First Quarter'] = 33, ['Second Quarter'] = 34, ['Third Quarter'] = 35, ['Fourth Quarter'] = 36}, ['season'] = {['Winter'] = 24, ['Spring'] = 21, ['Summer'] = 22, ['Fall'] = 23, ['Autumn'] = 23}, ['named'] = {['Easter'] = 98, ['Christmas'] = 99}, }, ['inv_local_l'] = {}, -- used in date reformatting; copy of date_names['local'].long where k/v are inverted: [1]='<local name>' etc. ['inv_local_s'] = {}, -- used in date reformatting; copy of date_names['local'].short where k/v are inverted: [1]='<local name>' etc. ['local_digits'] = {['0'] = '0', ['1'] = '1', ['2'] = '2', ['3'] = '3', ['4'] = '4', ['5'] = '5', ['6'] = '6', ['7'] = '7', ['8'] = '8', ['9'] = '9'}, -- used to convert local language digits to Western 0-9 ['xlate_digits'] = {}, } for name, i in pairs (date_names['local'].long) do -- this table is ['name'] = i date_names['inv_local_l'][i] = name; -- invert to get [i] = 'name' for conversions from ymd end for name, i in pairs (date_names['local'].short) do -- this table is ['name'] = i date_names['inv_local_s'][i] = name; -- invert to get [i] = 'name' for conversions from ymd end for ld, ed in pairs (date_names.local_digits) do -- make a digit translation table for simple date translation from en to local language using local_digits table date_names.xlate_digits [ed] = ld; -- en digit becomes index with local digit as the value end local df_template_patterns = { -- table of redirects to {{Use dmy dates}} and {{Use mdy dates}} '{{ *[Uu]se +(dmy) +dates *[|}]', -- 1159k -- sorted by approximate transclusion count '{{ *[Uu]se +(mdy) +dates *[|}]', -- 212k '{{ *[Uu]se +(MDY) +dates *[|}]', -- 788 '{{ *[Uu]se +(DMY) +dates *[|}]', -- 343 '{{ *([Mm]dy) *[|}]', -- 176 '{{ *[Uu]se *(dmy) *[|}]', -- 156 + 18 '{{ *[Uu]se *(mdy) *[|}]', -- 149 + 11 '{{ *([Dd]my) *[|}]', -- 56 '{{ *[Uu]se +(MDY) *[|}]', -- 5 '{{ *([Dd]MY) *[|}]', -- 3 '{{ *[Uu]se(mdy)dates *[|}]', -- 1 '{{ *[Uu]se +(DMY) *[|}]', -- 0 '{{ *([Mm]DY) *[|}]', -- 0 } local function get_date_format () local content = mw.title.getCurrentTitle():getContent() or ''; -- get the content of the article or ''; new pages edited w/ve do not have 'content' until saved; ve does not preview; phab:T221625 for _, pattern in ipairs (df_template_patterns) do -- loop through the patterns looking for {{Use dmy dates}} or {{Use mdy dates}} or any of their redirects local start, _, match = content:find(pattern); -- match is the three letters indicating desired date format if match then content = content:match ('%b{}', start); -- get the whole template if content:match ('| *cs1%-dates *= *[lsy][sy]?') then -- look for |cs1-dates=publication date length access-/archive-date length return match:lower() .. '-' .. content:match ('| *cs1%-dates *= *([lsy][sy]?)'); else return match:lower() .. '-all'; -- no |cs1-dates= k/v pair; return value appropriate for use in |df= end end end end local global_df = get_date_format (); --[[--------------------------< V O L U M E , I S S U E , P A G E S >---------------------------------------- These tables hold cite class values (from the template invocation) and identify those templates that support |volume=, |issue=, and |page(s)= parameters. Cite conference and cite map require further qualification which is handled in the main module. ]] local templates_using_volume = {'citation', 'audio-visual', 'book', 'conference', 'encyclopaedia', 'interview', 'journal', 'magazine', 'map', 'news', 'report', 'techreport', 'thesis'} local templates_using_issue = {'citation', 'conference', 'episode', 'interview', 'journal', 'magazine', 'map', 'news', 'podcast'} local templates_not_using_page = {'audio-visual', 'episode', 'mailinglist', 'newsgroup', 'podcast', 'serial', 'sign', 'speech'} --[[--------------------------< K E Y W O R D S >-------------------------------------------------------------- These tables hold keywords for those parameters that have defined sets of acceptable keywords. ]] --[[--------------------------< K E Y W O R D S T A B L E >-------------------------------------------------- this is a list of keywords; each key in the list is associated with a table of synonymous keywords possibly from different languages. for I18N: add local-language keywords to value table; do not change the key. For example, adding the German keyword 'ja': ['affirmative'] = {'yes', 'true', 'y', 'ja'}, Because CS1|2 templates from en.wiki articles are often copied to other local wikis, it is recommended that the English keywords remain in these tables. ]] local keywords = { ['amp'] = {'&', 'amp', 'ampersand'}, -- |name-list-style= ['and'] = {'and', 'serial'}, -- |name-list-style= ['affirmative'] = {'yes', 'true', 'y'}, -- |ignore-isbn-error=, |last-author-amp=, |no-tracking=, |no-pp= -- Used by InternetArchiveBot ['afterword'] = {'afterword'}, -- |contribution= ['bot: unknown'] = {'bot: unknown'}, -- |url-status= -- Used by InternetArchiveBot ['cs1'] = {'cs1'}, -- |mode= ['cs2'] = {'cs2'}, -- |mode= ['dead'] = {'dead'}, -- |url-status= -- Used by InternetArchiveBot ['dmy'] = {'dmy'}, -- |df= ['dmy-all'] = {'dmy-all'}, -- |df= ['foreword'] = {'foreword'}, -- |contribution= ['free'] = {'free'}, -- |url-access= -- Used by InternetArchiveBot ['introduction'] = {'introduction'}, -- |contribution= ['limited'] = {'limited'}, -- |url-access= -- Used by InternetArchiveBot ['live'] = {'live'}, -- |url-status= -- Used by InternetArchiveBot ['mdy'] = {'mdy'}, -- |df= ['mdy-all'] = {'mdy-all'}, -- |df= ['none'] = {'none'}, -- |postscript=, |ref=, |title=, |type= -- Used by InternetArchiveBot ['off'] = {'off'}, -- |title= (potentially also: |title-link=, |postscript=, |ref=, |type=) ['preface'] = {'preface'}, -- |contribution= ['registration'] = {'registration'}, -- |url-access= -- Used by InternetArchiveBot ['subscription'] = {'subscription'}, -- |url-access= -- Used by InternetArchiveBot ['unfit'] = {'unfit'}, -- |url-status= -- Used by InternetArchiveBot ['usurped'] = {'usurped'}, -- |url-status= -- Used by InternetArchiveBot ['vanc'] = {'vanc'}, -- |name-list-style= ['ymd'] = {'ymd'}, -- |df= ['ymd-all'] = {'ymd-all'}, -- |df= -- ['yMd'] = {'yMd'}, -- |df=; not supported at en.wiki -- ['yMd-all'] = {'yMd-all'}, -- |df=; not supported at en.wiki } --[[--------------------------< X L A T E _ K E Y W O R D S >-------------------------------------------------- this function builds a list, keywords_xlate{}, of the keywords found in keywords{} where the values from keywords{} become the keys in keywords_xlate{} and the keys from keywords{} become the values in keywords_xlate{}: ['affirmative'] = {'yes', 'true', 'y'}, -- in keywords{} becomes ['yes'] = 'affirmative', -- in keywords_xlate{} ['true'] = 'affirmative', ['y'] = 'affirmative', the purpose of this function is to act as a translator between a non-English keyword and its English equivalent that may be used in other modules of this suite ]] local function xlate_keywords () local out_table = {}; -- output goes here for k, keywords_t in pairs (keywords) do -- spin through the keywords table for _, keyword in ipairs (keywords_t) do -- for each keyword out_table[keyword] = k; -- create an entry in the output table where keyword is the key end end return out_table; end local keywords_xlate = xlate_keywords (); -- the list of translated keywords --[[--------------------------< M A K E _ K E Y W O R D S _ L I S T >------------------------------------------ this function assembles, for parameter-value validation, the list of keywords appropriate to that parameter. keywords_lists{}, is a table of tables from keywords{} ]] local function make_keywords_list (keywords_lists) local out_table = {}; -- output goes here for _, keyword_list in ipairs (keywords_lists) do -- spin through keywords_lists{} and get a table of keywords for _, keyword in ipairs (keyword_list) do -- spin through keyword_list{} and add each keyword, ... table.insert (out_table, keyword); -- ... as plain text, to the output list end end return out_table; end --[[--------------------------< K E Y W O R D S _ L I S T S >-------------------------------------------------- this is a list of lists of valid keywords for the various parameters in [key]. Generally the keys in this table are the canonical en.wiki parameter names though some are contrived because of use in multiple differently named parameters: ['yes_true_y'], ['id-access']. The function make_keywords_list() extracts the individual keywords from the appropriate list in keywords{}. The lists in this table are used to validate the keyword assignment for the parameters named in this table's keys. ]] local keywords_lists = { ['yes_true_y'] = make_keywords_list ({keywords.affirmative}), ['contribution'] = make_keywords_list ({keywords.afterword, keywords.foreword, keywords.introduction, keywords.preface}), ['df'] = make_keywords_list ({keywords.dmy, keywords['dmy-all'], keywords.mdy, keywords['mdy-all'], keywords.ymd, keywords['ymd-all']}), -- ['df'] = make_keywords_list ({keywords.dmy, keywords['dmy-all'], keywords.mdy, keywords['mdy-all'], keywords.ymd, keywords['ymd-all'], keywords.yMd, keywords['yMd-all']}), -- not supported at en.wiki ['mode'] = make_keywords_list ({keywords.cs1, keywords.cs2}), ['name-list-style'] = make_keywords_list ({keywords.amp, keywords['and'], keywords.vanc}), ['url-access'] = make_keywords_list ({keywords.subscription, keywords.limited, keywords.registration}), ['url-status'] = make_keywords_list ({keywords.dead, keywords.live, keywords.unfit, keywords.usurped, keywords['bot: unknown']}), ['id-access'] = make_keywords_list ({keywords.free}), } --[[--------------------------< S T R I P M A R K E R S >------------------------------------------------------ Common pattern definition location for stripmarkers so that we don't have to go hunting for them if (when) MediaWiki changes their form. ]] local stripmarkers = { ['any'] = '\127[^\127]*UNIQ%-%-(%a+)%-[%a%d]+%-QINU[^\127]*\127', -- capture returns name of stripmarker ['math'] = '\127[^\127]*UNIQ%-%-math%-[%a%d]+%-QINU[^\127]*\127' -- math stripmarkers used in coins_cleanup() and coins_replace_math_stripmarker() } --[[--------------------------< I N V I S I B L E _ C H A R A C T E R S >-------------------------------------- This table holds non-printing or invisible characters indexed either by name or by Unicode group. Values are decimal representations of UTF-8 codes. The table is organized as a table of tables because the Lua pairs keyword returns table data in an arbitrary order. Here, we want to process the table from top to bottom because the entries at the top of the table are also found in the ranges specified by the entries at the bottom of the table. Also here is a pattern that recognizes stripmarkers that begin and end with the delete characters. The nowiki stripmarker is not an error but some others are because the parameter values that include them become part of the template's metadata before stripmarker replacement. ]] local invisible_chars = { {'replacement', '\239\191\189'}, -- U+FFFD, EF BF BD {'zero width joiner', '\226\128\141'}, -- U+200D, E2 80 8D {'zero width space', '\226\128\139'}, -- U+200B, E2 80 8B {'hair space', '\226\128\138'}, -- U+200A, E2 80 8A {'soft hyphen', '\194\173'}, -- U+00AD, C2 AD {'horizontal tab', '\009'}, -- U+0009 (HT), 09 {'line feed', '\010'}, -- U+000A (LF), 0A {'no-break space', '\194\160'}, -- U+00A0 (NBSP), C2 A0 {'carriage return', '\013'}, -- U+000D (CR), 0D {'stripmarker', stripmarkers.any}, -- stripmarker; may or may not be an error; capture returns the stripmaker type {'delete', '\127'}, -- U+007F (DEL), 7F; must be done after stripmarker test {'C0 control', '[\000-\008\011\012\014-\031]'}, -- U+0000–U+001F (NULL–US), 00–1F (except HT, LF, CR (09, 0A, 0D)) {'C1 control', '[\194\128-\194\159]'}, -- U+0080–U+009F (XXX–APC), C2 80 – C2 9F -- {'Specials', '[\239\191\185-\239\191\191]'}, -- U+FFF9-U+FFFF, EF BF B9 – EF BF BF -- {'Private use area', '[\238\128\128-\239\163\191]'}, -- U+E000–U+F8FF, EE 80 80 – EF A3 BF -- {'Supplementary Private Use Area-A', '[\243\176\128\128-\243\191\191\189]'}, -- U+F0000–U+FFFFD, F3 B0 80 80 – F3 BF BF BD -- {'Supplementary Private Use Area-B', '[\244\128\128\128-\244\143\191\189]'}, -- U+100000–U+10FFFD, F4 80 80 80 – F4 8F BF BD } --[[ Indic script makes use of zero width joiner as a character modifier so zwj characters must be left in. This pattern covers all of the unicode characters for these languages: Devanagari 0900–097F – https://unicode.org/charts/PDF/U0900.pdf Devanagari extended A8E0–A8FF – https://unicode.org/charts/PDF/UA8E0.pdf Bengali 0980–09FF – https://unicode.org/charts/PDF/U0980.pdf Gurmukhi 0A00–0A7F – https://unicode.org/charts/PDF/U0A00.pdf Gujarati 0A80–0AFF – https://unicode.org/charts/PDF/U0A80.pdf Oriya 0B00–0B7F – https://unicode.org/charts/PDF/U0B00.pdf Tamil 0B80–0BFF – https://unicode.org/charts/PDF/U0B80.pdf Telugu 0C00–0C7F – https://unicode.org/charts/PDF/U0C00.pdf Kannada 0C80–0CFF – https://unicode.org/charts/PDF/U0C80.pdf Malayalam 0D00–0D7F – https://unicode.org/charts/PDF/U0D00.pdf plus the not-necessarily Indic scripts for Sinhala and Burmese: Sinhala 0D80-0DFF - https://unicode.org/charts/PDF/U0D80.pdf Myanmar 1000-109F - https://unicode.org/charts/PDF/U1000.pdf Myanmar extended A AA60-AA7F - https://unicode.org/charts/PDF/UAA60.pdf Myanmar extended B A9E0-A9FF - https://unicode.org/charts/PDF/UA9E0.pdf the pattern is used by has_invisible_chars() and coins_cleanup() TODO: find a better place for this? ]] local indic_script = '[\224\164\128-\224\181\191\224\163\160-\224\183\191\225\128\128-\225\130\159\234\167\160-\234\167\191\234\169\160-\234\169\191]'; --[[--------------------------< L A N G U A G E S U P P O R T >---------------------------------------------- These tables and constants support various language-specific functionality. ]] local this_wiki_code = mw.getContentLanguage():getCode(); -- get this wiki's language code if string.match (mw.site.server, 'wikidata') then this_wiki_code = mw.getCurrentFrame():preprocess('{{int:lang}}'); -- on Wikidata so use interface language setting instead end local languages = mw.language.fetchLanguageNames (this_wiki_code, 'all'); -- get a list of language names known to Wikimedia; used for |language= and interwiki tests local inter_wiki_map = {}; -- map of inter-wiki prefixes that are language-code prefixes for k, v in pairs (mw.site.interwikiMap ('local')) do -- spin through the base inter-wiki map (limited to local) if languages[v["prefix"]] then -- if the prefix matches a known language code inter_wiki_map[v["prefix"]] = true; -- add it to our local map end end local local_lang_cat_enable = false; -- set to true to categorize pages where |language=<local wiki's language> --[[--------------------------< S C R I P T _ L A N G _ C O D E S >-------------------------------------------- This table is used to hold ISO 639-1 two-character and ISO 639-3 three-character language codes that apply only to |script-title= and |script-chapter= ]] local script_lang_codes = { 'am', 'ar', 'be', 'bg', 'bn', 'bo', 'bs', 'dv', 'dz', 'el', 'fa', 'gu', 'he', 'hi', 'hy', 'ja', 'ka', 'kk', 'km', 'kn', 'ko', 'ku', 'lo', 'mk', 'ml', 'mn', 'mr', 'my', 'ne', 'or', 'ota', 'ps', 'ru', 'sd', 'si', 'sr', 'ta', 'tg', 'th', 'ug', 'uk', 'ur', 'uz', 'yi', 'zh' }; --[[--------------------------< L A N G U A G E R E M A P P I N G >------------------------------------------ These tables hold language information that is different (correct) from MediaWiki's definitions For each ['code'] = 'language name' in lang_code_remap{} there must be a matching ['language name'] = {'language name', 'code'} in lang_name_remap{} lang_code_remap{}: key is always lowercase ISO 639-1, -2, -3 language code or a valid lowercase IETF language tag value is properly spelled and capitalized language name associated with key only one language name per key; key/value pair must have matching entry in lang_name_remap{} lang_name_remap{}: key is always lowercase language name value is a table the holds correctly spelled and capitalized language name [1] and associated code [2] (code must match a code key in lang_code_remap{}) may have multiple keys referring to a common preferred name and code; For example: ['kolsch'] and ['kölsch'] both refer to 'Kölsch' and 'ksh' ]] local lang_code_remap = { -- used for |language= and |script-title= / |script-chapter= ['als'] = 'Tosk Albanian', -- MediaWiki returns Alemannisch ['bh'] = 'Bihari', -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org ['bla'] = 'Blackfoot', -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name ['bn'] = 'Bengali', -- MediaWiki returns Bangla ['ca-valencia'] = 'Valencian', -- IETF variant of Catalan ['crh'] = 'Crimean Tatar', -- synonymous with Crimean Turkish (return value from {{#language:crh|en}}) ['ilo'] = 'Ilocano', -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name ['ksh'] = 'Kölsch', -- MediaWiki: Colognian; use IANA/ISO 639 preferred name ['ksh-x-colog'] = 'Colognian', -- override MediaWiki ksh; no IANA/ISO 639 code for Colognian; IETF private code created at Module:Lang/data ['mis-x-ripuar'] = 'Ripuarian', -- override MediaWiki ksh; no IANA/ISO 639 code for Ripuarian; IETF private code created at Module:Lang/data ['nan-tw'] = 'Taiwanese Hokkien', -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese and support en.wiki preferred name } local lang_name_remap = { -- used for |language= ['alemannisch'] = {'Swiss German', 'gsw'}, -- not an ISO or IANA language name; MediaWiki uses 'als' as a subdomain name for Alemannic Wikipedia: als.wikipedia.org ['bangla'] = {'Bengali', 'bn'}, -- MediaWiki returns Bangla (the endonym) but we want Bengali (the exonym); here we remap ['bengali'] = {'Bengali', 'bn'}, -- MediaWiki doesn't use exonym so here we provide correct language name and 639-1 code ['bhojpuri'] = {'Bhojpuri', 'bho'}, -- MediaWiki uses 'bh' as a subdomain name for Bhojpuri Wikipedia: bh.wikipedia.org ['bihari'] = {'Bihari', 'bh'}, -- MediaWiki replaces 'Bihari' with 'Bhojpuri' so 'Bihari' cannot be found ['blackfoot'] = {'Blackfoot', 'bla'}, -- MediaWiki/IANA/ISO 639: Siksika; use en.wiki preferred name ['colognian'] = {'Colognian', 'ksh-x-colog'}, -- MediaWiki preferred name for ksh ['crimean tatar'] = {'Crimean Tatar', 'crh'}, -- MediaWiki uses 'crh' as a subdomain name for Crimean Tatar Wikipedia: crh.wikipedia.org ['ilocano'] = {'Ilocano', 'ilo'}, -- MediaWiki/IANA/ISO 639: Iloko; use en.wiki preferred name ['kolsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name (use non-diacritical o instead of umlaut ö) ['kölsch'] = {'Kölsch', 'ksh'}, -- use IANA/ISO 639 preferred name ['ripuarian'] = {'Ripuarian', 'mis-x-ripuar'}, -- group of dialects; no code in MediaWiki or in IANA/ISO 639 -- ['siksika'] = {'Siksika', 'bla'}, -- MediaWiki/IANA/ISO 639 preferred name: Siksika ['taiwanese hokkien'] = {'Taiwanese Hokkien', 'nan-TW'}, -- make room for MediaWiki/IANA/ISO 639 nan: Min Nan Chinese ['tosk albanian'] = {'Tosk Albanian', 'als'}, -- MediaWiki replaces 'Tosk Albanian' with 'Alemannisch' so 'Tosk Albanian' cannot be found ['valencian'] = {'Valencian', 'ca'}, -- variant of Catalan; categorizes as Catalan } --[[--------------------------< P R O P E R T I E S _ C A T E G O R I E S >------------------------------------ Here we name properties categories ]] local prop_cats = { ['foreign_lang_source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is foreign-language name, $2 is ISO639-1 code ['foreign_lang_source_2'] = 'CS1 foreign language sources (ISO 639-2)|$1', -- |language= category; a cat for ISO639-2 languages; $1 is the ISO 639-2 code used as a sort key ['local_lang_source'] = 'CS1 $1-language sources ($2)', -- |language= categories; $1 is local-language name, $2 is ISO639-1 code; not emitted when local_lang_cat_enable is false ['location test'] = 'CS1 location test', ['script'] = 'CS1 uses foreign language script', -- when language specified by |script-title=xx: doesn't have its own category ['script_with_name'] = 'CS1 uses $1-language script ($2)', -- |script-title=xx: has matching category; $1 is language name, $2 is ISO639-1 code ['jul_greg_uncertainty'] = 'CS1: Julian–Gregorian uncertainty', -- probably temporary cat to identify scope of template with dates 1 October 1582 – 1 January 1926 ['long_vol'] = 'CS1: long volume value', -- probably temporary cat to identify scope of |volume= values longer than 4 charachters ['year_range_abbreviated'] = 'CS1: abbreviated year range', -- probably temporary cat to identify scope of |date=, |year= values using YYYY–YY form } --[[--------------------------< T I T L E _ T Y P E S >-------------------------------------------------------- Here we map a template's CitationClass to TitleType (default values for |type= parameter) ]] local title_types = { ['AV-media-notes'] = 'Media notes', ['interview'] = 'Interview', ['mailinglist'] = 'Mailing list', ['map'] = 'Map', ['podcast'] = 'Podcast', ['pressrelease'] = 'Press release', ['report'] = 'Report', ['techreport'] = 'Technical report', ['thesis'] = 'Thesis', } --[[=========================<< E R R O R M E S S A G I N G >>=============================================== ]] --[[--------------------------< E R R O R M E S S A G E S U P P L I M E N T S >---------------------------- I18N for those messages that are supplemented with additional specific text that describes the reason for the error TODO: merge this with special_case_translations{}? ]] local err_msg_supl = { ['char'] = 'invalid character', -- |isbn=, |sbn= ['check'] = 'checksum', -- |isbn=, |sbn= ['flag'] = 'flag', -- |archive-url= ['form'] = 'invalid form', -- |isbn=, |sbn= ['group'] = 'invalid group id', -- |isbn= ['initials'] = 'initials', -- Vancouver ['journal'] = 'journal', -- |bibcode= ['length'] = 'length', -- |isbn=, |bibcode=, |sbn= ['liveweb'] = 'liveweb', -- |archive-url= ['missing comma'] = 'missing comma', -- Vancouver ['name'] = 'name', -- Vancouver ['non-Latin char'] = 'non-Latin character', -- Vancouver ['path'] = 'path', -- |archive-url= ['prefix'] = 'invalid prefix', -- |isbn= ['punctuation'] = 'punctuation', -- Vancouver ['save'] = 'save command', -- |archive-url= ['suffix'] = 'suffix', -- Vancouver ['timestamp'] = 'timestamp', -- |archive-url= ['value'] = 'value', -- |bibcode= ['year'] = 'year', -- |bibcode= } --[[--------------------------< E R R O R _ C O N D I T I O N S >---------------------------------------------- Error condition table. This table has two sections: errors at the top, maintenance at the bottom. Maint 'messaging' does not have a 'message' (message=nil) The following contains a list of IDs for various error conditions defined in the code. For each ID, we specify a text message to display, an error category to include, and whether the error message should be wrapped as a hidden comment. Anchor changes require identical changes to matching anchor in Help:CS1 errors TODO: rename error_conditions{} to something more generic; create separate error and maint tables inside that? ]] local error_conditions = { err_accessdate_missing_url = { message = '<code class="cs1-code">&#124;access-date=</code> requires <code class="cs1-code">&#124;url=</code>', anchor = 'accessdate_missing_url', category = 'Pages using citations with accessdate and no URL', hidden = false }, err_apostrophe_markup = { message = 'Italic or bold markup not allowed in: <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'apostrophe_markup', category = 'CS1 errors: markup', hidden = false }, err_archive_missing_date = { message = '<code class="cs1-code">&#124;archive-url=</code> requires <code class="cs1-code">&#124;archive-date=</code>', anchor = 'archive_missing_date', category = 'Pages with archiveurl citation errors', hidden = false }, err_archive_missing_url = { message = '<code class="cs1-code">&#124;archive-url=</code> requires <code class="cs1-code">&#124;url=</code>', anchor = 'archive_missing_url', category = 'Pages with archiveurl citation errors', hidden = false }, err_archive_url = { message = '<code class="cs1-code">&#124;archive-url=</code> is malformed: $1', -- $1 is error message detail anchor = 'archive_url', category = 'Pages with archiveurl citation errors', hidden = false }, err_arxiv_missing = { message = '<code class="cs1-code">&#124;arxiv=</code> required', anchor = 'arxiv_missing', category = 'CS1 errors: arXiv', -- same as bad arxiv hidden = false }, err_bad_arxiv = { message = 'Check <code class="cs1-code">&#124;arxiv=</code> value', anchor = 'bad_arxiv', category = 'CS1 errors: arXiv', hidden = false }, err_bad_asin = { message = 'Check <code class="cs1-code">&#124;asin=</code> value', anchor = 'bad_asin', category ='CS1 errors: ASIN', hidden = false }, err_bad_bibcode = { message = 'Check <code class="cs1-code">&#124;bibcode=</code> $1', -- $1 is error message detail anchor = 'bad_bibcode', category = 'CS1 errors: bibcode', hidden = false }, err_bad_biorxiv = { message = 'Check <code class="cs1-code">&#124;biorxiv=</code> value', anchor = 'bad_biorxiv', category = 'CS1 errors: bioRxiv', hidden = false }, err_bad_citeseerx = { message = 'Check <code class="cs1-code">&#124;citeseerx=</code> value', anchor = 'bad_citeseerx', category = 'CS1 errors: citeseerx', hidden = false }, err_bad_date = { -- message = 'Check date values in: <code class="cs1-code">$1</code>', -- $1 is parameter name message = 'Check date values in: $1', -- $1 is parameter name anchor = 'bad_date', category = 'CS1 errors: dates', hidden = false }, err_bad_doi = { message = 'Check <code class="cs1-code">&#124;doi=</code> value', anchor = 'bad_doi', category = 'CS1 errors: DOI', hidden = false }, err_bad_hdl = { message = 'Check <code class="cs1-code">&#124;hdl=</code> value', anchor = 'bad_hdl', category = 'CS1 errors: HDL', hidden = false }, err_bad_isbn = { message = 'Check <code class="cs1-code">&#124;isbn=</code> value: $1', -- $1 is error message detail anchor = 'bad_isbn', category = 'CS1 errors: ISBN', hidden = false }, err_bad_ismn = { message = 'Check <code class="cs1-code">&#124;ismn=</code> value', anchor = 'bad_ismn', category = 'CS1 errors: ISMN', hidden = false }, err_bad_issn = { message = 'Check <code class="cs1-code">&#124;$1issn=</code> value', -- $1 is 'e' or '' for eissn or issn anchor = 'bad_issn', category = 'CS1 errors: ISSN', hidden = false }, err_bad_jfm = { message = 'Check <code class="cs1-code">&#124;jfm=</code> value', anchor = 'bad_jfm', category = 'CS1 errors: JFM', hidden = false }, err_bad_lccn = { message = 'Check <code class="cs1-code">&#124;lccn=</code> value', anchor = 'bad_lccn', category = 'CS1 errors: LCCN', hidden = false }, err_bad_mr = { message = 'Check <code class="cs1-code">&#124;mr=</code> value', anchor = 'bad_mr', category = 'CS1 errors: MR', hidden = false }, err_bad_ol = { message = 'Check <code class="cs1-code">&#124;ol=</code> value', anchor = 'bad_ol', category = 'CS1 errors: OL', hidden = false }, err_bad_paramlink = { -- for |title-link=, |author/editor/translator-link=, |series-link=, |episode-link= message = 'Check <code class="cs1-code">&#124;$1=</code> value', -- $1 is parameter name anchor = 'bad_paramlink', category = 'CS1 errors: parameter link', hidden = false }, err_bad_pmc = { message = 'Check <code class="cs1-code">&#124;pmc=</code> value', anchor = 'bad_pmc', category = 'CS1 errors: PMC', hidden = false }, err_bad_pmid = { message = 'Check <code class="cs1-code">&#124;pmid=</code> value', anchor = 'bad_pmid', category = 'CS1 errors: PMID', hidden = false }, err_bad_oclc = { message = 'Check <code class="cs1-code">&#124;oclc=</code> value', anchor = 'bad_oclc', category = 'CS1 errors: OCLC', hidden = false }, bad_s2cid_err = { message = 'Check <code class="cs1-code">&#124;s2cid=</code> value', anchor = 'bad_s2cid', category = 'CS1 errors: S2CID', hidden = false }, err_bad_sbn = { message = 'Check <code class="cs1-code">&#124;sbn=</code> value: $1', -- $1 is error message detail anchor = 'bad_sbn', category = 'CS1 errors: SBN', hidden = false }, err_bad_ssrn = { message = 'Check <code class="cs1-code">&#124;ssrn=</code> value', anchor = 'bad_ssrn', category = 'CS1 errors: SSRN', hidden = false }, err_bad_url = { message = 'Check $1 value', -- $1 is parameter name anchor = 'bad_url', category = 'Pages with URL errors', hidden = false }, err_bad_usenet_id = { message = 'Check <code class="cs1-code">&#124;message-id=</code> value', anchor = 'bad_message_id', category = 'CS1 errors: message-id', hidden = false }, err_bad_zbl = { message = 'Check <code class="cs1-code">&#124;zbl=</code> value', anchor = 'bad_zbl', category = 'CS1 errors: ZBL', hidden = false }, err_bare_url_missing_title = { message = '$1 missing title', -- $1 is parameter name anchor = 'bare_url_missing_title', category = 'Pages with citations having bare URLs', hidden = false }, err_biorxiv_missing = { message = '<code class="cs1-code">&#124;biorxiv=</code> required', anchor = 'biorxiv_missing', category = 'CS1 errors: bioRxiv', -- same as bad bioRxiv hidden = false }, err_chapter_ignored = { message = '<code class="cs1-code">&#124;$1=</code> ignored', -- $1 is parameter name anchor = 'chapter_ignored', category = 'CS1 errors: chapter ignored', hidden = false }, err_citation_missing_title = { message = 'Missing or empty <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'citation_missing_title', category = 'Pages with citations lacking titles', hidden = false }, err_citeseerx_missing = { message = '<code class="cs1-code">&#124;citeseerx=</code> required', anchor = 'citeseerx_missing', category = 'CS1 errors: citeseerx', -- same as bad citeseerx hidden = false }, err_cite_web_url = { -- this error applies to cite web and to cite podcast message = 'Missing or empty <code class="cs1-code">&#124;url=</code>', anchor = 'cite_web_url', category = 'Pages using web citations with no URL', hidden = false }, err_class_ignored = { message = '<code class="cs1-code">&#124;class=</code> ignored', anchor = 'class_ignored', category = 'CS1 errors: class', hidden = false }, err_contributor_ignored = { message = '<code class="cs1-code">&#124;contributor=</code> ignored', anchor = 'contributor_ignored', category = 'CS1 errors: contributor', hidden = false }, err_contributor_missing_required_param = { message = '<code class="cs1-code">&#124;contributor=</code> requires <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'contributor_missing_required_param', category = 'CS1 errors: contributor', hidden = false }, err_deprecated_params = { message = 'Cite uses deprecated parameter <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'deprecated_params', category = 'CS1 errors: deprecated parameters', hidden = false }, err_disp_name = { message = 'Invalid <code class="cs1-code">&#124;display-$1=$2</code>', -- $1 is 'authors', 'contributors', 'editors', 'interviewers', 'translators'; gets value from special_case_translation table anchor = 'disp_name', category = 'CS1 errors: display-names', hidden = false, }, err_doibroken_missing_doi = { message = '<code class="cs1-code">&#124;$1=</code> requires <code class="cs1-code">&#124;doi=</code>', -- $1 is parameter name anchor = 'doibroken_missing_doi', category = 'CS1 errors: DOI', hidden = false }, err_empty_citation = { message = 'Empty citation', anchor = 'empty_citation', category = 'Pages with empty citations', hidden = false }, err_etal = { message = 'Explicit use of et al. in: <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'explicit_et_al', category = 'CS1 errors: explicit use of et al.', hidden = false }, err_first_missing_last = { message = '<code class="cs1-code">&#124;$1=</code> missing <code class="cs1-code">&#124;$2=</code>', -- $1 is first alias, $2 is matching last alias anchor = 'first_missing_last', category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator hidden = false }, err_format_missing_url = { message = '<code class="cs1-code">&#124;$1=</code> requires <code class="cs1-code">&#124;$2=</code>', -- $1 is format parameter $2 is url parameter anchor = 'format_missing_url', category = 'Pages using citations with format and no URL', hidden = false }, err_generic_title = { message = 'Cite uses generic title', anchor = 'generic_title', category = 'CS1 errors: generic title', hidden = false, }, err_invalid_param_val = { message = 'Invalid <code class="cs1-code">&#124;$1=$2</code>', -- $1 is parameter name $2 is parameter value anchor = 'invalid_param_val', category = 'CS1 errors: invalid parameter value', hidden = false }, err_invisible_char = { message = '$1 in $2 at position $3', -- $1 is invisible char $2 is parameter name $3 is position number anchor = 'invisible_char', category = 'CS1 errors: invisible characters', hidden = false }, err_missing_name = { message = 'Missing <code class="cs1-code">&#124;$1$2=</code>', -- $1 is modified NameList; $2 is enumerator anchor = 'missing_name', category = 'CS1 errors: missing name', -- author, contributor, editor, interviewer, translator hidden = false }, err_missing_periodical = { message = 'Cite $1 requires <code class="cs1-code">&#124;$2=</code>', -- $1 is cs1 template name; $2 is canonical periodical parameter name for cite $1 anchor = 'missing_periodical', category = 'CS1 errors: missing periodical', hidden = true }, err_missing_pipe = { message = 'Missing pipe in: <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'missing_pipe', category = 'CS1 errors: missing pipe', hidden = false }, err_param_access_requires_param = { message = '<code class="cs1-code">&#124;$1-access=</code> requires <code class="cs1-code">&#124;$1=</code>', -- $1 is parameter name anchor = 'param_access_requires_param', category = 'CS1 errors: param-access', hidden = false }, err_param_has_ext_link = { message = 'External link in <code class="cs1-code">$1</code>', -- $1 is parameter name anchor = 'param_has_ext_link', category = 'CS1 errors: external links', hidden = false }, err_parameter_ignored = { message = 'Unknown parameter <code class="cs1-code">&#124;$1=</code> ignored', -- $1 is parameter name anchor = 'parameter_ignored', category = 'Pages with citations using unsupported parameters', hidden = false }, err_parameter_ignored_suggest = { message = 'Unknown parameter <code class="cs1-code">&#124;$1=</code> ignored (<code class="cs1-code">&#124;$2=</code> suggested)', -- $1 is unknown parameter $2 is suggested parameter name anchor = 'parameter_ignored_suggest', category = 'Pages with citations using unsupported parameters', hidden = false }, err_redundant_parameters = { message = 'More than one of $1 specified', -- $1 is error message detail anchor = 'redundant_parameters', category = 'Pages with citations having redundant parameters', hidden = false }, err_script_parameter = { message = 'Invalid <code class="cs1-code">&#124;$1=</code>: $2', -- $1 is parameter name $2 is script language code or error detail anchor = 'script_parameter', category = 'CS1 errors: script parameters', hidden = false }, err_ssrn_missing = { message = '<code class="cs1-code">&#124;ssrn=</code> required', anchor = 'ssrn_missing', category = 'CS1 errors: ssrn', -- same as bad arxiv hidden = false }, err_text_ignored = { message = 'Text "$1" ignored', -- $1 is ignored text anchor = 'text_ignored', category = 'Pages with citations using unnamed parameters', hidden = false }, err_trans_missing_title = { message = '<code class="cs1-code">&#124;trans-$1=</code> requires <code class="cs1-code">&#124;$1=</code> or <code class="cs1-code">&#124;script-$1=</code>', -- $1 is base parameter name anchor = 'trans_missing_title', category = 'CS1 errors: translated title', hidden = false }, err_param_unknown_empty = { message = 'Cite has empty unknown parameter$1: $2', -- $1 is 's' or empty space; $2 is emty unknown param list anchor = 'param_unknown_empty', category = 'CS1 errors: empty unknown parameters', hidden = true }, err_vancouver = { message = 'Vancouver style error: $1', -- $1 is error detail anchor = 'vancouver', category = 'CS1 errors: Vancouver style', hidden = false }, err_wikilink_in_url = { message = 'URL–wikilink conflict', -- uses ndash anchor = 'wikilink_in_url', category = 'CS1 errors: URL–wikilink conflict', -- uses ndash hidden = false }, --[[--------------------------< M A I N T >-------------------------------------------------------------------- maint messages do not have a message (message = nil); otherwise the structure is the same as error messages ]] maint_asin = { message = nil, anchor = 'ASIN', category = 'CS1 maint: ASIN uses ISBN', hidden = true, }, maint_archived_copy = { message = nil, anchor = 'archived_copy', category = 'CS1 maint: archived copy as title', hidden = true, }, maint_authors = { message = nil, anchor = 'authors', category = 'CS1 maint: uses authors parameter', hidden = true, }, maint_bot_unknown = { message = nil, anchor = 'bot:_unknown', category = 'CS1 maint: BOT: original-url status unknown', hidden = true, }, maint_date_format = { message = nil, anchor = 'date_format', category = 'CS1 maint: date format', hidden = true, }, maint_date_year = { message = nil, anchor = 'date_year', category = 'CS1 maint: date and year', hidden = true, }, maint_doi_ignore = { message = nil, anchor = 'doi_ignore', category = 'CS1 maint: ignored DOI errors', hidden = true, }, maint_doi_inactive = { message = nil, anchor = 'doi_inactive', category = 'CS1 maint: DOI inactive', hidden = true, }, maint_doi_inactive_dated = { message = nil, anchor = 'doi_inactive_dated', category = 'CS1 maint: DOI inactive as of $2$3$1', -- $1 is year, $2 is month-name or empty string, $3 is space or empty string hidden = true, }, maint_extra_punct = { message = nil, anchor = 'extra_punct', category = 'CS1 maint: extra punctuation', hidden = true, }, maint_extra_text = { message = nil, anchor = 'extra_text', category = 'CS1 maint: extra text', hidden = true, }, maint_extra_text_names = { message = nil, anchor = 'extra_text_names', category = 'CS1 maint: extra text: $1', -- $1 is '<name>s list'; gets value from special_case_translation table hidden = true, }, maint_isbn_ignore = { message = nil, anchor = 'ignore_isbn_err', category = 'CS1 maint: ignored ISBN errors', hidden = true, }, maint_issn_ignore = { message = nil, anchor = 'ignore_issn', category = 'CS1 maint: ignored ISSN errors', hidden = true, }, maint_jfm_format = { message = nil, anchor = 'jfm_format', category = 'CS1 maint: JFM format', hidden = true, }, maint_location = { message = nil, anchor = 'location', category = 'CS1 maint: location', hidden = true, }, maint_mr_format = { message = nil, anchor = 'mr_format', category = 'CS1 maint: MR format', hidden = true, }, maint_mult_names = { message = nil, anchor = 'mult_names', category = 'CS1 maint: multiple names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table hidden = true, }, maint_nocat = { message = nil, anchor = 'maint_nocat', category = 'CS1 maint: nocat', hidden = true, }, maint_numeric_names = { message = nil, anchor = 'numeric_names', category = 'CS1 maint: numeric names: $1', -- $1 is '<name>s list'; gets value from special_case_translation table hidden = true, }, maint_others = { message = nil, anchor = 'others', category = 'CS1 maint: others', hidden = true, }, maint_pmc_embargo = { message = nil, anchor = 'embargo', category = 'CS1 maint: PMC embargo expired', hidden = true, }, maint_pmc_format = { message = nil, anchor = 'pmc_format', category = 'CS1 maint: PMC format', hidden = true, }, maint_ref_harv = { message = nil, anchor = 'ref_harv', category = 'CS1 maint: ref=harv', hidden = true, }, maint_unfit = { message = nil, anchor = 'unfit', category = 'CS1 maint: unfit url', hidden = true, }, maint_unknown_lang = { message = nil, anchor = 'unknown_lang', category = 'CS1 maint: unrecognized language', hidden = true, }, maint_untitled = { message = nil, anchor = 'untitled', category = 'CS1 maint: untitled periodical', hidden = true, }, maint_zbl = { message = nil, anchor = 'zbl', category = 'CS1 maint: ZBL', hidden = true, }, } --[[--------------------------< I D _ H A N D L E R S >-------------------------------------------------------- The following contains a list of values for various defined identifiers. For each identifier we specify a variety of information necessary to properly render the identifier in the citation. parameters: a list of parameter aliases for this identifier; first in the list is the canonical form link: Wikipedia article name redirect: a local redirect to a local Wikipedia article name; at en.wiki, 'ISBN (identifier)' is a redirect to 'International Standard Book Number' q: wikidata q number for the identifier label: the label preceeding the identifier; label is linked to a wikipedia article (in this order): redirect from id_handlers['<id>'].redirect when use_identifier_redirects is true wikidata-supplied article name for the local wiki from id_handlers['<id>'].q local article name from id_handlers['<id>'].link mode: 'manual' when there is a specific function in the code to handle the identifier; 'external' for identifiers that link outside of Wikipedia; prefix: the first part of a url that will be concatenated with a second part which usually contains the identifier suffix: optional third part to be added after the identifier encode: true if uri should be percent encoded; otherwise false COinS: identifier link or keyword for use in COinS: for identifiers registered at info-uri.info use: info:.... for identifiers that have COinS keywords, use the keyword: rft.isbn, rft.issn, rft.eissn for others make a url using the value in prefix, use the keyword: pre (not checked; any text other than 'info' or 'rft' works here) set to nil to leave the identifier out of the COinS separator: character or text between label and the identifier in the rendered citation id_limit: for those identifiers with established limits, this property holds the upper limit access: use this parameter to set the access level for all instances of this identifier. the value must be a valid access level for an identifier (see ['id-access'] in this file). custom_access: to enable custom access level for an identifier, set this parameter to the parameter that should control it (normally 'id-access') ]] local id_handlers = { ['ARXIV'] = { parameters = {'arxiv', 'eprint'}, link = 'arXiv', redirect = 'arXiv (identifier)', q = 'Q118398', label = 'arXiv', mode = 'manual', prefix = '//arxiv.org/abs/', -- protocol relative tested 2013-09-04 encode = false, COinS = 'info:arxiv', separator = ':', access = 'free', -- free to read }, ['ASIN'] = { parameters = { 'asin', 'ASIN' }, link = 'Amazon Standard Identification Number', redirect = 'ASIN (identifier)', q = 'Q1753278', label = 'ASIN', mode = 'manual', prefix = '//www.amazon.', COinS = nil, -- no COinS for this id (needs thinking on implementation because |asin-tld=) separator = '&nbsp;', encode = false; }, ['BIBCODE'] = { parameters = {'bibcode'}, link = 'Bibcode', redirect = 'Bibcode (identifier)', q = 'Q25754', label = 'Bibcode', mode = 'manual', prefix = 'https://ui.adsabs.harvard.edu/abs/', encode = false, COinS = 'info:bibcode', separator = ':', custom_access = 'bibcode-access', }, ['BIORXIV'] = { parameters = {'biorxiv'}, link = 'bioRxiv', redirect = 'bioRxiv (identifier)', q = 'Q19835482', label = 'bioRxiv', mode = 'manual', prefix = '//doi.org/', COinS = 'pre', -- use prefix value access = 'free', -- free to read encode = true, separator = '&nbsp;', }, ['CITESEERX'] = { parameters = {'citeseerx'}, link = 'CiteSeerX', redirect = 'CiteSeerX (identifier)', q = 'Q2715061', label = 'CiteSeerX', mode = 'manual', -- manual for custom validation of the "doi" prefix = '//citeseerx.ist.psu.edu/viewdoc/summary?doi=', COinS = 'pre', -- use prefix value access = 'free', -- free to read encode = true, separator = '&nbsp;', }, ['DOI'] = { -- Used by InternetArchiveBot parameters = { 'doi', 'DOI'}, link = 'Digital object identifier', redirect = 'doi (identifier)', q = 'Q25670', label = 'doi', mode = 'manual', prefix = '//doi.org/', COinS = 'info:doi', separator = ':', encode = true, custom_access = 'doi-access', }, ['EISSN'] = { parameters = {'eissn', 'EISSN'}, link = 'International_Standard_Serial_Number#Electronic_ISSN', redirect = 'eISSN (identifier)', q = 'Q46339674', label = 'eISSN', mode = 'manual', prefix = '//www.worldcat.org/issn/', COinS = 'rft.eissn', encode = false, separator = '&nbsp;', }, ['HDL'] = { parameters = { 'hdl', 'HDL' }, link = 'Handle System', redirect = 'hdl (identifier)', q = 'Q3126718', label = 'hdl', mode = 'manual', prefix = '//hdl.handle.net/', COinS = 'info:hdl', separator = ':', encode = true, custom_access = 'hdl-access', }, ['ISBN'] = { -- Used by InternetArchiveBot parameters = {'isbn', 'ISBN', 'isbn13', 'ISBN13'}, link = 'International Standard Book Number', redirect = 'ISBN (identifier)', q = 'Q33057', label = 'ISBN', mode = 'manual', prefix = 'Special:BookSources/', COinS = 'rft.isbn', separator = '&nbsp;', }, ['ISMN'] = { parameters = {'ismn', 'ISMN'}, link = 'International Standard Music Number', redirect = 'ISMN (identifier)', q = 'Q1666938', label = 'ISMN', mode = 'manual', prefix = '', -- not currently used; COinS = 'nil', -- nil because we can't use pre or rft or info: separator = '&nbsp;', }, ['ISSN'] = { parameters = {'issn', 'ISSN'}, link = 'International Standard Serial Number', redirect = 'ISSN (identifier)', q = 'Q131276', label = 'ISSN', mode = 'manual', prefix = '//www.worldcat.org/issn/', COinS = 'rft.issn', encode = false, separator = '&nbsp;', }, ['JFM'] = { parameters = {'jfm', 'JFM'}, link = 'Jahrbuch über die Fortschritte der Mathematik', redirect = 'JFM (identifier)', q = '', label = 'JFM', mode = 'manual', prefix = '//zbmath.org/?format=complete&q=an:', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', }, ['JSTOR'] = { parameters = {'jstor', 'JSTOR'}, link = 'JSTOR', redirect = 'JSTOR (identifier)', q = 'Q1420342', label = 'JSTOR', mode = 'external', prefix = '//www.jstor.org/stable/', -- protocol relative tested 2013-09-04 COinS = 'pre', -- use prefix value encode = false, separator = '&nbsp;', custom_access = 'jstor-access', }, ['LCCN'] = { parameters = {'lccn', 'LCCN'}, link = 'Library of Congress Control Number', redirect = 'LCCN (identifier)', q = 'Q620946', label = 'LCCN', mode = 'manual', prefix = '//lccn.loc.gov/', -- protocol relative tested 2015-12-28 COinS = 'info:lccn', encode = false, separator = '&nbsp;', }, ['MR'] = { parameters = {'mr', 'MR'}, link = 'Mathematical Reviews', redirect = 'MR (identifier)', q = 'Q211172', label = 'MR', mode = 'manual', prefix = '//www.ams.org/mathscinet-getitem?mr=', -- protocol relative tested 2013-09-04 COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', }, ['OCLC'] = { parameters = {'oclc', 'OCLC'}, link = 'OCLC', redirect = 'OCLC (identifier)', q = 'Q190593', label = 'OCLC', mode = 'manual', prefix = '//www.worldcat.org/oclc/', COinS = 'info:oclcnum', encode = true, separator = '&nbsp;', }, ['OL'] = { parameters = { 'ol', 'OL' }, link = 'Open Library', redirect = 'OL (identifier)', q = 'Q1201876', label = 'OL', mode = 'manual', prefix = '//openlibrary.org/', COinS = nil, -- no COinS for this id (needs thinking on implementation because /authors/books/works/OL) separator = '&nbsp;', encode = true, custom_access = 'ol-access', }, ['OSTI'] = { parameters = {'osti', 'OSTI'}, link = 'Office of Scientific and Technical Information', redirect = 'OSTI (identifier)', q = 'Q2015776', label = 'OSTI', mode = 'external', prefix = '//www.osti.gov/biblio/', -- protocol relative tested 2018-09-12 COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', custom_access = 'osti-access', }, ['PMC'] = { parameters = {'pmc', 'PMC'}, link = 'PubMed Central', redirect = 'PMC (identifier)', q = 'Q229883', label = 'PMC', mode = 'manual', prefix = '//www.ncbi.nlm.nih.gov/pmc/articles/PMC', suffix = " ", COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', id_limit = 8000000, access = 'free', -- free to read }, ['PMID'] = { parameters = {'pmid', 'PMID'}, link = 'PubMed Identifier', redirect = 'PMID (identifier)', q = '', label = 'PMID', mode = 'manual', prefix = '//pubmed.ncbi.nlm.nih.gov/', COinS = 'info:pmid', encode = false, separator = '&nbsp;', id_limit = 33000000, }, ['RFC'] = { parameters = {'rfc', 'RFC'}, link = 'Request for Comments', redirect = 'RFC (identifier)', q = 'Q212971', label = 'RFC', mode = 'external', prefix = '//tools.ietf.org/html/rfc', COinS = 'pre', -- use prefix value encode = false, separator = '&nbsp;', access = 'free', -- free to read }, ['SBN'] = { parameters = {'sbn', 'SBN'}, link = 'Standard Book Number', -- redirect to International_Standard_Book_Number#History redirect = 'SBN (identifier)', label = 'SBN', mode = 'manual', prefix = 'Special:BookSources/0-', -- prefix has leading zero necessary to make 9-digit sbn a 10-digit isbn COinS = nil, -- nil because we can't use pre or rft or info: separator = '&nbsp;', }, ['SSRN'] = { parameters = {'ssrn', 'SSRN'}, link = 'Social Science Research Network', redirect = 'SSRN (identifier)', q = 'Q7550801', label = 'SSRN', mode = 'manual', prefix = '//ssrn.com/abstract=', -- protocol relative tested 2013-09-04 COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', id_limit = 4000000, access = 'free', -- always free to read }, ['S2CID'] = { parameters = {'s2cid', 'S2CID'}, link = 'Semantic Scholar', redirect = 'S2CID (identifier)', q = 'Q22908627', label = 'S2CID', mode = 'manual', prefix = 'https://api.semanticscholar.org/CorpusID:', COinS = 'pre', -- use prefix value encode = false, separator = '&nbsp;', id_limit = 230000000, custom_access = 's2cid-access', }, ['USENETID'] = { parameters = {'message-id'}, link = 'Usenet', redirect = 'Usenet (identifier)', q = 'Q193162', label = 'Usenet:', mode = 'manual', prefix = 'news:', encode = false, COinS = 'pre', -- use prefix value separator = '&nbsp;', }, ['ZBL'] = { parameters = {'zbl', 'ZBL' }, link = 'Zentralblatt MATH', redirect = 'Zbl (identifier)', q = 'Q190269', label = 'Zbl', mode = 'manual', prefix = '//zbmath.org/?format=complete&q=an:', COinS = 'pre', -- use prefix value encode = true, separator = '&nbsp;', }, } --[[--------------------------< E X P O R T S >---------------------------------------------------------------- ]] return { use_identifier_redirects = true, -- when true use redirect name for identifier label links aliases = aliases, special_case_translation = special_case_translation, date_names = date_names, err_msg_supl = err_msg_supl, error_conditions = error_conditions, editor_markup_patterns = editor_markup_patterns, et_al_patterns = et_al_patterns, global_df = global_df, id_handlers = id_handlers, keywords_lists = keywords_lists, keywords_xlate = keywords_xlate, stripmarkers=stripmarkers, invisible_chars = invisible_chars, indic_script = indic_script, local_lang_cat_enable = local_lang_cat_enable, maint_cats = maint_cats, messages = messages, presentation = presentation, prop_cats = prop_cats, punct_skip = punct_skip, script_lang_codes = script_lang_codes, lang_code_remap = lang_code_remap, lang_name_remap = lang_name_remap, this_wiki_code = this_wiki_code, title_types = title_types, uncategorized_namespaces = uncategorized_namespaces, uncategorized_subpages = uncategorized_subpages, templates_using_volume = templates_using_volume, templates_using_issue = templates_using_issue, templates_not_using_page = templates_not_using_page, inter_wiki_map = inter_wiki_map, languages = languages, } f1nf05t6bptppz44xfdcftt1r2ghqbi Module:Citation/CS1/Date validation 828 1463 3230 3229 2020-10-11T01:32:08Z Chrisb 1 1 revision imported 3229 Scribunto text/plain --[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- ]] local add_prop_cat, is_set, in_array, wrap_style; -- imported functions from selected Module:Citation/CS1/Utilities local cfg; -- table of tables imported from selected Module:Citation/CS1/Configuration --[[--------------------------< F I L E - S C O P E D E C L A R A T I O N S >-------------------------------- File-scope variables are declared here ]] local lang_object = mw.getContentLanguage(); -- used by is_valid_accessdate(), is_valid_year(), date_name_xlate(); TODO: move to ~/Configuration? local year_limit; -- used by is_valid_year() --[=[-------------------------< I S _ V A L I D _ A C C E S S D A T E >---------------------------------------- returns true if: Wikipedia start date <= accessdate < today + 2 days Wikipedia start date is 2001-01-15T00:00:00 UTC which is 979516800 seconds after 1970-01-01T00:00:00 UTC (the start of Unix time) accessdate is the date provided in |access-date= at time 00:00:00 UTC today is the current date at time 00:00:00 UTC plus 48 hours if today is 2015-01-01T00:00:00 then adding 24 hours gives 2015-01-02T00:00:00 – one second more than today adding 24 hours gives 2015-01-03T00:00:00 – one second more than tomorrow This function does not work if it is fed month names for languages other than English. Wikimedia #time: parser apparently doesn't understand non-English date month names. This function will always return false when the date contains a non-English month name because good1 is false after the call to lang.formatDate(). To get around that call this function with YYYY-MM-DD format dates. ]=] local function is_valid_accessdate (accessdate) local good1, good2; local access_ts, tomorrow_ts; -- to hold Unix time stamps representing the dates good1, access_ts = pcall (lang_object.formatDate, lang_object, 'U', accessdate ); -- convert accessdate value to Unix timestamp good2, tomorrow_ts = pcall (lang_object.formatDate, lang_object, 'U', 'today + 2 days' ); -- today midnight + 2 days is one second more than all day tomorrow if good1 and good2 then -- lang.formatDate() returns a timestamp in the local script which which tonumber() may not understand access_ts = tonumber (access_ts) or lang_object:parseFormattedNumber (access_ts); -- convert to numbers for the comparison; tomorrow_ts = tonumber (tomorrow_ts) or lang_object:parseFormattedNumber (tomorrow_ts); else return false; -- one or both failed to convert to Unix time stamp end if 979516800 <= access_ts and access_ts < tomorrow_ts then -- Wikipedia start date <= accessdate < tomorrow's date return true; else return false; -- accessdate out of range end end --[[--------------------------< I S _ V A L I D _ E M B A R G O _ D A T E >------------------------------------ returns true and date value if that value has proper dmy, mdy, ymd format. returns false and 9999 (embargoed forever) when date value is not proper format; assumes that when |pmc-embargo-date= is set, the editor intended to embargo a PMC but |pmc-embargo-date= does not hold a single date. ]] local function is_valid_embargo_date (v) if v:match ('^%d%d%d%d%-%d%d%-%d%d$') or -- ymd v:match ('^%d%d?%s+%a+%s+%d%d%d%d$') or -- dmy v:match ('^%a+%s+%d%d?%s*,%s*%d%d%d%d$') then -- mdy return true, v; end return false, '9999'; -- if here not good date so return false and set embargo date to long time in future end --[[--------------------------< G E T _ M O N T H _ N U M B E R >---------------------------------------------- returns a number according to the month in a date: 1 for January, etc. Capitalization and spelling must be correct. If not a valid month, returns 0 ]] local function get_month_number (month) return cfg.date_names['local'].long[month] or cfg.date_names['local'].short[month] or -- look for local names first cfg.date_names['en'].long[month] or cfg.date_names['en'].short[month] or -- failing that, look for English names 0; -- not a recognized month name end --[[--------------------------< G E T _ S E A S O N _ N U M B E R >-------------------------------------------- returns a number according to the sequence of seasons in a year: 21 for Spring, etc. Capitalization and spelling must be correct. If not a valid season, returns 0. 21-24 = Spring, Summer, Autumn, Winter, independent of “Hemisphere” returns 0 when <param> is not |date= Season numbering is defined by Extended Date/Time Format (EDTF) specification (https://www.loc.gov/standards/datetime/) which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using numbers 21-41. cs1|2 only supports generic seasons. EDTF does support the distinction between north and south hemispere seasons but cs1|2 has no way to make that distinction. These additional divisions not currently supported: 25-28 = Spring - Northern Hemisphere, Summer- Northern Hemisphere, Autumn - Northern Hemisphere, Winter - Northern Hemisphere 29-32 = Spring – Southern Hemisphere, Summer– Southern Hemisphere, Autumn – Southern Hemisphere, Winter - Southern Hemisphere 33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each) 37-39 = Quadrimester 1, Quadrimester 2, Quadrimester 3 (4 months each) 40-41 = Semestral 1, Semestral-2 (6 months each) ]] local function get_season_number (season, param) if 'date' ~= param then return 0; -- season dates only supported by |date= end return cfg.date_names['local'].season[season] or -- look for local names first cfg.date_names['en'].season[season] or -- failing that, look for English names 0; -- not a recognized season name end --[[--------------------------< G E T _ Q U A R T E R _ N U M B E R >------------------------------------------ returns a number according to the sequence of quarters in a year: 33 for first quarter, etc. Capitalization and spelling must be correct. If not a valid quarter, returns 0. 33-36 = Quarter 1, Quarter 2, Quarter 3, Quarter 4 (3 months each) returns 0 when <param> is not |date= Quarter numbering is defined by Extended Date/Time Format (EDTF) specification (https://www.loc.gov/standards/datetime/) which became part of ISO 8601 in 2019. See '§Sub-year groupings'. The standard defines various divisions using numbers 21-41. cs1|2 only supports generic seasons and quarters. These additional divisions not currently supported: 37-39 = Quadrimester 1, Quadrimester 2, Quadrimester 3 (4 months each) 40-41 = Semestral 1, Semestral-2 (6 months each) ]] local function get_quarter_number (quarter, param) if 'date' ~= param then return 0; -- quarter dates only supported by |date= end quarter = mw.ustring.gsub (quarter, ' +', ' '); -- special case replace multiple space chars with a single space char return cfg.date_names['local'].quarter[quarter] or -- look for local names first cfg.date_names['en'].quarter[quarter] or -- failing that, look for English names 0; -- not a recognized quarter name end --[[--------------------------< G E T _ P R O P E R _ N A M E _ N U M B E R >---------------------------------- returns a non-zero number if date contains a recognized proper-name. Capitalization and spelling must be correct. returns 0 when <param> is not |date= ]] local function get_proper_name_number (name, param) if 'date' ~= param then return 0; -- proper-name dates only supported by |date= end return cfg.date_names['local'].named[name] or -- look for local names dates first cfg.date_names['en'].named[name] or -- failing that, look for English names 0; -- not a recognized named date end --[[--------------------------< G E T _ E L E M E N T _ N U M B E R <------------------------------------------ returns true if month or season or quarter or proper name is valid (properly spelled, capitalized, abbreviated) ]] local function get_element_number (element, param) local num; local funcs = {get_month_number, get_season_number, get_quarter_number, get_proper_name_number}; -- list of functions to execute in order for _, func in ipairs (funcs) do -- spin through the function list num = func (element, param); -- call the function and get the returned number if 0 ~= num then -- non-zero when valid month season quarter return num; -- return that number end end return nil; -- not valid end --[[--------------------------< I S _ V A L I D _ Y E A R >---------------------------------------------------- Function gets current year from the server and compares it to year from a citation parameter. Years more than one year in the future are not acceptable. ]] local function is_valid_year (year) if not is_set(year_limit) then year_limit = tonumber(os.date("%Y"))+1; -- global variable so we only have to fetch it once end year = tonumber (year) or lang_object:parseFormattedNumber (year); -- convert to numbers for the comparison; return year and (year <= year_limit) or false; end --[[--------------------------< I S _ V A L I D _ D A T E >---------------------------------------------------- Returns true if day is less than or equal to the number of days in month and year is no farther into the future than next year; else returns false. Assumes Julian calendar prior to year 1582 and Gregorian calendar thereafter. Accounts for Julian calendar leap years before 1582 and Gregorian leap years after 1582. Where the two calendars overlap (1582 to approximately 1923) dates are assumed to be Gregorian. ]] local function is_valid_date (year, month, day) local days_in_month = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; local month_length; if not is_valid_year(year) then -- no farther into the future than next year return false; end month = tonumber(month); -- required for YYYY-MM-DD dates if (2 == month) then -- if February month_length = 28; -- then 28 days unless if 1582 > tonumber(year) then -- Julian calendar if 0 == (year%4) then -- is a leap year? month_length = 29; -- if leap year then 29 days in February end else -- Gregorian calendar if (0 == (year%4) and (0 ~= (year%100) or 0 == (year%400))) then -- is a leap year? month_length = 29; -- if leap year then 29 days in February end end else month_length = days_in_month[month]; end if tonumber (day) > month_length then return false; end return true; end --[[--------------------------< I S _ V A L I D _ M O N T H _ R A N G E _ S T Y L E >-------------------------- Months in a range are expected to have the same style: Jan–Mar or October–December but not February–Mar or Jul–August. There is a special test for May because it can be either short or long form. Returns true when style for both months is the same ]] local function is_valid_month_range_style (month1, month2) local len1 = month1:len(); local len2 = month2:len(); if len1 == len2 then return true; -- both months are short form so return true elseif 'May' == month1 or 'May'== month2 then -- ToDo: I18N return true; -- both months are long form so return true elseif 3 == len1 or 3 == len2 then return false; -- months are mixed form so return false else return true; -- both months are long form so return true end end --[[--------------------------< I S _ V A L I D _ M O N T H _ S E A S O N _ R A N G E >------------------------ Check a pair of months or seasons to see if both are valid members of a month or season pair. Month pairs are expected to be left to right, earliest to latest in time. All season ranges are accepted as valid because there are publishers out there who have published a Summer–Spring YYYY issue, hence treat as ok ]] local function is_valid_month_season_range(range_start, range_end, param) local range_start_number = get_month_number (range_start); local range_end_number; if 0 == range_start_number then -- is this a month range? range_start_number = get_season_number (range_start, param); -- not a month; is it a season? get start season number range_end_number = get_season_number (range_end, param); -- get end season number if (0 ~= range_start_number) and (0 ~= range_end_number) and (range_start_number ~= range_end_number) then return true; -- any season pairing is accepted except when both are the same end return false; -- range_start and/or range_end is not a season end -- here when range_start is a month range_end_number = get_month_number (range_end); -- get end month number if range_start_number < range_end_number then -- range_start is a month; does range_start precede range_end? if is_valid_month_range_style (range_start, range_end) then -- do months have the same style? return true; -- proper order and same style end end return false; -- range_start month number is greater than or equal to range end number; or range end isn't a month end --[[--------------------------< M A K E _ C O I N S _ D A T E >------------------------------------------------ This function receives a table of date parts for one or two dates and an empty table reference declared in Module:Citation/CS1. The function is called only for |date= parameters and only if the |date=<value> is determined to be a valid date format. The question of what to do with invalid date formats is not answered here. The date parts in the input table are converted to an ISO 8601 conforming date string: single whole dates: yyyy-mm-dd month and year dates: yyyy-mm year dates: yyyy ranges: yyyy-mm-dd/yyyy-mm-dd yyyy-mm/yyyy-mm yyyy/yyyy Dates in the Julian calendar are reduced to year or year/year so that we don't have to do calendar conversion from Julian to Proleptic Gregorian. The input table has: year, year2 – always present; if before 1582, ignore months and days if present month, month2 – 0 if not provided, 1-12 for months, 21-24 for seasons; 99 Christmas day, day2 – 0 if not provided, 1-31 for days the output table receives: rftdate: an ISO 8601 formatted date rftchron: a free-form version of the date, usually without year which is in rftdate (season ranges and proper-name dates) rftssn: one of four season keywords: winter, spring, summer, fall (lowercase) rftquarter: one of four values: 1, 2, 3, 4 ]] local function make_COinS_date (input, tCOinS_date) local date; -- one date or first date in a range local date2 = ''; -- end of range date -- start temporary Julian / Gregorian calendar uncertainty detection local year = tonumber(input.year); -- this temporary code to determine the extent of sources dated to the Julian/Gregorian local month = tonumber(input.month); -- interstice 1 October 1582 – 1 January 1926 local day = tonumber (input.day); if (0 ~= day) and -- day must have a value for this to be a whole date (((1582 == year) and (10 <= month) and (12 >= month)) or -- any whole 1582 date from 1 October to 31 December or ((1926 == year) and (1 == month) and (1 == input.day)) or -- 1 January 1926 or ((1582 < year) and (1925 >= year))) then -- any date 1 January 1583 – 31 December 1925 tCOinS_date.inter_cal_cat = true; -- set category flag true end -- end temporary Julian / Gregorian calendar uncertainty detection if 1582 > tonumber(input.year) or 20 < tonumber(input.month) then -- Julian calendar or season so &rft.date gets year only date = input.year; if 0 ~= input.year2 and input.year ~= input.year2 then -- if a range, only the second year portion when not the same as range start year date = string.format ('%.4d/%.4d', tonumber(input.year), tonumber(input.year2)) -- assemble the date range end if 20 < tonumber(input.month) then -- if season or proper-name date local season = {[24] = 'winter', [21] = 'spring', [22] = 'summer', [23] = 'fall', [33] = '1', [34] = '2', [35] = '3', [36] = '4', [98] = 'Easter', [99] = 'Christmas'}; -- seasons lowercase, no autumn; proper-names use title case if 0 == input.month2 then -- single season date if 40 < tonumber(input.month) then tCOinS_date.rftchron = season[input.month]; -- proper-name dates elseif 30 < tonumber(input.month) then tCOinS_date.rftquarter = season[input.month]; -- quarters else tCOinS_date.rftssn = season[input.month]; -- seasons end else -- season range with a second season specified if input.year ~= input.year2 then -- season year – season year range or season year–year tCOinS_date.rftssn = season[input.month]; -- start of range season; keep this? if 0~= input.month2 then tCOinS_date.rftchron = string.format ('%s %s – %s %s', season[input.month], input.year, season[input.month2], input.year2); end else -- season–season year range tCOinS_date.rftssn = season[input.month]; -- start of range season; keep this? tCOinS_date.rftchron = season[input.month] .. '–' .. season[input.month2]; -- season–season year range end end end tCOinS_date.rftdate = date; return; -- done end if 0 ~= input.day then date = string.format ('%s-%.2d-%.2d', input.year, tonumber(input.month), tonumber(input.day)); -- whole date elseif 0 ~= input.month then date = string.format ('%s-%.2d', input.year, tonumber(input.month)); -- year and month else date = string.format ('%s', input.year); -- just year end if 0 ~= input.year2 then if 0 ~= input.day2 then date2 = string.format ('/%s-%.2d-%.2d', input.year2, tonumber(input.month2), tonumber(input.day2)); -- whole date elseif 0 ~= input.month2 then date2 = string.format ('/%s-%.2d', input.year2, tonumber(input.month2)); -- year and month else date2 = string.format ('/%s', input.year2); -- just year end end tCOinS_date.rftdate = date .. date2; -- date2 has the '/' separator return; end --[[--------------------------< P A T T E R N S >-------------------------------------------------------------- this is the list of patterns for date formats that this module recognizes. Approximately the first half of these patterns represent formats that might be reformatted into another format. Those that might be reformatted have 'indicator' letters that identify the content of the matching capture: 'd' (day), 'm' (month), 'a' (anchor year), 'y' (year); second day, month, year have a '2' suffix. These patterns are used for both date validation and for reformatting. This table should not be moved to ~/Configuration because changes to this table require changes to check_date() and to reformatter() and reformat_date() ]] local patterns = { -- year-initial numerical year-month-day ['ymd'] = {'^(%d%d%d%d)%-(%d%d)%-(%d%d)$', 'y', 'm', 'd'}, -- month-initial: month day, year ['Mdy'] = {'^(%D-) +([1-9]%d?), +((%d%d%d%d?)%a?)$', 'm', 'd', 'a', 'y'}, -- month-initial day range: month day–day, year; days are separated by endash ['Md-dy'] = {'^(%D-) +([1-9]%d?)[%-–]([1-9]%d?), +((%d%d%d%d)%a?)$', 'm', 'd', 'd2', 'a', 'y'}, -- day-initial: day month year ['dMy'] = {'^([1-9]%d?) +(%D-) +((%d%d%d%d?)%a?)$', 'd', 'm', 'a', 'y'}, -- year-initial: year month day; day: 1 or 2 two digits, leading zero allowed; not supported at en.wiki -- ['yMd'] = {'^((%d%d%d%d?)%a?) +(%D-) +(%d%d?)$', 'a', 'y', 'm', 'd'}, -- day-range-initial: day–day month year; days are separated by endash ['d-dMy'] = {'^([1-9]%d?)[%-–]([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'd2', 'm', 'a', 'y'}, -- day initial month-day-range: day month - day month year; uses spaced endash ['dM-dMy'] = {'^([1-9]%d?) +(%D-) +[%-–] +([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'm', 'd2', 'm2', 'a', 'y'}, -- month initial month-day-range: month day – month day, year; uses spaced endash ['Md-Mdy'] = {'^(%D-) +([1-9]%d?) +[%-–] +(%D-) +([1-9]%d?), +((%d%d%d%d)%a?)$','m', 'd', 'm2', 'd2', 'a', 'y'}, -- day initial month-day-year-range: day month year - day month year; uses spaced endash ['dMy-dMy'] = {'^([1-9]%d?) +(%D-) +(%d%d%d%d) +[%-–] +([1-9]%d?) +(%D-) +((%d%d%d%d)%a?)$', 'd', 'm', 'y', 'd2', 'm2', 'a', 'y2'}, -- month initial month-day-year-range: month day, year – month day, year; uses spaced endash ['Mdy-Mdy'] = {'^(%D-) +([1-9]%d?), +(%d%d%d%d) +[%-–] +(%D-) +([1-9]%d?), +((%d%d%d%d)%a?)$', 'm', 'd', 'y', 'm2', 'd2', 'a', 'y2'}, -- these date formats cannot be converted, per se, but month name can be rendered short or long -- month/season year - month/season year; separated by spaced endash ['My-My'] = {'^(%D-) +(%d%d%d%d) +[%-–] +(%D-) +((%d%d%d%d)%a?)$', 'm', 'y', 'm2', 'a', 'y2'}, -- month/season range year; months separated by endash ['M-My'] = {'^(%D-)[%-–](%D-) +((%d%d%d%d)%a?)$', 'm', 'm2', 'a', 'y'}, -- month/season year or proper-name year; quarter year when First Quarter YYYY etc. ['My'] = {'^([^%d–]-) +((%d%d%d%d)%a?)$', 'm', 'a', 'y'}, -- this way because endash is a member of %D; %D- will match January–March 2019 when it shouldn't -- these date formats cannot be converted ['Sy4-y2'] = {'^(%D-) +((%d%d)%d%d)[%-–]((%d%d)%a?)$'}, -- special case Winter/Summer year-year (YYYY-YY); year separated with unspaced endash ['Sy-y'] = {'^(%D-) +(%d%d%d%d)[%-–]((%d%d%d%d)%a?)$'}, -- special case Winter/Summer year-year; year separated with unspaced endash ['y-y'] = {'^(%d%d%d%d?)[%-–]((%d%d%d%d?)%a?)$'}, -- year range: YYY-YYY or YYY-YYYY or YYYY–YYYY; separated by unspaced endash; 100-9999 ['y4-y2'] = {'^((%d%d)%d%d)[%-–]((%d%d)%a?)$'}, -- year range: YYYY–YY; separated by unspaced endash ['y'] = {'^((%d%d%d%d?)%a?)$'}, -- year; here accept either YYY or YYYY } --[[--------------------------< C H E C K _ D A T E >---------------------------------------------------------- Check date format to see that it is one of the formats approved by WP:DATESNO or WP:DATERANGE. Exception: only allowed range separator is endash. Additionally, check the date to see that it is a real date: no 31 in 30-day months; no 29 February when not a leap year. Months, both long-form and three character abbreviations, and seasons must be spelled correctly. Future years beyond next year are not allowed. If the date fails the format tests, this function returns false and does not return values for anchor_year and COinS_date. When this happens, the date parameter is (DEBUG: not?) used in the COinS metadata and the CITEREF identifier gets its year from the year parameter if present otherwise CITEREF does not get a date value. Inputs: date_string - date string from date-holding parameters (date, year, publication-date, access-date, pmc-embargo-date, archive-date, lay-date) Returns: false if date string is not a real date; else true, anchor_year, COinS_date anchor_year can be used in CITEREF anchors COinS_date is ISO 8601 format date; see make_COInS_date() ]] local function check_date (date_string, param, tCOinS_date) local year; -- assume that year2, months, and days are not used; local year2 = 0; -- second year in a year range local month = 0; local month2 = 0; -- second month in a month range local day = 0; local day2 = 0; -- second day in a day range local anchor_year; local coins_date; if date_string:match (patterns['ymd'][1]) then -- year-initial numerical year month day format year, month, day = date_string:match (patterns['ymd'][1]); if 12 < tonumber(month) or 1 > tonumber(month) or 1582 > tonumber(year) or 0 == tonumber(day) then return false; end -- month or day number not valid or not Gregorian calendar anchor_year = year; elseif mw.ustring.match(date_string, patterns['Mdy'][1]) then -- month-initial: month day, year month, day, anchor_year, year = mw.ustring.match(date_string, patterns['Mdy'][1]); month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months elseif mw.ustring.match(date_string, patterns['Md-dy'][1]) then -- month-initial day range: month day–day, year; days are separated by endash month, day, day2, anchor_year, year = mw.ustring.match(date_string, patterns['Md-dy'][1]); if tonumber(day) >= tonumber(day2) then return false; end -- date range order is left to right: earlier to later; dates may not be the same; month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months month2=month; -- for metadata year2 = year; elseif mw.ustring.match(date_string, patterns['dMy'][1]) then -- day-initial: day month year day, month, anchor_year, year = mw.ustring.match(date_string, patterns['dMy'][1]); month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months --[[ NOT supported at en.wiki elseif mw.ustring.match(date_string, patterns['yMd'][1]) then -- year-initial: year month day; day: 1 or 2 two digits, leading zero allowed anchor_year, year, month, day = mw.ustring.match(date_string, patterns['yMd'][1]); month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months -- end NOT supported at en.wiki ]] elseif mw.ustring.match(date_string, patterns['d-dMy'][1]) then -- day-range-initial: day–day month year; days are separated by endash day, day2, month, anchor_year, year = mw.ustring.match(date_string, patterns['d-dMy'][1]); if tonumber(day) >= tonumber(day2) then return false; end -- date range order is left to right: earlier to later; dates may not be the same; month = get_month_number (month); if 0 == month then return false; end -- return false if month text isn't one of the twelve months month2 = month; -- for metadata year2 = year; elseif mw.ustring.match(date_string, patterns['dM-dMy'][1]) then -- day initial month-day-range: day month - day month year; uses spaced endash day, month, day2, month2, anchor_year, year = mw.ustring.match(date_string, patterns['dM-dMy'][1]); if (not is_valid_month_season_range(month, month2)) or not is_valid_year(year) then return false; end -- date range order is left to right: earlier to later; month = get_month_number (month); -- for metadata month2 = get_month_number (month2); year2 = year; elseif mw.ustring.match(date_string, patterns['Md-Mdy'][1]) then -- month initial month-day-range: month day – month day, year; uses spaced endash month, day, month2, day2, anchor_year, year = mw.ustring.match(date_string, patterns['Md-Mdy'][1]); if (not is_valid_month_season_range(month, month2, param)) or not is_valid_year(year) then return false; end month = get_month_number (month); -- for metadata month2 = get_month_number (month2); year2 = year; elseif mw.ustring.match(date_string, patterns['dMy-dMy'][1]) then -- day initial month-day-year-range: day month year - day month year; uses spaced endash day, month, year, day2, month2, anchor_year, year2 = mw.ustring.match(date_string, patterns['dMy-dMy'][1]); if tonumber(year2) <= tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) or not is_valid_month_range_style(month, month2) then return false; end -- year2 no more than one year in the future; months same style month = get_month_number (month); -- for metadata month2 = get_month_number (month2); if 0 == month or 0 == month2 then return false; end -- both must be valid elseif mw.ustring.match(date_string, patterns['Mdy-Mdy'][1]) then -- month initial month-day-year-range: month day, year – month day, year; uses spaced endash month, day, year, month2, day2, anchor_year, year2 = mw.ustring.match(date_string, patterns['Mdy-Mdy'][1]); if tonumber(year2) <= tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) or not is_valid_month_range_style(month, month2) then return false; end -- year2 no more than one year in the future; months same style month = get_month_number (month); -- for metadata month2 = get_month_number(month2); if 0 == month or 0 == month2 then return false; end -- both must be valid elseif mw.ustring.match(date_string, patterns['Sy4-y2'][1]) then -- special case Winter/Summer year-year (YYYY-YY); year separated with unspaced endash local century; month, year, century, anchor_year, year2 = mw.ustring.match(date_string, patterns['Sy4-y2'][1]); if 'Winter' ~= month and 'Summer' ~= month then return false end; -- 'month' can only be Winter or Summer anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years year2 = century..year2; -- add the century to year2 for comparisons if 1 ~= tonumber(year2) - tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) then return false; end -- no year farther in the future than next year month = get_season_number(month, param); elseif mw.ustring.match(date_string, patterns['Sy-y'][1]) then -- special case Winter/Summer year-year; year separated with unspaced endash month, year, anchor_year, year2 = mw.ustring.match(date_string, patterns['Sy-y'][1]); if 'Winter' ~= month and 'Summer' ~= month then return false end; -- 'month' can only be Winter or Summer anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years if 1 ~= tonumber(year2) - tonumber(year) then return false; end -- must be sequential years, left to right, earlier to later if not is_valid_year(year2) then return false; end -- no year farther in the future than next year month = get_season_number (month, param); -- for metadata elseif mw.ustring.match(date_string, patterns['My-My'][1]) then -- month/season year - month/season year; separated by spaced endash month, year, month2, anchor_year, year2 = mw.ustring.match(date_string, patterns['My-My'][1]); anchor_year = year .. '–' .. anchor_year; -- assemble anchor_year from both years if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same if not is_valid_year(year2) then return false; end -- no year farther in the future than next year if 0 ~= get_month_number(month) and 0 ~= get_month_number(month2) and is_valid_month_range_style(month, month2) then -- both must be month year, same month style month = get_month_number(month); month2 = get_month_number(month2); elseif 0 ~= get_season_number(month, param) and 0 ~= get_season_number(month2, param) then -- both must be season year, not mixed month = get_season_number(month, param); month2 = get_season_number(month2, param); else return false; end elseif mw.ustring.match(date_string, patterns['M-My'][1]) then -- month/season range year; months separated by endash month, month2, anchor_year, year = mw.ustring.match(date_string, patterns['M-My'][1]); if (not is_valid_month_season_range(month, month2, param)) or (not is_valid_year(year)) then return false; end if 0 ~= get_month_number(month) then -- determined to be a valid range so just check this one to know if month or season month = get_month_number(month); month2 = get_month_number(month2); if 0 == month or 0 == month2 then return false; end else month = get_season_number(month, param); month2 = get_season_number(month2, param); end year2 = year; elseif mw.ustring.match(date_string, patterns['My'][1]) then -- month/season/quarter/proper-name year month, anchor_year, year = mw.ustring.match(date_string, patterns['My'][1]); if not is_valid_year(year) then return false; end month = get_element_number(month, param); -- get month season quarter proper-name number or nil if not month then return false; end -- not valid whatever it is elseif mw.ustring.match(date_string, patterns['y-y'][1]) then -- Year range: YYY-YYY or YYY-YYYY or YYYY–YYYY; separated by unspaced endash; 100-9999 year, anchor_year, year2 = mw.ustring.match(date_string, patterns['y-y'][1]); anchor_year = year .. '–' .. anchor_year; -- assemble anchor year from both years if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same if not is_valid_year(year2) then return false; end -- no year farther in the future than next year elseif mw.ustring.match(date_string, patterns['y4-y2'][1]) then -- Year range: YYYY–YY; separated by unspaced endash local century; year, century, anchor_year, year2 = mw.ustring.match(date_string, patterns['y4-y2'][1]); anchor_year = year .. '–' .. anchor_year; -- assemble anchor year from both years if in_array (param, {'date', 'publication-date', 'year'}) then add_prop_cat ('year_range_abbreviated'); end if 13 > tonumber(year2) then return false; end -- don't allow 2003-05 which might be May 2003 year2 = century .. year2; -- add the century to year2 for comparisons if tonumber(year) >= tonumber(year2) then return false; end -- left to right, earlier to later, not the same if not is_valid_year(year2) then return false; end -- no year farther in the future than next year elseif mw.ustring.match(date_string, patterns['y'][1]) then -- year; here accept either YYY or YYYY anchor_year, year = mw.ustring.match(date_string, patterns['y'][1]); if false == is_valid_year(year) then return false; end else return false; -- date format not one of the MOS:DATE approved formats end if 'access-date' == param then -- test accessdate here because we have numerical date parts if 0 ~= year and 0 ~= month and 0 ~= day and -- all parts of a single date required 0 == year2 and 0 == month2 and 0 == day2 then -- none of these; accessdate must not be a range if not is_valid_accessdate(year .. '-' .. month .. '-' .. day) then return false; -- return false when accessdate out of bounds end else return false; -- return false when accessdate is a range of two dates end end local result=true; -- check whole dates for validity; assume true because not all dates will go through this test if 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 == month2 and 0 == day2 then -- YMD (simple whole date) result = is_valid_date(year, month, day); elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 == month2 and 0 ~= day2 then -- YMD-d (day range) result = is_valid_date(year, month, day); result = result and is_valid_date(year, month, day2); elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 == year2 and 0 ~= month2 and 0 ~= day2 then -- YMD-md (day month range) result = is_valid_date(year, month, day); result = result and is_valid_date(year, month2, day2); elseif 0 ~= year and 0 ~= month and 0 ~= day and 0 ~= year2 and 0 ~= month2 and 0 ~= day2 then -- YMD-ymd (day month year range) result = is_valid_date(year, month, day); result = result and is_valid_date(year2, month2, day2); end if false == result then return false; end if nil ~= tCOinS_date then -- this table only passed into this function when testing |date= parameter values make_COinS_date ({year = year, month = month, day = day, year2 = year2, month2 = month2, day2 = day2}, tCOinS_date); -- make an ISO 8601 date string for COinS end return true, anchor_year; -- format is good and date string represents a real date end --[[--------------------------< D A T E S >-------------------------------------------------------------------- Cycle the date-holding parameters in passed table date_parameters_list through check_date() to check compliance with MOS:DATE. For all valid dates, check_date() returns true. The |date= parameter test is unique, it is the only date holding parameter from which values for anchor_year (used in CITEREF identifiers) and COinS_date (used in the COinS metadata) are derived. The |date= parameter is the only date-holding parameter that is allowed to contain the no-date keywords "n.d." or "nd" (without quotes). Unlike most error messages created in this module, only one error message is created by this function. Because all of the date holding parameters are processed serially, parameters with errors are added to the <error_list> sequence table as the dates are tested. ]] local function dates(date_parameters_list, tCOinS_date, error_list) local anchor_year; -- will return as nil if the date being tested is not |date= local COinS_date; -- will return as nil if the date being tested is not |date= local embargo_date; -- if embargo date is a good dmy, mdy, ymd date then holds original value else reset to 9999 local good_date = false; for k, v in pairs(date_parameters_list) do -- for each date-holding parameter in the list if is_set(v.val) then -- if the parameter has a value v.val = mw.ustring.gsub(v.val, '%d', cfg.date_names.local_digits); -- translate 'local' digits to Western 0-9 if v.val:match("^c%. [1-9]%d%d%d?%a?$") then -- special case for c. year or with or without CITEREF disambiguator - only |date= and |year= local year = v.val:match("c%. ([1-9]%d%d%d?)%a?"); -- get the year portion so it can be tested if 'date' == k then anchor_year, COinS_date = v.val:match("((c%. [1-9]%d%d%d?)%a?)"); -- anchor year and COinS_date only from |date= parameter good_date = is_valid_year(year); elseif 'year' == k then good_date = is_valid_year(year); end elseif 'date' == k then -- if the parameter is |date= if v.val:match("^n%.d%.%a?$") then -- ToDo: I18N -- if |date=n.d. with or without a CITEREF disambiguator good_date, anchor_year, COinS_date = true, v.val:match("((n%.d%.)%a?)"); -- ToDo: I18N -- "n.d."; no error when date parameter is set to no date elseif v.val:match("^nd%a?$") then -- ToDo: I18N -- if |date=nd with or without a CITEREF disambiguator good_date, anchor_year, COinS_date = true, v.val:match("((nd)%a?)"); -- ToDo: I18N -- "nd"; no error when date parameter is set to no date else good_date, anchor_year, COinS_date = check_date (v.val, k, tCOinS_date); -- go test the date end elseif 'year' == k then -- if the parameter is |year= it should hold only a year value if v.val:match("^[1-9]%d%d%d?%a?$") then -- if |year = 3 or 4 digits only with or without a CITEREF disambiguator good_date, anchor_year, COinS_date = true, v.val:match("((%d+)%a?)"); end elseif 'pmc-embargo-date' == k then -- if the parameter is |pmc-embargo-date= good_date = check_date (v.val, k); -- go test the date if true == good_date then -- if the date is a valid date good_date, embargo_date = is_valid_embargo_date (v.val); -- is |pmc-embargo-date= date a single dmy, mdy, or ymd formatted date? yes: returns embargo; no: returns 9999 end else -- any other date-holding parameter good_date = check_date (v.val, k); -- go test the date end if false == good_date then -- assemble one error message so we don't add the tracking category multiple times table.insert (error_list, wrap_style ('parameter', v.name)); -- make parameter name suitable for error message list end end end return anchor_year, embargo_date; -- and done end --[[--------------------------< Y E A R _ D A T E _ C H E C K >------------------------------------------------ Compare the value provided in |year= with the year value(s) provided in |date=. This function returns a numeric value: 0 - year value does not match the year value in date 1 - (default) year value matches the year value in date or one of the year values when date contains two years 2 - year value matches the year value in date when date is in the form YYYY-MM-DD and year is disambiguated (|year=YYYYx) ]] local function year_date_check (year_string, date_string) local year; local date1; local date2; local result = 1; -- result of the test; assume that the test passes year = year_string:match ('(%d%d%d%d?)'); if date_string:match ('%d%d%d%d%-%d%d%-%d%d') and year_string:match ('%d%d%d%d%a') then --special case where both date and year are required YYYY-MM-DD and YYYYx date1 = date_string:match ('(%d%d%d%d)'); year = year_string:match ('(%d%d%d%d)'); if year ~= date1 then result = 0; -- years don't match else result = 2; -- years match; but because disambiguated, don't add to maint cat end elseif date_string:match ("%d%d%d%d?.-%d%d%d%d?") then -- any of the standard range formats of date with two three- or four-digit years date1, date2 = date_string:match ("(%d%d%d%d?).-(%d%d%d%d?)"); if year ~= date1 and year ~= date2 then result = 0; end elseif mw.ustring.match(date_string, "%d%d%d%d[%-–]%d%d") then -- YYYY-YY date ranges local century; date1, century, date2 = mw.ustring.match(date_string, "((%d%d)%d%d)[%-–]+(%d%d)"); date2 = century..date2; -- convert YY to YYYY if year ~= date1 and year ~= date2 then result = 0; end elseif date_string:match ("%d%d%d%d?") then -- any of the standard formats of date with one year date1 = date_string:match ("(%d%d%d%d?)"); if year ~= date1 then result = 0; end else result = 0; -- no recognizable year in date end return result; end --[[--------------------------< R E F O R M A T T E R >-------------------------------------------------------- reformat 'date' into new format specified by format_param if pattern_idx (the current format of 'date') can be reformatted. Does the grunt work for reformat_dates(). The table re_formats maps pattern_idx (current format) and format_param (desired format) to a table that holds: format string used by string.format() identifier letters ('d', 'm', 'y', 'd2', 'm2', 'y2') that serve as indexes into a table t{} that holds captures from mw.ustring.match() for the various date parts specified by patterns[pattern_idx][1] Items in patterns{} have the general form: ['ymd'] = {'^(%d%d%d%d)%-(%d%d)%-(%d%d)$', 'y', 'm', 'd'}, where: ['ymd'] is pattern_idx patterns['ymd'][1] is the match pattern with captures for mw.ustring.match() patterns['ymd'][2] is an indicator letter identifying the content of the first capture patterns['ymd'][3] ... the second capture etc. when a pattern matches a date, the captures are loaded into table t{} in capture order using the idemtifier characters as indexes into t{} For the above, a ymd date is in t{} as: t.y = first capture (year), t.m = second capture (month), t.d = third capture (day) To reformat, this function is called with the pattern_idx that matches the current format of the date and with format_param set to the desired format. This function loads table t{} as described and then calls string.format() with the format string specified by re_format[pattern_idx][format_param][1] using values taken from t{} according to the capture identifier letters specified by patterns[pattern_idx][format_param][n] where n is 2.. ]] local re_formats = { ['ymd'] = { -- date format is ymd; reformat to: ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy -- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki }, ['Mdy'] = { -- date format is Mdy; reformat to: ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- for long/short reformatting ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy ['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd -- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki }, ['dMy'] = { -- date format is dMy; reformat to: ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- for long/short reformatting ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy ['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd -- ['yMd'] = {'%s %s %s', 'y', 'm', 'd'}, -- |df=yMd; not supported at en.wiki }, ['Md-dy'] = { -- date format is Md-dy; reformat to: ['mdy'] = {'%s %s–%s, %s', 'm', 'd', 'd2', 'y'}, -- for long/short reformatting ['dmy'] = {'%s–%s %s %s', 'd', 'd2', 'm', 'y'}, -- |df=dmy -> d-dMy }, ['d-dMy'] = { -- date format is d-d>y; reformat to: ['dmy'] = {'%s–%s %s %s', 'd', 'd2', 'm', 'y'}, -- for long/short reformatting ['mdy'] = {'%s %s–%s, %s', 'm', 'd', 'd2', 'y'}, -- |df=mdy -> Md-dy }, ['dM-dMy'] = { -- date format is dM-dMy; reformat to: ['dmy'] = {'%s %s – %s %s %s', 'd', 'm', 'd2', 'm2', 'y'}, -- for long/short reformatting ['mdy'] = {'%s %s – %s %s, %s', 'm', 'd', 'm2', 'd2', 'y'}, -- |df=mdy -> Md-Mdy }, ['Md-Mdy'] = { -- date format is Md-Mdy; reformat to: ['mdy'] = {'%s %s – %s %s, %s', 'm', 'd', 'm2', 'd2', 'y'}, -- for long/short reformatting ['dmy'] = {'%s %s – %s %s %s', 'd', 'm', 'd2', 'm2', 'y'}, -- |df=dmy -> dM-dMy }, ['dMy-dMy'] = { -- date format is dMy-dMy; reformat to: ['dmy'] = {'%s %s %s – %s %s %s', 'd', 'm', 'y', 'd2', 'm2', 'y2'}, -- for long/short reformatting ['mdy'] = {'%s %s, %s – %s %s, %s', 'm', 'd', 'y', 'm2', 'd2', 'y2'}, -- |df=mdy -> Mdy-Mdy }, ['Mdy-Mdy'] = { -- date format is Mdy-Mdy; reformat to: ['mdy'] = {'%s %s, %s – %s %s, %s', 'm', 'd', 'y', 'm2', 'd2', 'y2'}, -- for long/short reformatting ['dmy'] = {'%s %s %s – %s %s %s', 'd', 'm', 'y', 'd2', 'm2', 'y2'}, -- |df=dmy -> dMy-dMy }, ['My-My'] = { -- these for long/short reformatting ['any'] = {'%s %s – %s %s', 'm', 'y', 'm2', 'y2'}, -- dmy/mdy agnostic }, ['M-My'] = { -- these for long/short reformatting ['any'] = {'%s–%s %s', 'm', 'm2', 'y'}, -- dmy/mdy agnostic }, ['My'] = { -- these for long/short reformatting ['any'] = {'%s %s', 'm', 'y'}, -- dmy/mdy agnostic }, -- ['yMd'] = { -- not supported at en.wiki -- ['mdy'] = {'%s %s, %s', 'm', 'd', 'y'}, -- |df=mdy -- ['dmy'] = {'%s %s %s', 'd', 'm', 'y'}, -- |df=dmy -- ['ymd'] = {'%s-%s-%s', 'y', 'm', 'd'}, -- |df=ymd -- }, } local function reformatter (date, pattern_idx, format_param, mon_len) if not in_array (pattern_idx, {'ymd', 'Mdy', 'Md-dy', 'dMy', 'yMd', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy', 'My-My', 'M-My', 'My'}) then return; -- not in this set of date format patterns then not a reformattable date end if 'ymd' == format_param and in_array (pattern_idx, {'ymd', 'Md-dy', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy', 'My-My', 'M-My', 'My'}) then return; -- ymd date ranges not supported at en.wiki; no point in reformatting ymd to ymd end if in_array (pattern_idx, {'My', 'M-My', 'My-My'}) then -- these are not dmy/mdy so can't be 'reformatted' into either format_param = 'any'; -- so format-agnostic end -- yMd is not supported at en.wiki -- if yMd is supported at your wiki, uncomment the next line -- if 'yMd' == format_param and in_array (pattern_idx, {'yMd', 'Md-dy', 'd-dMy', 'dM-dMy', 'Md-Mdy', 'dMy-dMy', 'Mdy-Mdy'}) then -- these formats not convertable; yMd not supported at en.wiki -- if yMd is supported at your wiki, remove or comment-out the next line if 'yMd' == format_param then -- yMd not supported at en.wiki return; -- not a reformattable date end local c1, c2, c3, c4, c5, c6, c7; -- these hold the captures specified in patterns[pattern_idx][1] c1, c2, c3, c4, c5, c6, c7 = mw.ustring.match (date, patterns[pattern_idx][1]); -- get the captures local t = { -- table that holds k/v pairs of date parts from the captures and patterns[pattern_idx][2..] [patterns[pattern_idx][2]] = c1; -- at minimum there is always one capture with a matching indicator letter [patterns[pattern_idx][3] or 'x'] = c2; -- patterns can have a variable number of captures; each capture requires an indicator letter; [patterns[pattern_idx][4] or 'x'] = c3; -- where there is no capture, there is no indicator letter so n in patterns[pattern_idx][n] will be nil; [patterns[pattern_idx][5] or 'x'] = c4; -- the 'x' here spoofs an indicator letter to prevent 'table index is nil' error [patterns[pattern_idx][6] or 'x'] = c5; [patterns[pattern_idx][7] or 'x'] = c6; [patterns[pattern_idx][8] or 'x'] = c7; }; if t.a then -- if this date has an anchor year capture t.y = t.a; -- use the anchor year capture when reassembling the date end if tonumber(t.m) then -- if raw month is a number (converting from ymd) if 's' == mon_len then -- if we are to use abbreviated month names t.m = cfg.date_names['inv_local_s'][tonumber(t.m)]; -- convert it to a month name else t.m = cfg.date_names['inv_local_l'][tonumber(t.m)]; -- convert it to a month name end t.d = t.d:gsub ('0(%d)', '%1'); -- strip leading '0' from day if present elseif 'ymd' == format_param then -- when converting to ymd if 1582 > tonumber(t.y) then -- ymd format dates not allowed before 1582 return; end t.m = string.format ('%02d', get_month_number (t.m)); -- make sure that month and day are two digits t.d = string.format ('%02d', t.d); elseif mon_len then -- if mon_len is set to either 'short' or 'long' for _, mon in ipairs ({'m', 'm2'}) do -- because there can be two month names, check both if t[mon] then t[mon] = get_month_number (t[mon]); -- get the month number for this month (is length agnostic) if 0 == t[mon] then return; end -- seasons and named dates can't be converted t[mon] = (('s' == mon_len) and cfg.date_names['inv_local_s'][t[mon]]) or cfg.date_names['inv_local_l'][t[mon]]; -- fetch month name according to length end end end local new_date = string.format (re_formats[pattern_idx][format_param][1], -- format string t[re_formats[pattern_idx][format_param][2]], -- named captures from t{} t[re_formats[pattern_idx][format_param][3]], t[re_formats[pattern_idx][format_param][4]], t[re_formats[pattern_idx][format_param][5]], t[re_formats[pattern_idx][format_param][6]], t[re_formats[pattern_idx][format_param][7]], t[re_formats[pattern_idx][format_param][8]] ); return new_date; end --[[-------------------------< R E F O R M A T _ D A T E S >-------------------------------------------------- Reformats existing dates into the format specified by format. format is one of several manual keywords: dmy, dmy-all, mdy, mdy-all, ymd, ymd-all. The -all version includes access- and archive-dates; otherwise these dates are not reformatted. This function allows automatic date formatting. In ~/Configuration, the article source is searched for one of the {{use xxx dates}} templates. If found, xxx becomes the global date format as xxx-all. If |cs1-dates= in {{use xxx dates}} has legitimate value then that value determines how cs1|2 dates will be rendered. Legitimate values for |cs1-dates= are: l - all dates are rendered with long month names ls - publication dates use long month names; access-/archive-dates use abbreviated month names ly - publication dates use long month names; access-/archive-dates rendered in ymd format s - all dates are rendered with abbreviated (short) month names sy - publication dates use abbreviated month names; access-/archive-dates rendered in ymd format y - all dates are rendered in ymd format the format argument for automatic date formatting will be the format specified by {{use xxx dates}} with the value supplied by |cs1-dates so one of: xxx-l, xxx-ls, xxx-ly, xxx-s, xxx-sy, xxx-y, or simply xxx (|cs1-dates= empty, omitted, or invalid) where xxx shall be either of dmy or mdy. dates are extracted from date_parameters_list, reformatted (if appropriate), and then written back into the list in the new format. Dates in date_parameters_list are presumed here to be valid (no errors). This function returns true when a date has been reformatted, false else. Actual reformatting is done by reformatter(). ]] local function reformat_dates (date_parameters_list, format) local all = false; -- set to false to skip access- and archive-dates local len_p = 'l'; -- default publication date length shall be long local len_a = 'l'; -- default access-/archive-date length shall be long local result = false; local new_date; if format:match('%a+%-all') then -- manual df keyword; auto df keyword when length not specified in {{use xxx dates}}; format = format:match('(%a+)%-all'); -- extract the format all = true; -- all dates are long format dates because this keyword doesn't specify length elseif format:match('%a+%-[lsy][sy]?') then -- auto df keywords; internal only all = true; -- auto df applies to all dates; use length specified by capture len_p for all dates format, len_p, len_a = format:match('(%a+)%-([lsy])([sy]?)'); -- extract the format and length keywords if 'y' == len_p then -- because allowed by MOS:DATEUNIFY (sort of) range dates and My dates not reformatted format = 'ymd'; -- override {{use xxx dates}} elseif (not is_set(len_a)) or (len_p == len_a) then -- no access-/archive-date length specified or same length as publication dates then len_a = len_p; -- in case len_a not set end end -- else only publication dates and they are long for param_name, param_val in pairs (date_parameters_list) do -- for each date-holding parameter in the list if is_set (param_val.val) then -- if the parameter has a value if not (not all and in_array (param_name, {'access-date', 'archive-date'})) then -- skip access- or archive-date unless format is xxx-all; yeah, ugly; TODO: find a better way for pattern_idx, pattern in pairs (patterns) do if mw.ustring.match (param_val.val, pattern[1]) then if all and in_array (param_name, {'access-date', 'archive-date'}) then -- if this date is an access- or archive-date new_date = reformatter (param_val.val, pattern_idx, (('y' == len_a) and 'ymd') or format, len_a); -- choose ymd or dmy/mdy according to len_a setting else -- all other dates new_date = reformatter (param_val.val, pattern_idx, format, len_p); end if new_date then -- set when date was reformatted date_parameters_list[param_name].val = new_date; -- update date in date list result = true; -- and announce that changes have been made end end -- if end -- for end -- if end -- if end -- for return result; -- declare boolean result and done end --[[--------------------------< D A T E _ H Y P H E N _ T O _ D A S H >---------------------------------------- Loops through the list of date-holding parameters and converts any hyphen to an ndash. Not called if the cs1|2 template has any date errors. Modifies the date_parameters_list and returns true if hyphens are replaced, else returns false. ]] local function date_hyphen_to_dash (date_parameters_list) local result = false; local n; for param_name, param_val in pairs(date_parameters_list) do -- for each date-holding parameter in the list if is_set (param_val.val) then if not mw.ustring.match (param_val.val, '%d%d%d%d%-%d%d%-%d%d') then -- for those that are not ymd dates (ustring because here digits may not be Western) param_val.val, n = param_val.val:gsub ('%-', '–'); -- replace any hyphen with ndash if 0 ~= n then date_parameters_list[param_name].val = param_val.val; -- update the list result = true; end end end end return result; -- so we know if any hyphens were replaced end --[[-------------------------< D A T E _ N A M E _ X L A T E >------------------------------------------------ Attempts to translate English month names to local-language month names using names supplied by MediaWiki's date parser function. This is simple name-for-name replacement and may not work for all languages. if xlat_dig is true, this function will also translate Western (English) digits to the local language's digits. This will also translate ymd dates. ]] local function date_name_xlate (date_parameters_list, xlt_dig) local xlate; local mode; -- long or short month names local modified = false; local date; for param_name, param_val in pairs(date_parameters_list) do -- for each date-holding parameter in the list if is_set(param_val.val) then -- if the parameter has a value date = param_val.val; for month in mw.ustring.gmatch (date, '%a+') do -- iterate through all dates in the date (single date or date range) if cfg.date_names.en.long[month] then mode = 'F'; -- English name is long so use long local name elseif cfg.date_names.en.short[month] then mode = 'M'; -- English name is short so use short local name else mode = nil; -- not an English month name; could be local language month name or an English season name end if mode then -- might be a season xlate = lang_object:formatDate(mode, '1' .. month); -- translate the month name to this local language date = mw.ustring.gsub (date, month, xlate); -- replace the English with the translation date_parameters_list[param_name].val = date; -- save the translated date modified = true; end end if xlt_dig then -- shall we also translate digits? date = date:gsub ('%d', cfg.date_names.xlate_digits); -- translate digits from Western to 'local digits' date_parameters_list[param_name].val = date; -- save the translated date modified = true; end end end return modified; end --[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >-------------------------------------- Sets local imported functions table to same (live or sandbox) as that used by the other modules. ]] local function set_selected_modules (cfg_table_ptr, utilities_page_ptr) add_prop_cat = utilities_page_ptr.add_prop_cat ; -- import functions from selected Module:Citation/CS1/Utilities module is_set = utilities_page_ptr.is_set; in_array = utilities_page_ptr.in_array; -- set_message = utilities_page_ptr.set_message; wrap_style = utilities_page_ptr.wrap_style; cfg = cfg_table_ptr; -- import tables from selected Module:Citation/CS1/Configuration end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return { -- return exported functions dates = dates, year_date_check = year_date_check, reformat_dates = reformat_dates, date_hyphen_to_dash = date_hyphen_to_dash, date_name_xlate = date_name_xlate, set_selected_modules = set_selected_modules } ds0l4tghd9b1ze47i4ysqzmmocnzkhm Module:Citation/CS1/Identifiers 828 1464 3232 3231 2020-10-11T01:32:08Z Chrisb 1 1 revision imported 3231 Scribunto text/plain --[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- ]] local has_accept_as_written, is_set, in_array, set_message, select_one, -- functions in Module:Citation/CS1/Utilities substitute, make_wikilink; local z; -- table of tables defined in Module:Citation/CS1/Utilities local cfg; -- table of configuration tables that are defined in Module:Citation/CS1/Configuration --[[--------------------------< P A G E S C O P E V A R I A B L E S >-------------------------------------- declare variables here that have page-wide scope that are not brought in from other modules; that are created here and used here ]] local auto_link_urls = {}; -- holds identifier URLs for those identifiers that can auto-link |title= --============================<< H E L P E R F U N C T I O N S >>============================================ --[[--------------------------< W I K I D A T A _ A R T I C L E _ N A M E _ G E T >---------------------------- as an aid to internationalizing identifier-label wikilinks, gets identifier article names from Wikidata. returns :<lang code>:<article title> when <q> has an <article title> for <lang code>; nil else for identifiers that do not have q, returns nil for wikis that do not have mw.wikibase installed, returns nil ]] local function wikidata_article_name_get (q) if not is_set (q) or (q and not mw.wikibase) then -- when no q number or when a q number but mw.wikibase not installed on this wiki return nil; -- abandon end local wd_article; local this_wiki_code = cfg.this_wiki_code; -- Wikipedia subdomain; 'en' for en.wikipedia.org wd_article = mw.wikibase.getSitelink (q, this_wiki_code .. 'wiki'); -- fetch article title from WD; nil when no title available at this wiki if wd_article then wd_article = table.concat ({':', this_wiki_code, ':', wd_article}); -- interwiki-style link without brackets if taken from WD; leading colon required end return wd_article; -- article title from WD; nil else end --[[--------------------------< L I N K _ L A B E L _ M A K E >------------------------------------------------ common function to create identifier link label from handler table or from Wikidata returns the first available of 1. redirect from local wiki's handler table (if enabled) 2. Wikidata (if there is a Wikidata entry for this identifier in the local wiki's language) 3. label specified in the local wiki's handler table ]] local function link_label_make (handler) local wd_article; if not (cfg.use_identifier_redirects and is_set (handler.redirect)) then -- redirect has priority so if enabled and available don't fetch from Wikidata because expensive wd_article = wikidata_article_name_get (handler.q); -- if Wikidata has an article title for this wiki, get it; end return (cfg.use_identifier_redirects and is_set (handler.redirect) and handler.redirect) or wd_article or handler.link; end --[[--------------------------< E X T E R N A L _ L I N K _ I D >---------------------------------------------- Formats a wiki-style external link NB. Wikidata P1630 has a formatter URL with $1 placeholder for the ID which could be worked into our prefix/id/suffix string, either overriding local definitions (auto-update) or as fallback for identifiers without local definitions. But is expensive and could be risky if WD gets vandalized. See Template_talk:Authority_control/Archive_8#Use_Wikidata_as_the_source_for_the_external_link ]] local function external_link_id (options) local url_string = options.id; local ext_link; local this_wiki_code = cfg.this_wiki_code; -- Wikipedia subdomain; 'en' for en.wikipedia.org local wd_article; -- article title from Wikidata if options.encode == true or options.encode == nil then url_string = mw.uri.encode( url_string ); end if options.auto_link and is_set (options.access) then auto_link_urls[options.auto_link] = table.concat ({options.prefix, url_string, options.suffix}); end ext_link = mw.ustring.format ('[%s%s%s %s]', options.prefix, url_string, options.suffix or "", mw.text.nowiki(options.id)); if is_set(options.access) then ext_link = substitute (cfg.presentation['ext-link-access-signal'], {cfg.presentation[options.access].class, cfg.presentation[options.access].title, ext_link}); -- add the free-to-read / paywall lock end return table.concat ({ make_wikilink (link_label_make (options), options.label), -- redirect, Wikidata link, or locally specified link (in that order) options.separator or '&nbsp;', ext_link }); end --[[--------------------------< I N T E R N A L _ L I N K _ I D >---------------------------------------------- Formats a wiki-style internal link ]] local function internal_link_id(options) local id = mw.ustring.gsub (options.id, '%d', cfg.date_names.local_digits); -- translate 'local' digits to Western 0-9 return table.concat ( { make_wikilink (link_label_make (options), options.label), -- wiki-link the identifier label options.separator or '&nbsp;', -- add the separator make_wikilink ( table.concat ( { options.prefix, id, -- translated to Western digits options.suffix or '' }), substitute (cfg.presentation['bdi'], {'', mw.text.nowiki (options.id)}) -- bdi tags to prevent Latin script identifiers from being reversed at RTL language wikis ); -- nowiki because MediaWiki still has magic links for ISBN and the like; TODO: is it really required? }); end --[[--------------------------< I S _ E M B A R G O E D >------------------------------------------------------ Determines if a PMC identifier's online version is embargoed. Compares the date in |pmc-embargo-date= against today's date. If embargo date is in the future, returns the content of |pmc-embargo-date=; otherwise, returns an empty string because the embargo has expired or because |pmc-embargo-date= was not set in this cite. ]] local function is_embargoed (embargo) if is_set (embargo) then local lang = mw.getContentLanguage(); local good1, embargo_date, todays_date; good1, embargo_date = pcall (lang.formatDate, lang, 'U', embargo); todays_date = lang:formatDate ('U'); if good1 then -- if embargo date is a good date if tonumber (embargo_date) >= tonumber (todays_date) then -- is embargo date is in the future? return embargo; -- still embargoed else set_message ('maint_pmc_embargo'); -- embargo has expired; add main cat return ''; -- unset because embargo has expired end end end return ''; -- |pmc-embargo-date= not set return empty string end --[=[-------------------------< I S _ V A L I D _ B I O R X I V _ D A T E >------------------------------------ returns true if: 2019-12-11T00:00Z <= biorxiv_date < today + 2 days The dated form of biorxiv identifier has a start date of 2019-12-11. The Unix timestamp for that date is {{#time:U|2019-12-11}} = 1576022400 biorxiv_date is the date provided in those |biorxiv= parameter values that are dated at time 00:00:00 UTC today is the current date at time 00:00:00 UTC plus 48 hours if today is 2015-01-01T00:00:00 then adding 24 hours gives 2015-01-02T00:00:00 – one second more than today adding 24 hours gives 2015-01-03T00:00:00 – one second more than tomorrow This function does not work if it is fed month names for languages other than English. Wikimedia #time: parser apparently doesn't understand non-English date month names. This function will always return false when the date contains a non-English month name because good1 is false after the call to lang.formatDate(). To get around that call this function with YYYY-MM-DD format dates. ]=] local function is_valid_biorxiv_date (biorxiv_date) local good1, good2; local biorxiv_ts, tomorrow_ts; -- to hold Unix timestamps representing the dates local lang_object = mw.getContentLanguage(); good1, biorxiv_ts = pcall (lang_object.formatDate, lang_object, 'U', biorxiv_date ); -- convert biorxiv_date value to Unix timestamp good2, tomorrow_ts = pcall (lang_object.formatDate, lang_object, 'U', 'today + 2 days' ); -- today midnight + 2 days is one second more than all day tomorrow if good1 and good2 then -- lang.formatDate() returns a timestamp in the local script which tonumber() may not understand biorxiv_ts = tonumber (biorxiv_ts) or lang_object:parseFormattedNumber (biorxiv_ts); -- convert to numbers for the comparison; tomorrow_ts = tonumber (tomorrow_ts) or lang_object:parseFormattedNumber (tomorrow_ts); else return false; -- one or both failed to convert to Unix timestamp end return ((1576022400 <= biorxiv_ts) and (biorxiv_ts < tomorrow_ts)) -- 2012-12-11T00:00Z <= biorxiv_date < tomorrow's date end --[[--------------------------< IS _ V A L I D _ I S X N >----------------------------------------------------- ISBN-10 and ISSN validator code calculates checksum across all ISBN/ISSN digits including the check digit. ISBN-13 is checked in isbn(). If the number is valid the result will be 0. Before calling this function, ISBN/ISSN must be checked for length and stripped of dashes, spaces and other non-ISxN characters. ]] local function is_valid_isxn (isxn_str, len) local temp = 0; isxn_str = { isxn_str:byte(1, len) }; -- make a table of byte values '0' → 0x30 .. '9' → 0x39, 'X' → 0x58 len = len + 1; -- adjust to be a loop counter for i, v in ipairs( isxn_str ) do -- loop through all of the bytes and calculate the checksum if v == string.byte( "X" ) then -- if checkdigit is X (compares the byte value of 'X' which is 0x58) temp = temp + 10*( len - i ); -- it represents 10 decimal else temp = temp + tonumber( string.char(v) )*(len-i); end end return temp % 11 == 0; -- returns true if calculation result is zero end --[[--------------------------< IS _ V A L I D _ I S X N _ 1 3 >----------------------------------------------- ISBN-13 and ISMN validator code calculates checksum across all 13 ISBN/ISMN digits including the check digit. If the number is valid, the result will be 0. Before calling this function, ISBN-13/ISMN must be checked for length and stripped of dashes, spaces and other non-ISxN-13 characters. ]] local function is_valid_isxn_13 (isxn_str) local temp=0; isxn_str = { isxn_str:byte(1, 13) }; -- make a table of byte values '0' → 0x30 .. '9' → 0x39 for i, v in ipairs( isxn_str ) do temp = temp + (3 - 2*(i % 2)) * tonumber( string.char(v) ); -- multiply odd index digits by 1, even index digits by 3 and sum; includes check digit end return temp % 10 == 0; -- sum modulo 10 is zero when ISBN-13/ISMN is correct end --[[--------------------------< N O R M A L I Z E _ L C C N >-------------------------------------------------- LCCN normalization (http://www.loc.gov/marc/lccn-namespace.html#normalization) 1. Remove all blanks. 2. If there is a forward slash (/) in the string, remove it, and remove all characters to the right of the forward slash. 3. If there is a hyphen in the string: a. Remove it. b. Inspect the substring following (to the right of) the (removed) hyphen. Then (and assuming that steps 1 and 2 have been carried out): 1. All these characters should be digits, and there should be six or less. (not done in this function) 2. If the length of the substring is less than 6, left-fill the substring with zeroes until the length is six. Returns a normalized LCCN for lccn() to validate. There is no error checking (step 3.b.1) performed in this function. ]] local function normalize_lccn (lccn) lccn = lccn:gsub ("%s", ""); -- 1. strip whitespace if nil ~= string.find (lccn, '/') then lccn = lccn:match ("(.-)/"); -- 2. remove forward slash and all character to the right of it end local prefix local suffix prefix, suffix = lccn:match ("(.+)%-(.+)"); -- 3.a remove hyphen by splitting the string into prefix and suffix if nil ~= suffix then -- if there was a hyphen suffix = string.rep("0", 6-string.len (suffix)) .. suffix; -- 3.b.2 left fill the suffix with 0s if suffix length less than 6 lccn = prefix..suffix; -- reassemble the LCCN end return lccn; end --============================<< I D E N T I F I E R F U N C T I O N S >>==================================== --[[--------------------------< A R X I V >-------------------------------------------------------------------- See: http://arxiv.org/help/arxiv_identifier format and error check arXiv identifier. There are three valid forms of the identifier: the first form, valid only between date codes 9107 and 0703, is: arXiv:<archive>.<class>/<date code><number><version> where: <archive> is a string of alpha characters - may be hyphenated; no other punctuation <class> is a string of alpha characters - may be hyphenated; no other punctuation; not the same as |class= parameter which is not supported in this form <date code> is four digits in the form YYMM where YY is the last two digits of the four-digit year and MM is the month number January = 01 first digit of YY for this form can only 9 and 0 <number> is a three-digit number <version> is a 1 or more digit number preceded with a lowercase v; no spaces (undocumented) the second form, valid from April 2007 through December 2014 is: arXiv:<date code>.<number><version> where: <date code> is four digits in the form YYMM where YY is the last two digits of the four-digit year and MM is the month number January = 01 <number> is a four-digit number <version> is a 1 or more digit number preceded with a lowercase v; no spaces the third form, valid from January 2015 is: arXiv:<date code>.<number><version> where: <date code> and <version> are as defined for 0704-1412 <number> is a five-digit number ]] local function arxiv (id, class) local handler = cfg.id_handlers['ARXIV']; local year, month, version; local err_cat = false; -- assume no error message local text; -- output text if id:match("^%a[%a%.%-]+/[90]%d[01]%d%d%d%d$") or id:match("^%a[%a%.%-]+/[90]%d[01]%d%d%d%dv%d+$") then -- test for the 9107-0703 format with or without version year, month = id:match("^%a[%a%.%-]+/([90]%d)([01]%d)%d%d%d[v%d]*$"); year = tonumber(year); month = tonumber(month); if ((not (90 < year or 8 > year)) or (1 > month or 12 < month)) or -- if invalid year or invalid month ((91 == year and 7 > month) or (7 == year and 3 < month)) then -- if years ok, are starting and ending months ok? err_cat = true; -- flag for error message end elseif id:match("^%d%d[01]%d%.%d%d%d%d$") or id:match("^%d%d[01]%d%.%d%d%d%dv%d+$") then -- test for the 0704-1412 with or without version year, month = id:match("^(%d%d)([01]%d)%.%d%d%d%d[v%d]*$"); year = tonumber(year); month = tonumber(month); if ((7 > year) or (14 < year) or (1 > month or 12 < month)) or -- is year invalid or is month invalid? (doesn't test for future years) ((7 == year) and (4 > month)) then -- when year is 07, is month invalid (before April)? err_cat = true; -- flag for error message end elseif id:match("^%d%d[01]%d%.%d%d%d%d%d$") or id:match("^%d%d[01]%d%.%d%d%d%d%dv%d+$") then -- test for the 1501- format with or without version year, month = id:match("^(%d%d)([01]%d)%.%d%d%d%d%d[v%d]*$"); year = tonumber(year); month = tonumber(month); if ((15 > year) or (1 > month or 12 < month)) then -- is year invalid or is month invalid? (doesn't test for future years) err_cat = true; -- flag for error message end else err_cat = true; -- not a recognized format; flag for error message end err_cat = err_cat and table.concat ({' ', set_message ('err_bad_arxiv')}) or ''; -- set error message if flag is true text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access}) .. err_cat; if is_set (class) then if id:match ('^%d+') then text = table.concat ({text, ' [[//arxiv.org/archive/', class, ' ', class, ']]'}); -- external link within square brackets, not wikilink else text = table.concat ({text, ' ', set_message ('err_class_ignored')}); end end return text; end --[[--------------------------< B I B C O D E >-------------------------------------------------------------------- Validates (sort of) and formats a bibcode ID. Format for bibcodes is specified here: http://adsabs.harvard.edu/abs_doc/help_pages/data.html#bibcodes But, this: 2015arXiv151206696F is apparently valid so apparently, the only things that really matter are length, 19 characters and first four digits must be a year. This function makes these tests: length must be 19 characters characters in position 1–4 must be digits and must represent a year in the range of 1000 – next year 5 must be a letter 6–8 must be letter, digit, ampersand, or dot (ampersand cannot directly precede a dot; &. ) 9–18 must be letter, digit, or dot 19 must be a letter or dot ]] local function bibcode (id, access) local handler = cfg.id_handlers['BIBCODE']; local err_type; local year; local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = access}); if 19 ~= id:len() then err_type = cfg.err_msg_supl.length; else year = id:match ("^(%d%d%d%d)[%a][%w&%.][%w&%.][%w&%.][%w.]+[%a%.]$"); if not year then -- if nil then no pattern match err_type = cfg.err_msg_supl.value; -- so value error else local next_year = tonumber(os.date ('%Y')) + 1; -- get the current year as a number and add one for next year year = tonumber (year); -- convert year portion of bibcode to a number if (1000 > year) or (year > next_year) then err_type = cfg.err_msg_supl.year; -- year out of bounds end if id:find('&%.') then err_type = cfg.err_msg_supl.journal; -- journal abbreviation must not have '&.' (if it does it's missing a letter) end end end if is_set (err_type) then -- if there was an error detected text = text .. ' ' .. set_message( 'err_bad_bibcode', {err_type}); end return text; end --[[--------------------------< B I O R X I V >----------------------------------------------------------------- Format bioRxiv ID and do simple error checking. Before 2019-12-11, biorXiv IDs were 10.1101/ followed by exactly 6 digits. After 2019-12-11, biorXiv IDs retained the six-digit identifier but prefixed that with a yyyy.mm.dd. date and suffixed with an optional version identifier. The bioRxiv ID is the string of characters: https://doi.org/10.1101/078733 -> 10.1101/078733 or a date followed by a six-digit number followed by an optional version indicator 'v' and one or more digits: https://www.biorxiv.org/content/10.1101/2019.12.11.123456v2 -> 10.1101/2019.12.11.123456v2 see https://www.biorxiv.org/about-biorxiv ]] local function biorxiv(id) local handler = cfg.id_handlers['BIORXIV']; local err_cat = true; -- flag; assume that there will be an error local patterns = { '^10.1101/%d%d%d%d%d%d$', -- simple 6-digit identifier (before 2019-12-11) '^10.1101/(20[1-9]%d)%.([01]%d)%.([0-3]%d)%.%d%d%d%d%d%dv%d+$', -- y.m.d. date + 6-digit identifier + version (after 2019-12-11) '^10.1101/(20[1-9]%d)%.([01]%d)%.([0-3]%d)%.%d%d%d%d%d%d$', -- y.m.d. date + 6-digit identifier (after 2019-12-11) } for _, pattern in ipairs (patterns) do -- spin through the patterns looking for a match if id:match (pattern) then local y, m, d = id:match (pattern); -- found a match, attempt to get year, month and date from the identifier if m then -- m is nil when id is the six-digit form if not is_valid_biorxiv_date (y .. '-' .. m .. '-' .. d) then -- validate the encoded date; TODO: don't ignore leap-year and actual month lengths ({{#time:}} is a poor date validator) break; -- date fail; break out early so we don't unset the error message end end err_cat = nil; -- we found a match so unset the error message break; -- and done end end -- err_cat remains set here when no match return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access}) .. (err_cat and (' ' .. set_message( 'err_bad_biorxiv')) or ''); end --[[--------------------------< C I T E S E E R X >------------------------------------------------------------ CiteSeerX use their own notion of "doi" (not to be confused with the identifiers resolved via doi.org). The description of the structure of this identifier can be found at Help_talk:Citation_Style_1/Archive_26#CiteSeerX_id_structure ]] local function citeseerx (id) local handler = cfg.id_handlers['CITESEERX']; local matched; local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access}); matched = id:match ("^10%.1%.1%.[1-9]%d?%d?%d?%.[1-9]%d?%d?%d?$"); if not matched then text = text .. ' ' .. set_message( 'err_bad_citeseerx' ); end return text; end --[[--------------------------< D O I >------------------------------------------------------------------------ Formats a DOI and checks for DOI errors. DOI names contain two parts: prefix and suffix separated by a forward slash. Prefix: directory indicator '10.' followed by a registrant code Suffix: character string of any length chosen by the registrant This function checks a DOI name for: prefix/suffix. If the DOI name contains spaces or endashes, or, if it ends with a period or a comma, this function will emit a bad_doi error message. DOI names are case-insensitive and can incorporate any printable Unicode characters so the test for spaces, endash, and terminal punctuation may not be technically correct but it appears, that in practice these characters are rarely if ever used in DOI names. ]] local function doi (id, inactive, access, ignore_invalid) local err_cat; local handler = cfg.id_handlers['DOI']; local text; if is_set (inactive) then local inactive_year = inactive:match("%d%d%d%d") or ''; -- try to get the year portion from the inactive date local inactive_month, good; if is_set (inactive_year) then if 4 < inactive:len() then -- inactive date has more than just a year (could be anything) local lang_obj = mw.getContentLanguage(); -- get a language object for this wiki good, inactive_month = pcall (lang_obj.formatDate, lang_obj, 'F', inactive); -- try to get the month name from the inactive date if not good then inactive_month = nil; -- something went wrong so make sure this is unset end end else inactive_year = nil; -- |doi-broken-date= has something but it isn't a date end if is_set(inactive_year) and is_set (inactive_month) then set_message ('maint_doi_inactive_dated', {inactive_year, inactive_month, ' '}); elseif is_set(inactive_year) then set_message ('maint_doi_inactive_dated', {inactive_year, '', ''}); else set_message ('maint_doi_inactive'); end inactive = " (" .. cfg.messages['inactive'] .. ' ' .. inactive .. ')'; end local registrant = id:match ('^10%.([^/]+)/[^%s–]-[^%.,]$'); -- registrant set when DOI has the proper basic form local registrant_err_patterns = { -- these patterns are for code ranges that are not supported '^[^1-3]%d%d%d%d%.%d%d*$', -- 5 digits with subcode (0xxxx, 40000+); accepts: 10000–39999 '^[^1-4]%d%d%d%d$', -- 5 digits without subcode (0xxxx, 40000+); accepts: 10000–49999 '^[^1-9]%d%d%d%.%d%d*$', -- 4 digits with subcode (0xxx); accepts: 1000–9999 '^[^1-9]%d%d%d$', -- 4 digits without subcode (0xxx); accepts: 1000–9999 '^%d%d%d%d%d%d+', -- 6 or more digits '^%d%d?%d?$', -- less than 4 digits without subcode (with subcode is legitimate) '^5555$', -- test registrant will never resolve '%s', -- any space character in registrant } if not ignore_invalid then if registrant then -- when DOI has proper form for i, pattern in ipairs (registrant_err_patterns) do -- spin through error patterns if registrant:match (pattern) then -- to validate registrant codes err_cat = ' ' .. set_message ('err_bad_doi'); -- when found, mark this DOI as bad break; -- and done end end else err_cat = ' ' .. set_message ('err_bad_doi'); -- invalid directory or malformed end else set_message ('maint_doi_ignore'); end text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = access, auto_link = not (err_cat or is_set (inactive) or ignore_invalid) and 'doi' or nil -- do not auto-link when |doi-broken-date= has a value or when there is a DOI error or (to play it safe, after all, auto-linking is not essential) when invalid DOIs are ignored }) .. (inactive or ''); return text .. (err_cat and err_cat or ''); -- parentheses required end --[[--------------------------< H D L >------------------------------------------------------------------------ Formats an HDL with minor error checking. HDL names contain two parts: prefix and suffix separated by a forward slash. Prefix: character string using any character in the UCS-2 character set except '/' Suffix: character string of any length using any character in the UCS-2 character set chosen by the registrant This function checks a HDL name for: prefix/suffix. If the HDL name contains spaces, endashes, or, if it ends with a period or a comma, this function will emit a bad_hdl error message. HDL names are case-insensitive and can incorporate any printable Unicode characters so the test for endashes and terminal punctuation may not be technically correct but it appears, that in practice these characters are rarely if ever used in HDLs. Query string parameters are named here: http://www.handle.net/proxy_servlet.html. query strings are not displayed but since '?' is an allowed character in an HDL, '?' followed by one of the query parameters is the only way we have to detect the query string so that it isn't URL-encoded with the rest of the identifier. ]] local function hdl(id, access) local handler = cfg.id_handlers['HDL']; local query_params = { -- list of known query parameters from http://www.handle.net/proxy_servlet.html 'noredirect', 'ignore_aliases', 'auth', 'cert', 'index', 'type', 'urlappend', 'locatt', 'action', } local hdl, suffix, param = id:match ('(.-)(%?(%a+).+)$'); -- look for query string local found; if hdl then -- when there are query strings, this is the handle identifier portion for _, q in ipairs (query_params) do -- spin through the list of query parameters if param:match ('^' .. q) then -- if the query string begins with one of the parameters found = true; -- announce a find break; -- and stop looking end end end if found then id = hdl; -- found so replace id with the handle portion; this will be URL-encoded, suffix will not else suffix = ''; -- make sure suffix is empty string for concatenation else end local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, suffix = suffix, separator = handler.separator, encode = handler.encode, access = access}) if nil == id:match("^[^%s–]-/[^%s–]-[^%.,]$") then -- HDL must contain a forward slash, must not contain spaces, endashes, and must not end with period or comma text = text .. ' ' .. set_message( 'err_bad_hdl' ); end return text; end --[[--------------------------< I S B N >---------------------------------------------------------------------- Determines whether an ISBN string is valid ]] local function isbn (isbn_str, ignore_invalid) local handler = cfg.id_handlers['ISBN']; local function return_result (check, err_type) -- local function to handle the various returns local ISBN = internal_link_id ({link = handler.link, label = handler.label, redirect = handler.redirect, prefix = handler.prefix, id = isbn_str, separator = handler.separator}); if ignore_invalid then -- if ignoring ISBN errors set_message ('maint_isbn_ignore'); -- add a maint category even when there is no error else -- here when not ignoring if not check then -- and there is an error return ISBN .. set_message ('err_bad_isbn', {err_type}, false, ' '); -- display an error message end end return ISBN; end if nil ~= isbn_str:match ('[^%s-0-9X]') then return return_result (false, cfg.err_msg_supl.char); -- fail if isbn_str contains anything but digits, hyphens, or the uppercase X end local id = isbn_str:gsub ('[%s-]', ''); -- remove hyphens and whitespace local len = id:len(); if len ~= 10 and len ~= 13 then return return_result (false, cfg.err_msg_supl.length); -- fail if incorrect length end if len == 10 then if id:match ('^%d*X?$') == nil then -- fail if isbn_str has 'X' anywhere but last position return return_result (false, cfg.err_msg_supl.form); end return return_result (is_valid_isxn(id, 10), cfg.err_msg_supl.check); else if id:match ('^%d+$') == nil then return return_result (false, cfg.err_msg_supl.char); -- fail if ISBN-13 is not all digits end if id:match ('^97[89]%d*$') == nil then return return_result (false, cfg.err_msg_supl.prefix); -- fail when ISBN-13 does not begin with 978 or 979 end if id:match ('^9790') then return return_result (false, cfg.err_msg_supl.group); -- group identifier '0' is reserved to ISMN end return return_result (is_valid_isxn_13 (id), cfg.err_msg_supl.check); end end --[[--------------------------< A S I N >---------------------------------------------------------------------- Formats a link to Amazon. Do simple error checking: ASIN must be mix of 10 numeric or uppercase alpha characters. If a mix, first character must be uppercase alpha; if all numeric, ASINs must be 10-digit ISBN. If 10-digit ISBN, add a maintenance category so a bot or AWB script can replace |asin= with |isbn=. Error message if not 10 characters, if not ISBN-10, if mixed and first character is a digit. |asin=630....... is (apparently) not a legitimate ISBN though it checksums as one; these do not cause this function to emit the maint_asin message This function is positioned here because it calls isbn() ]] local function asin (id, domain) local err_cat = "" if not id:match("^[%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u][%d%u]$") then err_cat = ' ' .. set_message ('err_bad_asin'); -- ASIN is not a mix of 10 uppercase alpha and numeric characters else if id:match("^%d%d%d%d%d%d%d%d%d[%dX]$") then -- if 10-digit numeric (or 9 digits with terminal X) if isbn (id) then -- see if ASIN value is or validates as ISBN-10 if not id:find ('^630') then -- 630xxxxxxx is (apparently) not a valid isbn prefix but is used by amazon as a numeric identifier set_message ('maint_asin'); -- begins with something other than 630 so possibly an isbn end elseif not is_set (err_cat) then err_cat = ' ' .. set_message ('err_bad_asin'); -- ASIN is not ISBN-10 end elseif not id:match("^%u[%d%u]+$") then err_cat = ' ' .. set_message ('err_bad_asin'); -- asin doesn't begin with uppercase alpha end end if not is_set(domain) then domain = "com"; elseif in_array (domain, {'jp', 'uk'}) then -- Japan, United Kingdom domain = "co." .. domain; elseif in_array (domain, {'au', 'br', 'mx'}) then -- Australia, Brazil, Mexico domain = "com." .. domain; end local handler = cfg.id_handlers['ASIN']; return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix .. domain .. "/dp/", id = id, encode = handler.encode, separator = handler.separator}) .. err_cat; end --[[--------------------------< I S M N >---------------------------------------------------------------------- Determines whether an ISMN string is valid. Similar to ISBN-13, ISMN is 13 digits beginning 979-0-... and uses the same check digit calculations. See http://www.ismn-international.org/download/Web_ISMN_Users_Manual_2008-6.pdf section 2, pages 9–12. ]] local function ismn (id) local handler = cfg.id_handlers['ISMN']; local text; local valid_ismn = true; local id_copy; id_copy = id; -- save a copy because this testing is destructive id = id:gsub ('[%s-]', ''); -- remove hyphens and white space if 13 ~= id:len() or id:match( "^9790%d*$" ) == nil then -- ISMN must be 13 digits and begin with 9790 valid_ismn = false; else valid_ismn=is_valid_isxn_13 (id); -- validate ISMN end -- text = internal_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, -- use this (or external version) when there is some place to link to -- prefix = handler.prefix, id = id_copy, separator = handler.separator, encode = handler.encode}) text = table.concat ( -- because no place to link to yet { make_wikilink (link_label_make (handler), handler.label), handler.separator, id_copy }); if false == valid_ismn then text = text .. ' ' .. set_message( 'err_bad_ismn' ) -- add an error message if the ISMN is invalid end return text; end --[[--------------------------< I S S N >---------------------------------------------------------------------- Validate and format an ISSN. This code fixes the case where an editor has included an ISSN in the citation but has separated the two groups of four digits with a space. When that condition occurred, the resulting link looked like this: |issn=0819 4327 gives: [http://www.worldcat.org/issn/0819 4327 0819 4327] -- can't have spaces in an external link This code now prevents that by inserting a hyphen at the ISSN midpoint. It also validates the ISSN for length and makes sure that the checkdigit agrees with the calculated value. Incorrect length (8 digits), characters other than 0-9 and X, or checkdigit / calculated value mismatch will all cause a check ISSN error message. The ISSN is always displayed with a hyphen, even if the ISSN was given as a single group of 8 digits. ]] local function issn (id, e, ignore_invalid) local issn_copy = id; -- save a copy of unadulterated ISSN; use this version for display if ISSN does not validate local handler; local text; local valid_issn = true; handler = cfg.id_handlers[e and 'EISSN' or 'ISSN']; id = id:gsub ('[%s-]', ''); -- remove hyphens and whitespace if 8 ~= id:len() or nil == id:match( "^%d*X?$" ) then -- validate the ISSN: 8 digits long, containing only 0-9 or X in the last position valid_issn = false; -- wrong length or improper character else valid_issn = is_valid_isxn(id, 8); -- validate ISSN end if true == valid_issn then id = string.sub( id, 1, 4 ) .. "-" .. string.sub( id, 5 ); -- if valid, display correctly formatted version else id = issn_copy; -- if not valid, show the invalid ISSN with error message end text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}) if ignore_invalid then set_message ('maint_issn_ignore'); else if false == valid_issn then text = text .. ' ' .. set_message ('err_bad_issn', e and 'e' or ''); -- add an error message if the ISSN is invalid end end return text end --[[--------------------------< J F M >----------------------------------------------------------------------- A numerical identifier in the form nn.nnnn.nn ]] local function jfm (id) local handler = cfg.id_handlers['JFM']; local id_num; local err_cat = ''; id_num = id:match ('^[Jj][Ff][Mm](.*)$'); -- identifier with jfm prefix; extract identifier if is_set (id_num) then set_message ('maint_jfm_format'); else -- plain number without mr prefix id_num = id; -- if here id does not have prefix end if id_num and id_num:match('^%d%d%.%d%d%d%d%.%d%d$') then id = id_num; -- jfm matches pattern else err_cat = ' ' .. set_message( 'err_bad_jfm' ); -- set an error message end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}) .. err_cat; end --[[--------------------------< L C C N >---------------------------------------------------------------------- Format LCCN link and do simple error checking. LCCN is a character string 8-12 characters long. The length of the LCCN dictates the character type of the first 1-3 characters; the rightmost eight are always digits. http://info-uri.info/registry/OAIHandler?verb=GetRecord&metadataPrefix=reg&identifier=info:lccn/ length = 8 then all digits length = 9 then lccn[1] is lowercase alpha length = 10 then lccn[1] and lccn[2] are both lowercase alpha or both digits length = 11 then lccn[1] is lower case alpha, lccn[2] and lccn[3] are both lowercase alpha or both digits length = 12 then lccn[1] and lccn[2] are both lowercase alpha ]] local function lccn(lccn) local handler = cfg.id_handlers['LCCN']; local err_cat = ''; -- presume that LCCN is valid local id = lccn; -- local copy of the LCCN id = normalize_lccn (id); -- get canonical form (no whitespace, hyphens, forward slashes) local len = id:len(); -- get the length of the LCCN if 8 == len then if id:match("[^%d]") then -- if LCCN has anything but digits (nil if only digits) err_cat = ' ' .. set_message ('err_bad_lccn'); -- set an error message end elseif 9 == len then -- LCCN should be adddddddd if nil == id:match("%l%d%d%d%d%d%d%d%d") then -- does it match our pattern? err_cat = ' ' .. set_message ('err_bad_lccn'); -- set an error message end elseif 10 == len then -- LCCN should be aadddddddd or dddddddddd if id:match("[^%d]") then -- if LCCN has anything but digits (nil if only digits) ... if nil == id:match("^%l%l%d%d%d%d%d%d%d%d") then -- ... see if it matches our pattern err_cat = ' ' .. set_message ('err_bad_lccn'); -- no match, set an error message end end elseif 11 == len then -- LCCN should be aaadddddddd or adddddddddd if not (id:match("^%l%l%l%d%d%d%d%d%d%d%d") or id:match("^%l%d%d%d%d%d%d%d%d%d%d")) then -- see if it matches one of our patterns err_cat = ' ' .. set_message ('err_bad_lccn'); -- no match, set an error message end elseif 12 == len then -- LCCN should be aadddddddddd if not id:match("^%l%l%d%d%d%d%d%d%d%d%d%d") then -- see if it matches our pattern err_cat = ' ' .. set_message ('err_bad_lccn'); -- no match, set an error message end else err_cat = ' ' .. set_message ('err_bad_lccn'); -- wrong length, set an error message end if not is_set (err_cat) and nil ~= lccn:find ('%s') then err_cat = ' ' .. set_message ('err_bad_lccn'); -- lccn contains a space, set an error message end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = lccn, separator = handler.separator, encode = handler.encode}) .. err_cat; end --[[--------------------------< M R >-------------------------------------------------------------------------- A seven digit number; if not seven digits, zero-fill leading digits to make seven digits. ]] local function mr (id) local handler = cfg.id_handlers['MR']; local id_num; local id_len; local err_cat = ''; id_num = id:match ('^[Mm][Rr](%d+)$'); -- identifier with mr prefix if is_set (id_num) then set_message ('maint_mr_format'); -- add maint cat else -- plain number without mr prefix id_num = id:match ('^%d+$'); -- if here id is all digits end id_len = id_num and id_num:len() or 0; if (7 >= id_len) and (0 ~= id_len) then id = string.rep ('0', 7-id_len ) .. id_num; -- zero-fill leading digits else err_cat = ' ' .. set_message ('err_bad_mr'); -- set an error message end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}) .. err_cat; end --[[--------------------------< O C L C >---------------------------------------------------------------------- Validate and format an OCLC ID. https://www.oclc.org/batchload/controlnumber.en.html {{dead link}} archived at: https://web.archive.org/web/20161228233804/https://www.oclc.org/batchload/controlnumber.en.html ]] local function oclc (id) local handler = cfg.id_handlers['OCLC']; local number; local err_msg = ''; -- empty string for concatenation if id:match('^ocm%d%d%d%d%d%d%d%d$') then -- ocm prefix and 8 digits; 001 field (12 characters) number = id:match('ocm(%d+)'); -- get the number elseif id:match('^ocn%d%d%d%d%d%d%d%d%d$') then -- ocn prefix and 9 digits; 001 field (12 characters) number = id:match('ocn(%d+)'); -- get the number elseif id:match('^on%d%d%d%d%d%d%d%d%d%d+$') then -- on prefix and 10 or more digits; 001 field (12 characters) number = id:match('^on(%d%d%d%d%d%d%d%d%d%d+)$'); -- get the number elseif id:match('^%(OCoLC%)[1-9]%d*$') then -- (OCoLC) prefix and variable number digits; no leading zeros; 035 field number = id:match('%(OCoLC%)([1-9]%d*)'); -- get the number if 9 < number:len() then number = nil; -- constrain to 1 to 9 digits; change this when OCLC issues 10-digit numbers end elseif id:match('^%d+$') then -- no prefix number = id; -- get the number if 10 < number:len() then number = nil; -- constrain to 1 to 10 digits; change this when OCLC issues 11-digit numbers end end if number then -- proper format id = number; -- exclude prefix, if any, from external link else err_msg = ' ' .. set_message ('err_bad_oclc') -- add an error message if the id is malformed end local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}) .. err_msg; return text; end --[[--------------------------< O P E N L I B R A R Y >-------------------------------------------------------- Formats an OpenLibrary link, and checks for associated errors. ]] local function openlibrary(id, access) local handler = cfg.id_handlers['OL']; local ident, code = id:gsub('^OL', ''):match("^(%d+([AMW]))$"); -- strip optional OL prefix followed immediately by digits followed by 'A', 'M', or 'W'; local error_msg = ''; local prefix = { -- these are appended to the handler.prefix according to code ['A']='authors/OL', ['M']='books/OL', ['W']='works/OL', ['X']='OL' -- not a code; spoof when 'code' in id is invalid }; if not ident then code = 'X'; -- no code or id completely invalid ident = id; -- copy id to ident so that we display the flawed identifier error_msg = ' ' .. set_message ('err_bad_ol'); end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix .. prefix[code], id = ident, separator = handler.separator, encode = handler.encode, access = access}) .. error_msg; end --[[--------------------------< P M C >------------------------------------------------------------------------ Format a PMC, do simple error checking, and check for embargoed articles. The embargo parameter takes a date for a value. If the embargo date is in the future the PMC identifier will not be linked to the article. If the embargo date is today or in the past, or if it is empty or omitted, then the PMC identifier is linked to the article through the link at cfg.id_handlers['PMC'].prefix. PMC embargo date testing is done in function is_embargoed () which is called earlier because when the citation has |pmc=<value> but does not have a |url= then |title= is linked with the PMC link. Function is_embargoed () returns the embargo date if the PMC article is still embargoed, otherwise it returns an empty string. PMCs are sequential numbers beginning at 1 and counting up. This code checks the PMC to see that it contains only digits and is less than test_limit; the value in local variable test_limit will need to be updated periodically as more PMCs are issued. ]] local function pmc (id, embargo) local handler = cfg.id_handlers['PMC']; local err_cat; local id_num; local text; id_num = id:match ('^[Pp][Mm][Cc](%d+)$'); -- identifier with PMC prefix if is_set (id_num) then set_message ('maint_pmc_format'); else -- plain number without PMC prefix id_num = id:match ('^%d+$'); -- if here id is all digits end if is_set (id_num) then -- id_num has a value so test it id_num = tonumber(id_num); -- convert id_num to a number for range testing if 1 > id_num or handler.id_limit < id_num then -- if PMC is outside test limit boundaries err_cat = ' ' .. set_message ('err_bad_pmc'); -- set an error message else id = tostring (id_num); -- make sure id is a string end else -- when id format incorrect err_cat = ' ' .. set_message ('err_bad_pmc'); -- set an error message end if is_set (embargo) and is_set (is_embargoed (embargo)) then -- is PMC is still embargoed? text = table.concat ( -- still embargoed so no external link { make_wikilink (link_label_make (handler), handler.label), handler.separator, id, (err_cat and err_cat or '') -- parens required }); else text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, -- no embargo date or embargo has expired, ok to link to article prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access, auto_link = not err_cat and 'pmc' or nil -- do not auto-link when PMC has error }) .. (err_cat and err_cat or ''); -- parentheses required end return text; end --[[--------------------------< P M I D >---------------------------------------------------------------------- Format PMID and do simple error checking. PMIDs are sequential numbers beginning at 1 and counting up. This code checks the PMID to see that it contains only digits and is less than test_limit; the value in local variable test_limit will need to be updated periodically as more PMIDs are issued. ]] local function pmid(id) local handler = cfg.id_handlers['PMID']; local err_cat = ''; -- presume that PMID is valid if id:match("[^%d]") then -- if PMID has anything but digits err_cat = ' ' .. set_message ('err_bad_pmid'); -- set an error message else -- PMID is only digits local id_num = tonumber(id); -- convert id to a number for range testing if 1 > id_num or handler.id_limit < id_num then -- if PMID is outside test limit boundaries err_cat = ' ' .. set_message ('err_bad_pmid'); -- set an error message end end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}) .. err_cat; end --[[--------------------------< S 2 C I D >-------------------------------------------------------------------- Format an S2CID, do simple error checking S2CIDs are sequential numbers beginning at 1 and counting up. This code checks the S2CID to see that it is only digits and is less than test_limit; the value in local variable test_limit will need to be updated periodically as more S2CIDs are issued. ]] local function s2cid (id, access) local handler = cfg.id_handlers['S2CID']; local err_cat = ''; -- presume that S2CID is valid local id_num; local text; id_num = id:match ('^[1-9]%d*$'); -- id must be all digits; must not begin with 0; no open access flag if is_set (id_num) then -- id_num has a value so test it id_num = tonumber(id_num); -- convert id_num to a number for range testing if handler.id_limit < id_num then -- if S2CID is outside test limit boundaries err_cat = ' ' .. set_message ('bad_s2cid_err'); -- set an error message end else -- when id format incorrect err_cat = ' ' .. set_message ('bad_s2cid_err'); -- set an error message end text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id:gsub ('%.%a%a', ''), separator = handler.separator, encode = handler.encode, access = access}) .. err_cat; return text; end --[[--------------------------< S B N >------------------------------------------------------------------------ 9-digit form of ISBN-10; uses same check-digit validation when SBN is prefixed with an additional '0' to make 10 digits ]] local function sbn (id, ignore_invalid) local handler = cfg.id_handlers['SBN']; local function return_result (check, err_type) -- local function to handle the various returns local SBN = internal_link_id ({link = handler.link, label = handler.label, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator}); if not ignore_invalid then -- if not ignoring SBN errors if not check then return SBN .. set_message ('err_bad_sbn', {err_type}, false, ' '); -- display an error message end else set_message ('maint_isbn_ignore'); -- add a maint category even when there is no error (ToDo: Possibly switch to separate message for SBNs only) end return SBN; end if id:match ('[^%s-0-9X]') then return return_result (false, cfg.err_msg_supl.char); -- fail if SBN contains anything but digits, hyphens, or the uppercase X end local ident = id:gsub ('[%s-]', ''); -- remove hyphens and whitespace; they interfere with the rest of the tests if 9 ~= ident:len() then return return_result (false, cfg.err_msg_supl.length); -- fail if incorrect length end if ident:match ('^%d*X?$') == nil then return return_result (false, cfg.err_msg_supl.form); -- fail if SBN has 'X' anywhere but last position end return return_result (is_valid_isxn ('0' .. ident, 10), cfg.err_msg_supl.check); end --[[--------------------------< S S R N >---------------------------------------------------------------------- Format an SSRN, do simple error checking SSRNs are sequential numbers beginning at 100? and counting up. This code checks the SSRN to see that it is only digits and is greater than 99 and less than test_limit; the value in local variable test_limit will need to be updated periodically as more SSRNs are issued. ]] local function ssrn (id) local handler = cfg.id_handlers['SSRN']; local err_cat = ''; -- presume that SSRN is valid local id_num; local text; id_num = id:match ('^%d+$'); -- id must be all digits if is_set (id_num) then -- id_num has a value so test it id_num = tonumber(id_num); -- convert id_num to a number for range testing if 100 > id_num or handler.id_limit < id_num then -- if SSRN is outside test limit boundaries err_cat = ' ' .. set_message ('err_bad_ssrn'); -- set an error message end else -- when id format incorrect err_cat = ' ' .. set_message ('err_bad_ssrn'); -- set an error message end text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode, access = handler.access}) .. err_cat; return text; end --[[--------------------------< U S E N E T _ I D >------------------------------------------------------------ Validate and format a usenet message id. Simple error checking, looks for 'id-left@id-right' not enclosed in '<' and/or '>' angle brackets. ]] local function usenet_id (id) local handler = cfg.id_handlers['USENETID']; local text = external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}) if not id:match('^.+@.+$') or not id:match('^[^<].*[^>]$') then -- doesn't have '@' or has one or first or last character is '< or '>' text = text .. ' ' .. set_message ('err_bad_usenet_id') -- add an error message if the message id is invalid end return text end --[[--------------------------< Z B L >----------------------------------------------------------------------- A numerical identifier in the form nnnn.nnnnn - leading zeros in the first quartet optional format described here: http://emis.mi.sanu.ac.rs/ZMATH/zmath/en/help/search/ temporary format is apparently eight digits. Anything else is an error ]] local function zbl (id) local handler = cfg.id_handlers['ZBL']; local err_cat = ''; if id:match('^%d%d%d%d%d%d%d%d$') then -- is this identifier using temporary format? set_message ('maint_zbl'); -- yes, add maint cat elseif not id:match('^%d?%d?%d?%d%.%d%d%d%d%d$') then -- not temporary, is it normal format? err_cat = ' ' .. set_message ('err_bad_zbl'); -- no, set an error message end return external_link_id ({link = handler.link, label = handler.label, q = handler.q, redirect = handler.redirect, prefix = handler.prefix, id = id, separator = handler.separator, encode = handler.encode}) .. err_cat; end --============================<< I N T E R F A C E F U N C T I O N S >>========================================== --[[--------------------------< B U I L D _ I D _ L I S T >-------------------------------------------------------- Takes a table of IDs created by extract_ids() and turns it into a table of formatted ID outputs. inputs: id_list – table of identifiers built by extract_ids() options – table of various template parameter values used to modify some manually handled identifiers ]] local function build_id_list( id_list, options ) local new_list, handler = {}; local accept; local function fallback(k) return { __index = function(t,i) return cfg.id_handlers[k][i] end } end; for k, v in pairs( id_list ) do v, accept = has_accept_as_written (v); -- remove and note accept-as-written markup if present -- k is uppercase identifier name as index to cfg.id_handlers; e.g. cfg.id_handlers['ISBN'], v is a table -- fallback to read-only cfg handler = setmetatable( { ['id'] = v, ['access'] = options.IdAccessLevels[k] }, fallback(k) ); if handler.mode == 'external' then table.insert( new_list, {handler.label, external_link_id( handler ) } ); elseif handler.mode == 'internal' then table.insert( new_list, {handler.label, internal_link_id( handler ) } ); elseif handler.mode ~= 'manual' then error( cfg.messages['unknown_ID_mode'] ); elseif k == 'ARXIV' then table.insert( new_list, {handler.label, arxiv( v, options.Class ) } ); elseif k == 'ASIN' then table.insert( new_list, {handler.label, asin( v, options.ASINTLD ) } ); elseif k == 'BIBCODE' then table.insert( new_list, {handler.label, bibcode( v, handler.access ) } ); elseif k == 'BIORXIV' then table.insert( new_list, {handler.label, biorxiv( v ) } ); elseif k == 'CITESEERX' then table.insert( new_list, {handler.label, citeseerx( v ) } ); elseif k == 'DOI' then table.insert( new_list, {handler.label, doi( v, options.DoiBroken, handler.access, accept) } ); elseif k == 'EISSN' then table.insert( new_list, {handler.label, issn( v, true, accept) } ); -- true distinguishes EISSN from ISSN elseif k == 'HDL' then table.insert( new_list, {handler.label, hdl( v, handler.access ) } ); elseif k == 'ISBN' then table.insert( new_list, {handler.label, isbn (v, (accept or options.IgnoreISBN)) } ); elseif k == 'ISMN' then table.insert( new_list, {handler.label, ismn( v ) } ); elseif k == 'ISSN' then table.insert( new_list, {handler.label, issn( v, false, accept) } ); elseif k == 'JFM' then table.insert( new_list, {handler.label, jfm( v ) } ); elseif k == 'LCCN' then table.insert( new_list, {handler.label, lccn( v ) } ); elseif k == 'MR' then table.insert( new_list, {handler.label, mr( v ) } ); elseif k == 'OCLC' then table.insert( new_list, {handler.label, oclc( v ) } ); elseif k == 'OL' or k == 'OLA' then table.insert( new_list, {handler.label, openlibrary( v, handler.access ) } ); elseif k == 'PMC' then table.insert( new_list, {handler.label, pmc( v, options.Embargo ) } ); elseif k == 'PMID' then table.insert( new_list, {handler.label, pmid( v ) } ); elseif k == 'S2CID' then table.insert( new_list, {handler.label, s2cid( v, handler.access ) } ); elseif k == 'SBN' then table.insert( new_list, {handler.label, sbn (v, accept) } ); elseif k == 'SSRN' then table.insert( new_list, {handler.label, ssrn( v ) } ); elseif k == 'USENETID' then table.insert( new_list, {handler.label, usenet_id( v ) } ); elseif k == 'ZBL' then table.insert( new_list, {handler.label, zbl( v ) } ); else error( cfg.messages['unknown_manual_ID'] ); end end local function comp( a, b ) -- used in following table.sort() return a[1]:lower() < b[1]:lower(); end table.sort( new_list, comp ); for k, v in ipairs( new_list ) do new_list[k] = v[2]; end return new_list; end --[[--------------------------< E X T R A C T _ I D S >------------------------------------------------------------ Populates ID table from arguments using configuration settings. Loops through cfg.id_handlers and searches args for any of the parameters listed in each cfg.id_handlers['...'].parameters. If found, adds the parameter and value to the identifier list. Emits redundant error message if more than one alias exists in args ]] local function extract_ids( args ) local id_list = {}; -- list of identifiers found in args for k, v in pairs( cfg.id_handlers ) do -- k is uppercase identifier name as index to cfg.id_handlers; e.g. cfg.id_handlers['ISBN'], v is a table v = select_one( args, v.parameters, 'redundant_parameters' ); -- v.parameters is a table of aliases for k; here we pick one from args if present if is_set(v) then id_list[k] = v; end -- if found in args, add identifier to our list end return id_list; end --[[--------------------------< E X T R A C T _ I D _ A C C E S S _ L E V E L S >-------------------------------------- Fetches custom id access levels from arguments using configuration settings. Parameters which have a predefined access level (e.g. arxiv) do not use this function as they are directly rendered as free without using an additional parameter. access-level values must match the case used in cfg.keywords_lists['id-access'] (lowercase unless there is some special reason for something else) ]] local function extract_id_access_levels( args, id_list ) local id_accesses_list = {}; for k, v in pairs( cfg.id_handlers ) do local access_param = v.custom_access; -- name of identifier's access-level parameter if is_set(access_param) then local access_level = args[access_param]; -- get the assigned value if there is one if is_set (access_level) then if not in_array (access_level, cfg.keywords_lists['id-access']) then -- exact match required table.insert( z.message_tail, { set_message( 'invalid_param_val', {access_param, access_level}, true ) } ); access_level = nil; -- invalid so unset end if not is_set(id_list[k]) then -- identifier access-level must have a matching identifier table.insert( z.message_tail, { set_message( 'err_param_access_requires_param', {k:lower()}, true ) } ); -- parameter name is uppercase in cfg.id_handlers (k); lowercase for error message end id_accesses_list[k] = cfg.keywords_xlate[access_level]; -- get translated keyword end end end return id_accesses_list; end --[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >-------------------------------------- Sets local cfg table and imported functions table to same (live or sandbox) as that used by the other modules. ]] local function set_selected_modules (cfg_table_ptr, utilities_page_ptr) cfg = cfg_table_ptr; has_accept_as_written = utilities_page_ptr.has_accept_as_written; -- import functions from select Module:Citation/CS1/Utilities module is_set = utilities_page_ptr.is_set; in_array = utilities_page_ptr.in_array; set_message = utilities_page_ptr.set_message; select_one = utilities_page_ptr.select_one; substitute = utilities_page_ptr.substitute; make_wikilink = utilities_page_ptr.make_wikilink; z = utilities_page_ptr.z; -- table of tables in Module:Citation/CS1/Utilities end --[[--------------------------< E X P O R T E D F U N C T I O N S >------------------------------------------ ]] return { auto_link_urls = auto_link_urls, -- table of identifier URLs to be used when auto-linking |title= build_id_list = build_id_list, extract_ids = extract_ids, extract_id_access_levels = extract_id_access_levels, is_embargoed = is_embargoed; set_selected_modules = set_selected_modules; } 3f3nkfekbg2minwt6n6biny31ech649 Module:Citation/CS1/Utilities 828 1465 3234 3233 2020-10-11T01:32:09Z Chrisb 1 1 revision imported 3233 Scribunto text/plain local z = { error_categories = {}; -- for categorizing citations that contain errors error_ids = {}; message_tail = {}; maintenance_cats = {}; -- for categorizing citations that aren't erroneous per se, but could use a little work properties_cats = {}; -- for categorizing citations based on certain properties, language of source for instance }; --[[--------------------------< F O R W A R D D E C L A R A T I O N S >-------------------------------------- ]] local cfg; -- table of tables imported from selected Module:Citation/CS1/Configuration --[[--------------------------< H A S _ A C C E P T _ A S _ W R I T T E N >------------------------------------ when <str> is wholly wrapped in accept-as-written markup, return <str> without markup and true; return <str> and false else with allow_empty = false, <str> must have at least one character inside the markup with allow_empty = true, <str> the markup frame can be empty like (()) to distinguish an empty template parameter from the specific condition "has no applicable value" in citation-context. After futher evaluation the two cases might be merged at a later stage, but should be kept separated for now. ]] local function has_accept_as_written (str, allow_empty) local count; if true == allow_empty then str, count = str:gsub ('^%(%((.*)%)%)$', '%1'); -- allows (()) to be an empty set else str, count = str:gsub ('^%(%((.+)%)%)$', '%1'); end return str, 0 ~= count; end --[[--------------------------< I S _ S E T >------------------------------------------------------------------ Returns true if argument is set; false otherwise. Argument is 'set' when it exists (not nil) or when it is not an empty string. ]] local function is_set( var ) return not (var == nil or var == ''); end --[[--------------------------< I N _ A R R A Y >-------------------------------------------------------------- Whether needle is in haystack ]] local function in_array( needle, haystack ) if needle == nil then return false; end for n,v in ipairs( haystack ) do if v == needle then return n; end end return false; end --[[--------------------------< S U B S T I T U T E >---------------------------------------------------------- Populates numbered arguments in a message string using an argument table. ]] local function substitute( msg, args ) return args and mw.message.newRawMessage( msg, args ):plain() or msg; end --[[--------------------------< E R R O R _ C O M M E N T >---------------------------------------------------- Wraps error messages with CSS markup according to the state of hidden. ]] local function error_comment( content, hidden ) return substitute( hidden and cfg.presentation['hidden-error'] or cfg.presentation['visible-error'], content ); end --[=[-------------------------< M A K E _ W I K I L I N K >---------------------------------------------------- Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an empty string. ]=] local function make_wikilink (link, display) if is_set (link) then if is_set (display) then return table.concat ({'[[', link, '|', display, ']]'}); else return table.concat ({'[[', link, ']]'}); end else return ''; end end --[[--------------------------< S E T _ M E S S A G E >---------------------------------------------------------- Sets an error condition and returns the appropriate error message. The actual placement of the error message in the output is the responsibility of the calling function. TODO: change z.error_categories and z.maintenance_cats to have the form cat_name = true; to avoid dups without having to have an extra cat ]] local added_maint_cats = {} -- list of maintenance categories that have been added to z.maintenance_cats; TODO: figure out how to delete this table local function set_message (error_id, arguments, raw, prefix, suffix) local error_state = cfg.error_conditions[error_id]; prefix = prefix or ""; suffix = suffix or ""; if error_state == nil then error( cfg.messages['undefined_error'] .. ': ' .. error_id ); -- because missing error handler in Module:Citation/CS1/Configuration elseif is_set (error_state.category) then if error_state.message then -- when error_state.message defined, this is an error message table.insert( z.error_categories, error_state.category ); else if not added_maint_cats[error_id] then added_maint_cats[error_id] = true; -- note that we've added this category table.insert (z.maintenance_cats, substitute (error_state.category, arguments)); -- make cat name then add to table end return; -- because no message, nothing more to do end end local message = substitute( error_state.message, arguments ); message = table.concat ( { message, ' (', make_wikilink ( table.concat ( { cfg.messages['help page link'], '#', error_state.anchor }), cfg.messages['help page label']), ')' }); z.error_ids[error_id] = true; if z.error_ids['err_citation_missing_title'] and -- if missing-title error already noted in_array (error_id, {'err_bare_url_missing_title', 'err_trans_missing_title'}) then -- and this error is one of these return '', false; -- don't bother because one flavor of missing title is sufficient end message = table.concat ({ prefix, message, suffix }); if raw == true then return message, error_state.hidden; end return error_comment (message, error_state.hidden); end --[[-------------------------< I S _ A L I A S _ U S E D >----------------------------------------------------- This function is used by select_one() to determine if one of a list of alias parameters is in the argument list provided by the template. Input: args – pointer to the arguments table from calling template alias – one of the list of possible aliases in the aliases lists from Module:Citation/CS1/Configuration index – for enumerated parameters, identifies which one enumerated – true/false flag used to choose how enumerated aliases are examined value – value associated with an alias that has previously been selected; nil if not yet selected selected – the alias that has previously been selected; nil if not yet selected error_list – list of aliases that are duplicates of the alias already selected Returns: value – value associated with alias we selected or that was previously selected or nil if an alias not yet selected selected – the alias we selected or the alias that was previously selected or nil if an alias not yet selected ]] local function is_alias_used (args, alias, index, enumerated, value, selected, error_list) if enumerated then -- is this a test for an enumerated parameters? alias = alias:gsub ('#', index); -- replace '#' with the value in index else alias = alias:gsub ('#', ''); -- remove '#' if it exists end if is_set(args[alias]) then -- alias is in the template's argument list if value ~= nil and selected ~= alias then -- if we have already selected one of the aliases local skip; for _, v in ipairs(error_list) do -- spin through the error list to see if we've added this alias if v == alias then skip = true; break; -- has been added so stop looking end end if not skip then -- has not been added so table.insert( error_list, alias ); -- add error alias to the error list end else value = args[alias]; -- not yet selected an alias, so select this one selected = alias; end end return value, selected; -- return newly selected alias, or previously selected alias end --[[--------------------------< A D D _ M A I N T _ C A T >------------------------------------------------------ Adds a category to z.maintenance_cats using names from the configuration file with additional text if any. To prevent duplication, the added_maint_cats table lists the categories by key that have been added to z.maintenance_cats. ]] local function add_maint_cat (key, arguments) if not added_maint_cats [key] then added_maint_cats [key] = true; -- note that we've added this category table.insert( z.maintenance_cats, substitute (cfg.maint_cats [key], arguments)); -- make name then add to table end end --[[--------------------------< A D D _ P R O P _ C A T >-------------------------------------------------------- Adds a category to z.properties_cats using names from the configuration file with additional text if any. foreign_lang_source and foreign_lang_source_2 keys have a language code appended to them so that multiple languages may be categorized but multiples of the same language are not categorized. added_prop_cats is a table declared in page scope variables above ]] local added_prop_cats = {}; -- list of property categories that have been added to z.properties_cats local function add_prop_cat (key, arguments) if not added_prop_cats [key] then added_prop_cats [key] = true; -- note that we've added this category key = key:gsub ('(foreign_lang_source_?2?)%a%a%a?[%a%-]*', '%1'); -- strip lang code from keyname table.insert( z.properties_cats, substitute (cfg.prop_cats [key], arguments)); -- make name then add to table end end --[[--------------------------< S A F E _ F O R _ I T A L I C S >---------------------------------------------- Protects a string that will be wrapped in wiki italic markup '' ... '' Note: We cannot use <i> for italics, as the expected behavior for italics specified by ''...'' in the title is that they will be inverted (i.e. unitalicized) in the resulting references. In addition, <i> and '' tend to interact poorly under Mediawiki's HTML tidy. ]] local function safe_for_italics( str ) if not is_set(str) then return str; else if str:sub(1,1) == "'" then str = "<span></span>" .. str; end if str:sub(-1,-1) == "'" then str = str .. "<span></span>"; end -- Remove newlines as they break italics. return str:gsub( '\n', ' ' ); end end --[[--------------------------< W R A P _ S T Y L E >---------------------------------------------------------- Applies styling to various parameters. Supplied string is wrapped using a message_list configuration taking one argument; protects italic styled parameters. Additional text taken from citation_config.presentation - the reason this function is similar to but separate from wrap_msg(). ]] local function wrap_style (key, str) if not is_set( str ) then return ""; elseif in_array( key, { 'italic-title', 'trans-italic-title' } ) then str = safe_for_italics( str ); end return substitute( cfg.presentation[key], {str} ); end --[[--------------------------< M A K E _ S E P _ L I S T >------------------------------------------------------------ make a separated list of items using provided separators. <sep_list> - typically '<comma><space>' <sep_list_pair> - typically '<space>and<space>' <sep_list_end> - typically '<comma><space>and<space>' or '<comma><space>&<space>' defaults to cfg.presentation['sep_list'], cfg.presentation['sep_list_pair'], and cfg.presentation['sep_list_end'] if <sep_list_end> is specified, <sep_list> and <sep_list_pair> must also be supplied ]] local function make_sep_list (count, list_seq, sep_list, sep_list_pair, sep_list_end) local list = ''; if not sep_list then -- set the defaults sep_list = cfg.presentation['sep_list']; sep_list_pair = cfg.presentation['sep_list_pair']; sep_list_end = cfg.presentation['sep_list_end']; end if 2 >= count then list = table.concat (list_seq, sep_list_pair); -- insert separator between two items; returns list_seq[1] then only one item elseif 2 < count then list = table.concat (list_seq, sep_list, 1, count-1); -- concatenate all but last item with plain list separator list = table.concat ({list, list_seq[count]}, sep_list_end); -- concatenate last item onto end of <list> with final separator end return list; end --[[--------------------------< S E L E C T _ O N E >---------------------------------------------------------- Chooses one matching parameter from a list of parameters to consider. The list of parameters to consider is just names. For parameters that may be enumerated, the position of the numerator in the parameter name is identified by the '#' so |author-last1= and |author1-last= are represented as 'author-last#' and 'author#-last'. Because enumerated parameter |<param>1= is an alias of |<param>= we must test for both possibilities. Generates an error if more than one match is present. ]] local function select_one (args, aliases_list, error_condition, index) local value = nil; -- the value assigned to the selected parameter local selected = ''; -- the name of the parameter we have chosen local error_list = {}; if index ~= nil then index = tostring(index); end for _, alias in ipairs( aliases_list ) do -- for each alias in the aliases list if alias:match ('#') then -- if this alias can be enumerated if '1' == index then -- when index is 1 test for enumerated and non-enumerated aliases value, selected = is_alias_used (args, alias, index, false, value, selected, error_list); -- first test for non-enumerated alias end value, selected = is_alias_used (args, alias, index, true, value, selected, error_list); -- test for enumerated alias else value, selected = is_alias_used (args, alias, index, false, value, selected, error_list); --test for non-enumerated alias end end if #error_list > 0 and 'none' ~= error_condition then -- for cases where this code is used outside of extract_names() for i, v in ipairs (error_list) do error_list[i] = wrap_style ('parameter', v); end table.insert (error_list, wrap_style ('parameter', selected)); table.insert (z.message_tail, {set_message (error_condition, {make_sep_list (#error_list, error_list)}, true)}); end return value, selected; end --[=[-------------------------< R E M O V E _ W I K I _ L I N K >---------------------------------------------- Gets the display text from a wikilink like [[A|B]] or [[B]] gives B The str:gsub() returns either A|B froma [[A|B]] or B from [[B]] or B from B (no wikilink markup). In l(), l:gsub() removes the link and pipe (if they exist); the second :gsub() trims whitespace from the label if str was wrapped in wikilink markup. Presumably, this is because without wikimarkup in str, there is no match in the initial gsub, the replacement function l() doesn't get called. ]=] local function remove_wiki_link (str) return (str:gsub( "%[%[([^%[%]]*)%]%]", function(l) return l:gsub( "^[^|]*|(.*)$", "%1" ):gsub("^%s*(.-)%s*$", "%1"); end)); end --[=[-------------------------< I S _ W I K I L I N K >-------------------------------------------------------- Determines if str is a wikilink, extracts, and returns the wikilink type, link text, and display text parts. If str is a complex wikilink ([[L|D]]): returns wl_type 2 and D and L from [[L|D]]; if str is a simple wikilink ([[D]]) returns wl_type 1 and D from [[D]] and L as empty string; if not a wikilink: returns wl_type 0, str as D, and L as empty string. trims leading and trailing whitespace and pipes from L and D ([[L|]] and [[|D]] are accepted by MediaWiki and treated like [[D]]; while [[|D|]] is not accepted by MediaWiki, here, we accept it and return D without the pipes). ]=] local function is_wikilink (str) local D, L local wl_type = 2; -- assume that str is a complex wikilink [[L|D]] if not str:match ('^%[%[[^%]]+%]%]$') then -- is str some sort of a wikilink (must have some sort of content) return 0, str, ''; -- not a wikilink; return wl_type as 0, str as D, and empty string as L end L, D = str:match ('^%[%[([^|]+)|([^%]]+)%]%]$'); -- get L and D from [[L|D]] if not is_set (D) then -- if no separate display D = str:match ('^%[%[([^%]]*)|*%]%]$'); -- get D from [[D]] or [[D|]] wl_type = 1; end D = mw.text.trim (D, '%s|'); -- trim white space and pipe characters return wl_type, D, L or ''; end --[[--------------------------< S T R I P _ A P O S T R O P H E _ M A R K U P >-------------------------------- Strip wiki italic and bold markup from argument so that it doesn't contaminate COinS metadata. This function strips common patterns of apostrophe markup. We presume that editors who have taken the time to markup a title have, as a result, provided valid markup. When they don't, some single apostrophes are left behind. Returns the argument without wiki markup and a number; the number is more-or-less meaningless except as a flag to indicate that markup was replaced; do not rely on it as an indicator of how many of any kind of markup was removed; returns the argument and nil when no markup removed ]] local function strip_apostrophe_markup (argument) if not is_set (argument) then return argument, nil; -- no argument, nothing to do end if nil == argument:find ( "''", 1, true ) then -- Is there at least one double apostrophe? If not, exit. return argument, nil; end local flag; while true do if argument:find ( "'''''", 1, true ) then -- bold italic (5) argument, flag=argument:gsub("%'%'%'%'%'", ""); -- remove all instances of it elseif argument:find ( "''''", 1, true ) then -- italic start and end without content (4) argument, flag=argument:gsub("%'%'%'%'", ""); elseif argument:find ( "'''", 1, true ) then -- bold (3) argument, flag=argument:gsub("%'%'%'", ""); elseif argument:find ( "''", 1, true ) then -- italic (2) argument, flag=argument:gsub("%'%'", ""); else break; end end return argument, flag; -- done end --[[--------------------------< S E T _ S E L E C T E D _ M O D U L E S >-------------------------------------- Sets local cfg table to same (live or sandbox) as that used by the other modules. ]] local function set_selected_modules (cfg_table_ptr) cfg = cfg_table_ptr; end --[[--------------------------< E X P O R T S >---------------------------------------------------------------- ]] return { add_maint_cat = add_maint_cat, -- exported functions add_prop_cat = add_prop_cat, error_comment = error_comment, has_accept_as_written = has_accept_as_written, in_array = in_array, is_set = is_set, is_wikilink = is_wikilink, make_sep_list = make_sep_list, make_wikilink = make_wikilink, remove_wiki_link = remove_wiki_link, safe_for_italics = safe_for_italics, select_one = select_one, set_message = set_message, set_selected_modules = set_selected_modules, strip_apostrophe_markup = strip_apostrophe_markup, substitute = substitute, wrap_style = wrap_style, z = z, -- exported table } rnxgdpjx6jrhyzx5bolqb5kyqlzkqoq Module:Citation/CS1/Whitelist 828 1466 3236 3235 2020-10-11T01:32:09Z Chrisb 1 1 revision imported 3235 Scribunto text/plain --[[--------------------------< S U P P O R T E D P A R A M E T E R S >-------------------------------------- Because a steady-state signal conveys no useful information, whitelist.basic_arguments[] list items can have three values: true - these parameters are valid and supported parameters false - these parameters are deprecated but still supported nil - these parameters are no longer supported. remove entirely ]] local basic_arguments = { ['accessdate'] = true, ['access-date'] = true, ['agency'] = true, ['archivedate'] = true, ['archive-date'] = true, ['archive-format'] = true, ['archiveurl'] = true, ['archive-url'] = true, ['article'] = true, ['article-format'] = true, ['article-url'] = true, ['article-url-access'] = true, ['arxiv'] = true, -- cite arxiv; here because allowed in cite ... as identifier ['asin'] = true, ['ASIN'] = true, ['asin-tld'] = true, ['at'] = true, ['author'] = true, ['author-first'] = true, ['author-given'] = true, ['author-last'] = true, ['author-surname'] = true, ['authorlink'] = true, ['author-link'] = true, ['authormask'] = false, -- deprecated ['author-mask'] = true, ['authors'] = true, ['bibcode'] = true, ['bibcode-access'] = true, ['biorxiv'] = true, -- cite biorxiv; here because allowed in cite ... as identifier ['booktitle'] = true, ['book-title'] = true, ['cartography'] = true, ['chapter'] = true, ['chapter-format'] = true, ['chapterurl'] = true, ['chapter-url'] = true, ['chapter-url-access'] = true, ['citeseerx'] = true, -- cite citeseerx; here because allowed in cite ... as identifier ['collaboration'] = true, ['conference'] = true, ['conference-format'] = true, ['conferenceurl'] = true, ['conference-url'] = true, ['contribution'] = true, ['contribution-format'] = true, ['contributionurl'] = true, ['contribution-url'] = true, ['contribution-url-access'] = true, ['contributor'] = true, ['contributor-first'] = true, ['contributor-given'] = true, ['contributor-last'] = true, ['contributor-surname'] = true, ['contributor-link'] = true, ['contributor-mask'] = true, ['date'] = true, ['degree'] = true, ['department'] = true, ['df'] = true, ['dictionary'] = true, ['displayauthors'] = false, -- deprecated ['display-authors'] = true, ['display-contributors'] = true, ['display-editors'] = true, ['display-interviewers'] = true, ['display-subjects'] = true, ['display-translators'] = true, ['docket'] = true, ['doi'] = true, ['DOI'] = true, ['doi-access'] = true, ['doi-broken-date'] = true, ['edition'] = true, ['editor'] = true, ['editor-first'] = true, ['editor-given'] = true, ['editor-last'] = true, ['editor-surname'] = true, ['editorlink'] = false, -- deprecated ['editor-link'] = true, ['editor-mask'] = true, ['editors'] = false, -- deprecated ['eissn'] = true, ['EISSN'] = true, ['encyclopaedia'] = true, ['encyclopedia'] = true, ['entry'] = true, ['entry-format'] = true, ['entry-url'] = true, ['entry-url-access'] = true, ['eprint'] = true, -- cite arxiv; here because allowed in cite ... as identifier ['event'] = true, ['event-format'] = true, ['eventurl'] = true, ['event-url'] = true, ['first'] = true, ['format'] = true, ['given'] = true, ['hdl'] = true, ['HDL'] = true, ['hdl-access'] = true, ['host'] = true, ['id'] = true, ['ID'] = true, ['ignore-isbn-error'] = false, -- deprecated ['institution'] = true, ['interviewer'] = true, ['interviewer-first'] = true, ['interviewer-given'] = true, ['interviewer-last'] = true, ['interviewer-surname'] = true, ['interviewer-link'] = true, ['interviewer-mask'] = true, ['isbn'] = true, ['ISBN'] = true, ['isbn13'] = true, ['ISBN13'] = true, ['ismn'] = true, ['ISMN'] = true, ['issn'] = true, ['ISSN'] = true, ['issue'] = true, ['jfm'] = true, ['JFM'] = true, ['journal'] = true, ['jstor'] = true, ['JSTOR'] = true, ['jstor-access'] = true, ['lang'] = true, ['language'] = true, ['last'] = true, ['lastauthoramp'] = false, -- deprecated ['last-author-amp'] = false, -- deprecated ['laydate'] = true, ['lay-date'] = true, ['laysource'] = true, ['lay-source'] = true, ['lay-format'] = true, ['layurl'] = true, ['lay-url'] = true, ['lccn'] = true, ['LCCN'] = true, ['location'] = true, ['magazine'] = true, ['medium'] = true, ['minutes'] = true, ['mode'] = true, ['mr'] = true, ['MR'] = true, ['name-list-format'] = true, ['name-list-style'] = true, ['newspaper'] = true, ['nocat'] = true, ['nopp'] = true, ['no-pp'] = true, ['no-tracking'] = true, ['number'] = true, ['oclc'] = true, ['OCLC'] = true, ['ol'] = true, ['OL'] = true, ['ol-access'] = true, ['orig-date'] = true, ['origyear'] = true, ['orig-year'] = true, ['osti'] = true, ['OSTI'] = true, ['osti-access'] = true, ['others'] = true, ['p'] = true, ['page'] = true, ['pages'] = true, ['people'] = true, ['periodical'] = true, ['place'] = true, ['pmc'] = true, ['PMC'] = true, ['pmc-embargo-date'] = true, ['pmid'] = true, ['PMID'] = true, ['postscript'] = true, ['pp'] = true, ['publicationdate'] = true, ['publication-date'] = true, ['publicationplace'] = true, ['publication-place'] = true, ['publisher'] = true, ['quotation'] = true, ['quote'] = true, ['quote-page'] = true, ['quote-pages'] = true, ['ref'] = true, ['rfc'] = true, ['RFC'] = true, ['sbn'] = true, ['SBN'] = true, ['scale'] = true, ['script-article'] = true, ['script-chapter'] = true, ['script-contribution'] = true, ['script-entry'] = true, ['script-journal'] = true, ['script-magazine'] = true, ['script-newspaper'] = true, ['script-periodical'] = true, ['script-quote'] = true, ['script-section'] = true, ['script-title'] = true, ['script-website'] = true, ['script-work'] = true, ['season'] = true, ['section'] = true, ['section-format'] = true, ['sectionurl'] = true, ['section-url'] = true, ['section-url-access'] = true, ['series'] = true, ['serieslink'] = true, ['series-link'] = true, ['seriesno'] = true, ['series-no'] = true, ['seriesnumber'] = true, ['series-number'] = true, ['ssrn'] = true, -- cite ssrn; these two here because allowed in cite ... as identifier ['SSRN'] = true, ['subject'] = true, ['subjectlink'] = false, -- deprecated ['subject-link'] = true, ['subject-mask'] = true, ['surname'] = true, ['s2cid'] = true, ['S2CID'] = true, ['s2cid-access'] = true, ['template-doc-demo'] = true, ['time'] = true, ['timecaption'] = true, ['time-caption'] = true, ['title'] = true, ['titlelink'] = true, ['title-link'] = true, ['translator'] = true, ['translator-first'] = true, ['translator-given'] = true, ['translator-last'] = true, ['translator-surname'] = true, ['translator-link'] = true, ['translator-mask'] = true, ['trans-article'] = true, ['trans-chapter'] = true, ['trans-contribution'] = true, ['trans-entry'] = true, ['trans-journal'] = true, ['trans-magazine'] = true, ['trans-newspaper'] = true, ['trans-periodical'] = true, ['trans-quote'] = true, ['trans-section'] = true, ['trans-title'] = true, ['trans-website'] = true, ['trans-work'] = true, ['type'] = true, ['url'] = true, ['URL'] = true, ['url-access'] = true, ['url-status'] = true, ['vauthors'] = true, ['veditors'] = true, ['version'] = true, ['via'] = true, ['volume'] = true, ['website'] = true, ['work'] = true, ['year'] = true, ['zbl'] = true, ['ZBL'] = true, } local numbered_arguments = { ['author#'] = true, ['author-first#'] = true, ['author#-first'] = true, ['author-given#'] = true, ['author#-given'] = true, ['author-last#'] = true, ['author#-last'] = true, ['author-surname#'] = true, ['author#-surname'] = true, ['author-link#'] = true, ['author#-link'] = true, ['authorlink#'] = true, ['author#link'] = true, ['author-mask#'] = true, ['author#-mask'] = true, ['authormask#'] = false, -- deprecated ['author#mask'] = false, -- deprecated ['contributor#'] = true, ['contributor-first#'] = true, ['contributor#-first'] = true, ['contributor-given#'] = true, ['contributor#-given'] = true, ['contributor-last#'] = true, ['contributor#-last'] = true, ['contributor-surname#'] = true, ['contributor#-surname'] = true, ['contributor-link#'] = true, ['contributor#-link'] = true, ['contributor-mask#'] = true, ['contributor#-mask'] = true, ['editor#'] = true, ['editor-first#'] = true, ['editor#-first'] = true, ['editor-given#'] = true, ['editor#-given'] = true, ['editor-last#'] = true, ['editor#-last'] = true, ['editor-surname#'] = true, ['editor#-surname'] = true, ['editor-link#'] = true, ['editor#-link'] = true, ['editorlink#'] = false, -- deprecated ['editor#link'] = false, -- deprecated ['editor-mask#'] = true, ['editor#-mask'] = true, ['first#'] = true, ['given#'] = true, ['host#'] = true, ['interviewer#'] = true, ['interviewer-first#'] = true, ['interviewer#-first'] = true, ['interviewer-given#'] = true, ['interviewer#-given'] = true, ['interviewer-last#'] = true, ['interviewer#-last'] = true, ['interviewer-surname#'] = true, ['interviewer#-surname'] = true, ['interviewer-link#'] = true, ['interviewer#-link'] = true, ['interviewer-mask#'] = true, ['interviewer#-mask'] = true, ['last#'] = true, ['subject#'] = true, ['subject-link#'] = true, ['subject#-link'] = true, ['subjectlink#'] = false, -- deprecated ['subject#link'] = false, -- deprecated ['subject-mask#'] = true, ['subject#-mask'] = true, ['surname#'] = true, ['translator#'] = true, ['translator-first#'] = true, ['translator#-first'] = true, ['translator-given#'] = true, ['translator#-given'] = true, ['translator-last#'] = true, ['translator#-last'] = true, ['translator-surname#'] = true, ['translator#-surname'] = true, ['translator-link#'] = true, ['translator#-link'] = true, ['translator-mask#'] = true, ['translator#-mask'] = true, } --[[--------------------------< P R E P R I N T S U P P O R T E D P A R A M E T E R S >-------------------- Cite arXiv, cite biorxiv, cite citeseerx, and cite ssrn are preprint templates that use the limited set of parameters defined in the limited_basic_arguments and limited_numbered_arguments tables. Those lists are supplemented with a template-specific list of parameters that are required by the particular template and may be exclusive to one of the preprint templates. Some of these parameters may also be available to the general cs1|2 templates. Same conventions for true/false/nil as above. ]] local preprint_arguments = { arxiv = { ['arxiv'] = true, -- cite arxiv and arxiv identifiers ['class'] = true, ['eprint'] = true, -- cite arxiv and arxiv identifiers }, biorxiv = { ['biorxiv'] = true, }, citeseerx = { ['citeseerx'] = true, }, ssrn = { ['ssrn'] = true, ['SSRN'] = true, }, } --[[--------------------------< L I M I T E D S U P P O R T E D P A R A M E T E R S >---------------------- This is an experiment that attempts to use validate() and a limited list of valid parameters to validate the parameters provided in a cite arxiv, cite biorxiv, or cite citeseerx templates. These parameters are common to all three templates Same conventions for true/false/nil as above. ]] local limited_basic_arguments = { ['at'] = true, ['author'] = true, ['author-first'] = true, ['author-given'] = true, ['author-last'] = true, ['author-surname'] = true, ['author-link'] = true, ['authorlink'] = true, ['author-mask'] = true, ['authormask'] = false, -- deprecated ['authors'] = true, ['collaboration'] = true, ['date'] = true, ['df'] = true, ['display-authors'] = true, ['displayauthors'] = false, -- deprecated ['first'] = true, ['given'] = true, ['language'] = true, ['last'] = true, ['last-author-amp'] = false, -- deprecated ['lastauthoramp'] = false, -- deprecated ['mode'] = true, ['name-list-format'] = true, ['name-list-style'] = true, ['nocat'] = true, ['no-tracking'] = true, ['p'] = true, ['page'] = true, ['pages'] = true, ['postscript'] = true, ['pp'] = true, ['quotation'] = true, ['quote'] = true, ['ref'] = true, ['surname'] = true, ['template-doc-demo'] = true, ['title'] = true, ['trans-title'] = true, ['url'] = true, ['URL'] = true, ['vauthors'] = true, ['year'] = true, } local limited_numbered_arguments = { ['author#'] = true, ['author-first#'] = true, ['author#-first'] = true, ['author-given#'] = true, ['author#-given'] = true, ['author-last#'] = true, ['author#-last'] = true, ['author-surname#'] = true, ['author#-surname'] = true, ['author-link#'] = true, ['author#-link'] = true, ['authorlink#'] = true, ['author#link'] = true, ['author-mask#'] = true, ['author#-mask'] = true, ['authormask#'] = false, -- deprecated ['author#mask'] = false, -- deprecated ['first#'] = true, ['given#'] = true, ['last#'] = true, ['surname#'] = true, } --[[--------------------------< U N I Q U E _ A R G U M E N T S >---------------------------------------------- Some templates have unique parameters. Those templates and their unique parameters are listed here. Keys in this table are the template's CitationClass parameter value Same conventions for true/false/nil as above. ]] local unique_arguments = { ['audio-visual'] = { ['transcript'] = true, ['transcript-format'] = true, ['transcripturl'] = true, ['transcript-url'] = true, }, episode = { ['airdate'] = true, ['air-date'] = true, ['credits'] = true, ['episodelink'] = true, -- alias of |title-link= ['episode-link'] = true, -- alias of |title-link= ['network'] = true, ['station'] = true, ['transcript'] = true, ['transcript-format'] = true, ['transcripturl'] = true, ['transcript-url'] = true, }, mailinglist = { ['mailinglist'] = true, ['mailing-list'] = true, }, map = { ['inset'] = true, ['map'] = true, ['map-format'] = true, ['mapurl'] = true, ['map-url'] = true, ['map-url-access'] = true, ['script-map'] = true, ['sections'] = true, ['sheet'] = true, ['sheets'] = true, ['trans-map'] = true, }, newsgroup = { ['message-id'] = true, ['newsgroup'] = true, }, serial = { ['airdate'] = true, ['air-date'] = true, ['credits'] = true, ['episode'] = true, -- cite serial only TODO: make available to cite episode? ['episodelink'] = true, -- aliases of |title-link= ['episode-link'] = true, ['network'] = true, ['station'] = true, }, } --[[--------------------------< T E M P L A T E _ L I S T _ G E T >-------------------------------------------- gets a list of the templates from table t ]] local function template_list_get (t) local out = {}; -- a table for output for k, _ in pairs (t) do -- spin through the table and collect the keys table.insert (out, k) -- add each key to the output table end return out; -- and done end --[[--------------------------< E X P O R T E D T A B L E S >------------------------------------------------ ]] return { basic_arguments = basic_arguments, numbered_arguments = numbered_arguments, limited_basic_arguments = limited_basic_arguments, limited_numbered_arguments = limited_numbered_arguments, preprint_arguments = preprint_arguments, preprint_template_list = template_list_get (preprint_arguments), -- make a template list from preprint_arguments{} table unique_arguments = unique_arguments, unique_param_template_list = template_list_get (unique_arguments), -- make a template list from unique_arguments{} table }; 4jbcp11pa4k7hsy69nzp2juitha3wp5 Module:Citation/CS1/styles.css 828 1467 3238 3237 2020-10-11T01:36:00Z Chrisb 1 1 revision imported 3237 sanitized-css text/css /* Protection icon the following line controls the page-protection icon in the upper right corner it must remain within this comment {{sandbox other||{{pp-template}}}} */ /* Overrides Some wikis do not override user agent default styles for HTML <cite> and <q>, unlike en.wp. On en.wp, keep these the same as [[MediaWiki:Common.css]] */ cite.citation { font-style: inherit; /* Remove italics for <cite> */ } .citation q { quotes: '"' '"' "'" "'"; /* Straight quote marks for <q> */ } /* ID and URL access Both core and Common.css have selector .mw-parser-output a[href$=".pdf"].external for PDF pages. All TemplateStyles pages are hoisted to .mw-parser-output. We need to have specificity equal to a[href$=".pdf"].external for locks to override PDF icon. the .id-lock-... selectors are for use by non-citation templates like {{Catalog lookup link}} */ .id-lock-free a, .citation .cs1-lock-free a { background: linear-gradient(transparent, transparent), url(//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg) right 0.1em center/9px no-repeat; } .id-lock-limited a, .id-lock-registration a, .citation .cs1-lock-limited a, .citation .cs1-lock-registration a { background: linear-gradient(transparent, transparent), url(//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg) right 0.1em center/9px no-repeat; } .id-lock-subscription a, .citation .cs1-lock-subscription a { background: linear-gradient(transparent, transparent), url(//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg) right 0.1em center/9px no-repeat; } .cs1-subscription, .cs1-registration { color: #555; } .cs1-subscription span, .cs1-registration span { border-bottom: 1px dotted; cursor: help; } /* Wikisource Wikisource icon when |chapter= or |title= is wikilinked to Wikisource as in cite wikisource */ .cs1-ws-icon a { background: linear-gradient(transparent, transparent), url(//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg) right 0.1em center/12px no-repeat; } /* Errors and maintenance */ code.cs1-code { /* <code>...</code> style override: mediawiki's css definition is specified here: https://git.wikimedia.org/blob/mediawiki%2Fcore.git/ 69cd73811f7aadd093050dbf20ed70ef0b42a713/skins%2Fcommon%2FcommonElements.css#L199 */ color: inherit; background: inherit; border: none; /* this maybe can be inherit. MDN says yes, code editor says no */ padding: inherit; } .cs1-hidden-error { display: none; font-size: 100%; } .cs1-visible-error { font-size: 100%; } .cs1-maint { display: none; color: #33aa33; margin-left: 0.3em; } /* Small text size Set small text size in one place. 0.95 (here) * 0.9 (from references list) is ~0.85, which is the lower bound for size for accessibility. Old styling for this was just 0.85. We could write the rule so that when this template is inside references/reflist, only then does it multiply by 0.95; else multiply by 0.85 */ .cs1-subscription, .cs1-registration, .cs1-format { font-size: 95%; } /* kerning */ .cs1-kern-left, .cs1-kern-wl-left { padding-left: 0.2em; } .cs1-kern-right, .cs1-kern-wl-right { padding-right: 0.2em; } /* selflinks – avoid bold font style when cs1|2 template links to the current page */ .citation .mw-selflink { font-weight: inherit; } 1m7rwqy4j4owuxl77ctkjt24he3uj8v Module:Color contrast 828 1484 3272 3271 2020-10-11T01:41:31Z Chrisb 1 1 revision imported 3271 Scribunto text/plain -- -- This module implements -- {{Color contrast ratio}} -- {{Greater color contrast ratio}} -- {{ColorToLum}} -- {{RGBColorToLum}} -- local p = {} local HTMLcolor = mw.loadData( 'Module:Color contrast/colors' ) local function sRGB (v) if (v <= 0.03928) then v = v / 12.92 else v = math.pow((v+0.055)/1.055, 2.4) end return v end local function rgbdec2lum(R, G, B) if ( 0 <= R and R < 256 and 0 <= G and G < 256 and 0 <= B and B < 256 ) then return 0.2126 * sRGB(R/255) + 0.7152 * sRGB(G/255) + 0.0722 * sRGB(B/255) else return '' end end local function hsl2lum(h, s, l) if ( 0 <= h and h < 360 and 0 <= s and s <= 1 and 0 <= l and l <= 1 ) then local c = (1 - math.abs(2*l - 1))*s local x = c*(1 - math.abs( math.fmod(h/60, 2) - 1) ) local m = l - c/2 local r, g, b = m, m, m if( 0 <= h and h < 60 ) then r = r + c g = g + x elseif( 60 <= h and h < 120 ) then r = r + x g = g + c elseif( 120 <= h and h < 180 ) then g = g + c b = b + x elseif( 180 <= h and h < 240 ) then g = g + x b = b + c elseif( 240 <= h and h < 300 ) then r = r + x b = b + c elseif( 300 <= h and h < 360 ) then r = r + c b = b + x end return rgbdec2lum(255*r, 255*g, 255*b) else return '' end end local function color2lum(c) if (c == nil) then return '' end -- html '#' entity c = c:gsub("&#35;", "#") -- whitespace c = c:match( '^%s*(.-)[%s;]*$' ) -- unstrip nowiki strip markers c = mw.text.unstripNoWiki(c) -- lowercase c = c:lower() -- first try to look it up local L = HTMLcolor[c] if (L ~= nil) then return L end -- convert from hsl if mw.ustring.match(c,'^hsl%([%s]*[0-9][0-9%.]*[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then local h, s, l = mw.ustring.match(c,'^hsl%([%s]*([0-9][0-9%.]*)[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$') return hsl2lum(tonumber(h), tonumber(s)/100, tonumber(l)/100) end -- convert from rgb if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*,[%s]*[0-9][0-9]*[%s]*%)$') then local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*,[%s]*([0-9][0-9]*)[%s]*%)$') return rgbdec2lum(tonumber(R), tonumber(G), tonumber(B)) end -- convert from rgb percent if mw.ustring.match(c,'^rgb%([%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*,[%s]*[0-9][0-9%.]*%%[%s]*%)$') then local R, G, B = mw.ustring.match(c,'^rgb%([%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*,[%s]*([0-9][0-9%.]*)%%[%s]*%)$') return rgbdec2lum(255*tonumber(R)/100, 255*tonumber(G)/100, 255*tonumber(B)/100) end -- remove leading # (if there is one) and whitespace c = mw.ustring.match(c, '^[%s#]*([a-f0-9]*)[%s]*$') -- split into rgb local cs = mw.text.split(c or '', '') if( #cs == 6 ) then local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[2]) local G = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[4]) local B = 16*tonumber('0x' .. cs[5]) + tonumber('0x' .. cs[6]) return rgbdec2lum(R, G, B) elseif ( #cs == 3 ) then local R = 16*tonumber('0x' .. cs[1]) + tonumber('0x' .. cs[1]) local G = 16*tonumber('0x' .. cs[2]) + tonumber('0x' .. cs[2]) local B = 16*tonumber('0x' .. cs[3]) + tonumber('0x' .. cs[3]) return rgbdec2lum(R, G, B) end -- failure, return blank return '' end -- This exports the function for use in other modules. -- The colour is passed as a string. function p._lum(color) return color2lum(color) end function p._greatercontrast(args) local bias = tonumber(args['bias'] or '0') or 0 local css = (args['css'] and args['css'] ~= '') and true or false local v1 = color2lum(args[1] or '') local c2 = args[2] or '#FFFFFF' local v2 = color2lum(c2) local c3 = args[3] or '#000000' local v3 = color2lum(c3) local ratio1 = -1; local ratio2 = -1; if (type(v1) == 'number' and type(v2) == 'number') then ratio1 = (v2 + 0.05)/(v1 + 0.05) ratio1 = (ratio1 < 1) and 1/ratio1 or ratio1 end if (type(v1) == 'number' and type(v3) == 'number') then ratio2 = (v3 + 0.05)/(v1 + 0.05) ratio2 = (ratio2 < 1) and 1/ratio2 or ratio2 end if css then local c1 = args[1] or '' if mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or mw.ustring.match(c1, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then c1 = '#' .. c1 end if mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or mw.ustring.match(c2, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then c2 = '#' .. c2 end if mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') or mw.ustring.match(v3, '^[A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9][A-Fa-f0-9]$') then c3 = '#' .. c3 end return 'background-color:' .. c1 .. '; color:' .. ((ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or '') .. ';' end return (ratio1 > 0) and (ratio2 > 0) and ((ratio1 + bias > ratio2) and c2 or c3) or '' end function p._ratio(args) local v1 = color2lum(args[1]) local v2 = color2lum(args[2]) if (type(v1) == 'number' and type(v2) == 'number') then -- v1 should be the brighter of the two. if v2 > v1 then v1, v2 = v2, v1 end return (v1 + 0.05)/(v2 + 0.05) else return args['error'] or '?' end end function p._styleratio(args) local style = (args[1] or ''):lower() local bg, fg = 'white', 'black' local lum_bg, lum_fg = 1, 0 if args[2] then local lum = color2lum(args[2]) if lum ~= '' then bg, lum_bg = args[2], lum end end if args[3] then local lum = color2lum(args[3]) if lum ~= '' then fg, lum_fg = args[3], lum end end local slist = mw.text.split(mw.ustring.gsub(mw.ustring.gsub(style or '', '&#[Xx]23;', '#'), '&#35;', '#'), ';') for k = 1,#slist do local s = slist[k] local k,v = s:match( '^[%s]*([^:]-):([^:]-)[%s;]*$' ) k = k or '' v = v or '' if (k:match('^[%s]*(background)[%s]*$') or k:match('^[%s]*(background%-color)[%s]*$')) then local lum = color2lum(v) if( lum ~= '' ) then bg, lum_bg = v, lum end elseif (k:match('^[%s]*(color)[%s]*$')) then local lum = color2lum(v) if( lum ~= '' ) then bg, lum_fg = v, lum end end end if lum_bg > lum_fg then return (lum_bg + 0.05)/(lum_fg + 0.05) else return (lum_fg + 0.05)/(lum_bg + 0.05) end end --[[ Use {{#invoke:Color contrast|somecolor}} directly or {{#invoke:Color contrast}} from a wrapper template. Parameters: -- |1= — required; A color to check. --]] function p.lum(frame) local color = frame.args[1] or frame:getParent().args[1] return p._lum(color) end function p.ratio(frame) local args = frame.args[1] and frame.args or frame:getParent().args return p._ratio(args) end function p.styleratio(frame) local args = frame.args[1] and frame.args or frame:getParent().args return p._styleratio(args) end function p.greatercontrast(frame) local args = frame.args[1] and frame.args or frame:getParent().args return p._greatercontrast(args) end return p 3j3oaih63ygo9p806h5yxpscaqh3xu9 Module:Color contrast/colors 828 1485 3274 3273 2020-10-11T01:41:32Z Chrisb 1 1 revision imported 3273 Scribunto text/plain return { aliceblue = 0.92880068253475, antiquewhite = 0.84646951707754, aqua = 0.7874, aquamarine = 0.8078549208338, azure = 0.97265264954166, beige = 0.8988459998705, bisque = 0.80732327372979, black = 0, blanchedalmond = 0.85084439608156, blue = 0.0722, blueviolet = 0.12622014321946, brown = 0.098224287876511, burlywood = 0.51559844533893, cadetblue = 0.29424681085422, chartreuse = 0.76032025902623, chocolate = 0.23898526114557, coral = 0.37017930872924, cornflowerblue = 0.30318641994179, cornsilk = 0.93562110372965, crimson = 0.16042199953026, cyan = 0.7874, darkblue = 0.018640801980939, darkcyan = 0.20329317839046, darkgoldenrod = 0.27264703559993, darkgray = 0.39675523072563, darkgreen = 0.091143429047575, darkgrey = 0.39675523072563, darkkhaki = 0.45747326349994, darkmagenta = 0.07353047651207, darkolivegreen = 0.12651920884889, darkorange = 0.40016167026524, darkorchid = 0.13413142174857, darkred = 0.054889674531132, darksalmon = 0.40541471563381, darkseagreen = 0.43789249325969, darkslateblue = 0.065792846227988, darkslategray = 0.067608151928044, darkslategrey = 0.067608151928044, darkturquoise = 0.4874606277449, darkviolet = 0.10999048339343, deeppink = 0.23866895828276, deepskyblue = 0.44481603395575, dimgray = 0.14126329114027, dimgrey = 0.14126329114027, dodgerblue = 0.27442536991456, firebrick = 0.10724525535015, floralwhite = 0.95922484825004, forestgreen = 0.18920812076002, fuchsia = 0.2848, gainsboro = 0.71569350050648, ghostwhite = 0.94311261886323, gold = 0.69860877428159, goldenrod = 0.41919977809569, gray = 0.2158605001139, green = 0.15438342968146, greenyellow = 0.80609472611453, grey = 0.2158605001139, honeydew = 0.96336535554782, hotpink = 0.34658438169715, indianred = 0.21406134963884, indigo = 0.03107561486337, ivory = 0.99071270600615, khaki = 0.77012343394121, lavender = 0.80318750514521, lavenderblush = 0.90172748631046, lawngreen = 0.73905893124963, lemonchiffon = 0.94038992245622, lightblue = 0.63709141280807, lightcoral = 0.35522120733135, lightcyan = 0.94587293494829, lightgoldenrodyellow = 0.93348351018297, lightgray = 0.65140563741982, lightgreen = 0.69091979956865, lightgrey = 0.65140563741982, lightpink = 0.58566152734898, lightsalmon = 0.4780675225206, lightseagreen = 0.35050145117042, lightskyblue = 0.56195637618331, lightslategray = 0.23830165007287, lightslategrey = 0.23830165007287, lightsteelblue = 0.53983888284666, lightyellow = 0.98161818392882, lime = 0.7152, limegreen = 0.44571042246098, linen = 0.88357340984379, magenta = 0.2848, maroon = 0.045891942324215, mediumaquamarine = 0.49389703310801, mediumblue = 0.044077780212328, mediumorchid = 0.21639251153773, mediumpurple = 0.22905858091648, mediumseagreen = 0.34393112338131, mediumslateblue = 0.20284629471622, mediumspringgreen = 0.70704308194184, mediumturquoise = 0.5133827926448, mediumvioletred = 0.14371899849357, midnightblue = 0.02071786635086, mintcream = 0.97834604947588, mistyrose = 0.82183047859185, moccasin = 0.80083000991567, navajowhite = 0.76519682342785, navy = 0.015585128108224, oldlace = 0.91900633405549, olive = 0.20027537200568, olivedrab = 0.22593150951929, orange = 0.4817026703631, orangered = 0.25516243753416, orchid = 0.31348806761439, palegoldenrod = 0.78792647887614, palegreen = 0.77936759006353, paleturquoise = 0.76436077921714, palevioletred = 0.28754994117889, papayawhip = 0.87797100199835, peachpuff = 0.74905589878251, peru = 0.30113074877936, pink = 0.63271070702466, plum = 0.45734221587969, powderblue = 0.68254586500605, purple = 0.061477070432439, rebeccapurple = 0.07492341159447, red = 0.2126, rosybrown = 0.32319457649407, royalblue = 0.16663210743188, saddlebrown = 0.097922285020521, salmon = 0.36977241527596, sandybrown = 0.46628543696283, seagreen = 0.19734199706275, seashell = 0.92737862206922, sienna = 0.13697631337098, silver = 0.52711512570581, skyblue = 0.55291668518184, slateblue = 0.14784278062136, slategray = 0.20896704076536, slategrey = 0.20896704076536, snow = 0.96533341834849, springgreen = 0.73052306068529, steelblue = 0.20562642207625, tan = 0.48237604163921, teal = 0.16996855778968, thistle = 0.56818401093733, tomato = 0.30638612719415, turquoise = 0.5895536427578, violet = 0.40315452986676, wheat = 0.74909702820482, white = 1, whitesmoke = 0.91309865179342, yellow = 0.9278, yellowgreen = 0.50762957208707, } chi69ar1btd4wp6xbk3uez6sfu0vipn Module:Delink 828 1468 3240 3239 2020-10-11T01:36:00Z Chrisb 1 1 revision imported 3239 Scribunto text/plain -- This module de-links most wikitext. require('Module:No globals') local p = {} local getArgs local function delinkReversePipeTrick(s) if s:match("^%[%[|.*[|\n]") then -- Check for newlines or multiple pipes. return s else return s:match("%[%[|(.*)%]%]") end end local function delinkPipeTrick(s) local linkarea, display = "", "" -- We need to deal with colons, brackets, and commas, per [[Help:Pipe trick]]. -- First, remove the text before the first colon, if any. if s:match(":") then s = s:match("%[%[.-:(.*)|%]%]") -- If there are no colons, grab all of the text apart from the square brackets and the pipe. else s = s:match("%[%[(.*)|%]%]") end -- Next up, brackets and commas. if s:match("%(.-%)$") then -- Brackets trump commas. s = s:match("(.-) ?%(.-%)$") elseif s:match(",") then -- If there are no brackets, display only the text before the first comma. s = s:match("(.-),.*$") end return s end local function delinkWikilink(s) local result = s -- Deal with the reverse pipe trick. if result:match("%[%[|") then return delinkReversePipeTrick(result) end result = mw.uri.decode(result, "PATH") -- decode percent-encoded entities. Leave underscores and plus signs. result = mw.text.decode(result, true) -- decode HTML entities. -- Check for bad titles. To do this we need to find the -- title area of the link, i.e. the part before any pipes. local titlearea if result:match("|") then -- Find if we're dealing with a piped link. titlearea = result:match("^%[%[(.-)|.*%]%]") else titlearea = result:match("^%[%[(.-)%]%]") end -- Check for bad characters. if mw.ustring.match(titlearea, "[%[%]<>{}%%%c\n]") then return s end -- Check for categories, interwikis, and files. local colonprefix = result:match("%[%[(.-):.*%]%]") or "" -- Get the text before the first colon. local ns = mw.site.namespaces[colonprefix] -- see if this is a known namespace if mw.language.isKnownLanguageTag(colonprefix) or ( ns and ( ns.canonicalName == "File" or ns.canonicalName == "Category" ) ) then return "" end -- Remove the colon if the link is using the [[Help:Colon trick]]. if result:match("%[%[:") then result = "[[" .. result:match("%[%[:(.*%]%])") end -- Deal with links using the [[Help:Pipe trick]]. if mw.ustring.match(result, "^%[%[[^|]*|%]%]") then return delinkPipeTrick(result) end -- Find the display area of the wikilink if result:match("|") then -- Find if we're dealing with a piped link. result = result:match("^%[%[.-|(.+)%]%]") -- Remove new lines from the display of multiline piped links, -- where the pipe is before the first new line. result = result:gsub("\n", "") else result = result:match("^%[%[(.-)%]%]") end return result end local function delinkURL(s) -- Assume we have already delinked internal wikilinks, and that -- we have been passed some text between two square brackets [foo]. -- If the text contains a line break it is not formatted as a URL, regardless of other content. if s:match("\n") then return s end -- Check if the text has a valid URL prefix and at least one valid URL character. local valid_url_prefixes = {"//", "http://", "https://", "ftp://", "gopher://", "mailto:", "news:", "irc://"} local url_prefix for i,v in ipairs(valid_url_prefixes) do if mw.ustring.match(s, '^%[' .. v ..'[^"%s].*%]' ) then url_prefix = v break end end -- Get display text if not url_prefix then return s end s = s:match("^%[" .. url_prefix .. "(.*)%]") -- Grab all of the text after the URL prefix and before the final square bracket. s = s:match('^.-(["<> ].*)') or "" -- Grab all of the text after the first URL separator character ("<> ). s = mw.ustring.match(s, "^%s*(%S.*)$") or "" -- If the separating character was a space, trim it off. local s_decoded = mw.text.decode(s, true) if mw.ustring.match(s_decoded, "%c") then return s else return s_decoded end end local function delinkLinkClass(s, pattern, delinkFunction) if not type(s) == "string" then error("Attempt to de-link non-string input.", 2) end if not ( type(pattern) == "string" and mw.ustring.sub(pattern, 1, 1) == "^" ) then error('Invalid pattern detected. Patterns must begin with "^".', 2) end -- Iterate over the text string, and replace any matched text. using the -- delink function. We need to iterate character by character rather -- than just use gsub, otherwise nested links aren't detected properly. local result = "" while s ~= '' do -- Replace text using one iteration of gsub. s = mw.ustring.gsub(s, pattern, delinkFunction, 1) -- Append the left-most character to the result string. result = result .. mw.ustring.sub(s, 1, 1) s = mw.ustring.sub(s, 2, -1) end return result end function p._delink(args) local text = args[1] or "" if args.refs == "yes" then -- Remove any [[Help:Strip markers]] representing ref tags. In most situations -- this is not a good idea - only use it if you know what you are doing! text = mw.ustring.gsub(text, "UNIQ%w*%-ref%-%d*%-QINU", "") end if not (args.comments == "no") then text = text:gsub("<!%-%-.-%-%->", "") -- Remove html comments. end if not (args.wikilinks == "no") then text = delinkLinkClass(text, "^%[%[.-%]%]", delinkWikilink) -- De-link wikilinks. end if not (args.urls == "no") then text = delinkLinkClass(text, "^%[.-%]", delinkURL) -- De-link URLs. end if not (args.whitespace == "no") then -- Replace single new lines with a single space, but leave double new lines -- and new lines only containing spaces or tabs before a second new line. text = mw.ustring.gsub(text, "([^\n \t][ \t]*)\n([ \t]*[^\n \t])", "%1 %2") text = text:gsub("[ \t]+", " ") -- Remove extra tabs and spaces. end return text end function p.delink(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return p._delink(getArgs(frame, {wrappers = 'Template:Delink'})) end return p 9uut60bk5e8nnvyxo8jbf7qt3b17a4v Module:Distinguish 828 1638 4924 4923 2020-10-11T05:50:33Z Chrisb 1 1 revision imported 4923 Scribunto text/plain local mHatnote = require('Module:Hatnote') local mHatlist = require('Module:Hatnote list') local mArguments --initialize lazily local mTableTools --initialize lazily local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local p = {} function p.distinguish(frame) mArguments = require('Module:Arguments') mTableTools = require('Module:TableTools') local args = mArguments.getArgs(frame) local selfref = args.selfref local text = args.text args = mTableTools.compressSparseArray(args) return p._distinguish(args, text, selfref) end function p._distinguish(args, text, selfref) checkType("_distinguish", 1, args, 'table') if #args == 0 and not text then return '' end local text = string.format( 'Not to be confused with %s.', text or mHatlist.orList(args, true) ) hnOptions = {selfref = selfref} return mHatnote._hatnote(text, hnOptions) end return p 0e9s40s10w9aih1qwh96v3jypzotm48 Module:Documentation 828 882 1996 1995 2020-09-29T19:15:37Z Chrisb 1 1 revision imported 1995 Scribunto text/plain -- This module implements {{documentation}}. -- Get required modules. local getArgs = require('Module:Arguments').getArgs local messageBox = require('Module:Message box') -- Get the config table. local cfg = mw.loadData('Module:Documentation/config') local p = {} -- Often-used functions. local ugsub = mw.ustring.gsub ---------------------------------------------------------------------------- -- Helper functions -- -- These are defined as local functions, but are made available in the p -- table for testing purposes. ---------------------------------------------------------------------------- local function message(cfgKey, valArray, expectType) --[[ -- Gets a message from the cfg table and formats it if appropriate. -- The function raises an error if the value from the cfg table is not -- of the type expectType. The default type for expectType is 'string'. -- If the table valArray is present, strings such as $1, $2 etc. in the -- message are substituted with values from the table keys [1], [2] etc. -- For example, if the message "foo-message" had the value 'Foo $2 bar $1.', -- message('foo-message', {'baz', 'qux'}) would return "Foo qux bar baz." --]] local msg = cfg[cfgKey] expectType = expectType or 'string' if type(msg) ~= expectType then error('message: type error in message cfg.' .. cfgKey .. ' (' .. expectType .. ' expected, got ' .. type(msg) .. ')', 2) end if not valArray then return msg end local function getMessageVal(match) match = tonumber(match) return valArray[match] or error('message: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 4) end local ret = ugsub(msg, '$([1-9][0-9]*)', getMessageVal) return ret end p.message = message local function makeWikilink(page, display) if display then return mw.ustring.format('[[%s|%s]]', page, display) else return mw.ustring.format('[[%s]]', page) end end p.makeWikilink = makeWikilink local function makeCategoryLink(cat, sort) local catns = mw.site.namespaces[14].name return makeWikilink(catns .. ':' .. cat, sort) end p.makeCategoryLink = makeCategoryLink local function makeUrlLink(url, display) return mw.ustring.format('[%s %s]', url, display) end p.makeUrlLink = makeUrlLink local function makeToolbar(...) local ret = {} local lim = select('#', ...) if lim < 1 then return nil end for i = 1, lim do ret[#ret + 1] = select(i, ...) end return '<small style="font-style: normal;">(' .. table.concat(ret, ' &#124; ') .. ')</small>' end p.makeToolbar = makeToolbar ---------------------------------------------------------------------------- -- Argument processing ---------------------------------------------------------------------------- local function makeInvokeFunc(funcName) return function (frame) local args = getArgs(frame, { valueFunc = function (key, value) if type(value) == 'string' then value = value:match('^%s*(.-)%s*$') -- Remove whitespace. if key == 'heading' or value ~= '' then return value else return nil end else return value end end }) return p[funcName](args) end end ---------------------------------------------------------------------------- -- Entry points ---------------------------------------------------------------------------- function p.nonexistent(frame) if mw.title.getCurrentTitle().subpageText == 'testcases' then return frame:expandTemplate{title = 'module test cases notice'} else return p.main(frame) end end p.main = makeInvokeFunc('_main') function p._main(args) --[[ -- This function defines logic flow for the module. -- @args - table of arguments passed by the user -- -- Messages: -- 'main-div-id' --> 'template-documentation' -- 'main-div-classes' --> 'template-documentation iezoomfix' --]] local env = p.getEnvironment(args) local root = mw.html.create() root :wikitext(p._getModuleWikitext(args, env)) :wikitext(p.protectionTemplate(env)) :wikitext(p.sandboxNotice(args, env)) -- This div tag is from {{documentation/start box}}, but moving it here -- so that we don't have to worry about unclosed tags. :tag('div') :attr('id', message('main-div-id')) :addClass(message('main-div-classes')) :newline() :wikitext(p._startBox(args, env)) :wikitext(p._content(args, env)) :tag('div') :css('clear', 'both') -- So right or left floating items don't stick out of the doc box. :newline() :done() :done() :wikitext(p._endBox(args, env)) :wikitext(p.addTrackingCategories(env)) return tostring(root) end ---------------------------------------------------------------------------- -- Environment settings ---------------------------------------------------------------------------- function p.getEnvironment(args) --[[ -- Returns a table with information about the environment, including title objects and other namespace- or -- path-related data. -- @args - table of arguments passed by the user -- -- Title objects include: -- env.title - the page we are making documentation for (usually the current title) -- env.templateTitle - the template (or module, file, etc.) -- env.docTitle - the /doc subpage. -- env.sandboxTitle - the /sandbox subpage. -- env.testcasesTitle - the /testcases subpage. -- env.printTitle - the print version of the template, located at the /Print subpage. -- -- Data includes: -- env.protectionLevels - the protection levels table of the title object. -- env.subjectSpace - the number of the title's subject namespace. -- env.docSpace - the number of the namespace the title puts its documentation in. -- env.docpageBase - the text of the base page of the /doc, /sandbox and /testcases pages, with namespace. -- env.compareUrl - URL of the Special:ComparePages page comparing the sandbox with the template. -- -- All table lookups are passed through pcall so that errors are caught. If an error occurs, the value -- returned will be nil. --]] local env, envFuncs = {}, {} -- Set up the metatable. If triggered we call the corresponding function in the envFuncs table. The value -- returned by that function is memoized in the env table so that we don't call any of the functions -- more than once. (Nils won't be memoized.) setmetatable(env, { __index = function (t, key) local envFunc = envFuncs[key] if envFunc then local success, val = pcall(envFunc) if success then env[key] = val -- Memoise the value. return val end end return nil end }) function envFuncs.title() -- The title object for the current page, or a test page passed with args.page. local title local titleArg = args.page if titleArg then title = mw.title.new(titleArg) else title = mw.title.getCurrentTitle() end return title end function envFuncs.templateTitle() --[[ -- The template (or module, etc.) title object. -- Messages: -- 'sandbox-subpage' --> 'sandbox' -- 'testcases-subpage' --> 'testcases' --]] local subjectSpace = env.subjectSpace local title = env.title local subpage = title.subpageText if subpage == message('sandbox-subpage') or subpage == message('testcases-subpage') then return mw.title.makeTitle(subjectSpace, title.baseText) else return mw.title.makeTitle(subjectSpace, title.text) end end function envFuncs.docTitle() --[[ -- Title object of the /doc subpage. -- Messages: -- 'doc-subpage' --> 'doc' --]] local title = env.title local docname = args[1] -- User-specified doc page. local docpage if docname then docpage = docname else docpage = env.docpageBase .. '/' .. message('doc-subpage') end return mw.title.new(docpage) end function envFuncs.sandboxTitle() --[[ -- Title object for the /sandbox subpage. -- Messages: -- 'sandbox-subpage' --> 'sandbox' --]] return mw.title.new(env.docpageBase .. '/' .. message('sandbox-subpage')) end function envFuncs.testcasesTitle() --[[ -- Title object for the /testcases subpage. -- Messages: -- 'testcases-subpage' --> 'testcases' --]] return mw.title.new(env.docpageBase .. '/' .. message('testcases-subpage')) end function envFuncs.printTitle() --[[ -- Title object for the /Print subpage. -- Messages: -- 'print-subpage' --> 'Print' --]] return env.templateTitle:subPageTitle(message('print-subpage')) end function envFuncs.protectionLevels() -- The protection levels table of the title object. return env.title.protectionLevels end function envFuncs.subjectSpace() -- The subject namespace number. return mw.site.namespaces[env.title.namespace].subject.id end function envFuncs.docSpace() -- The documentation namespace number. For most namespaces this is the same as the -- subject namespace. However, pages in the Article, File, MediaWiki or Category -- namespaces must have their /doc, /sandbox and /testcases pages in talk space. local subjectSpace = env.subjectSpace if subjectSpace == 0 or subjectSpace == 6 or subjectSpace == 8 or subjectSpace == 14 then return subjectSpace + 1 else return subjectSpace end end function envFuncs.docpageBase() -- The base page of the /doc, /sandbox, and /testcases subpages. -- For some namespaces this is the talk page, rather than the template page. local templateTitle = env.templateTitle local docSpace = env.docSpace local docSpaceText = mw.site.namespaces[docSpace].name -- Assemble the link. docSpace is never the main namespace, so we can hardcode the colon. return docSpaceText .. ':' .. templateTitle.text end function envFuncs.compareUrl() -- Diff link between the sandbox and the main template using [[Special:ComparePages]]. local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle if templateTitle.exists and sandboxTitle.exists then local compareUrl = mw.uri.fullUrl( 'Special:ComparePages', {page1 = templateTitle.prefixedText, page2 = sandboxTitle.prefixedText} ) return tostring(compareUrl) else return nil end end return env end ---------------------------------------------------------------------------- -- Auxiliary templates ---------------------------------------------------------------------------- p.getModuleWikitext = makeInvokeFunc('_getModuleWikitext') function p._getModuleWikitext(args, env) local currentTitle = mw.title.getCurrentTitle() if currentTitle.contentModel ~= 'Scribunto' then return end pcall(require, currentTitle.prefixedText) -- if it fails, we don't care local moduleWikitext = package.loaded["Module:Module wikitext"] if moduleWikitext then return moduleWikitext.main() end end function p.sandboxNotice(args, env) --[=[ -- Generates a sandbox notice for display above sandbox pages. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-notice-image' --> '[[Image:Sandbox.svg|50px|alt=|link=]]' -- 'sandbox-notice-blurb' --> 'This is the $1 for $2.' -- 'sandbox-notice-diff-blurb' --> 'This is the $1 for $2 ($3).' -- 'sandbox-notice-pagetype-template' --> '[[Wikipedia:Template test cases|template sandbox]] page' -- 'sandbox-notice-pagetype-module' --> '[[Wikipedia:Template test cases|module sandbox]] page' -- 'sandbox-notice-pagetype-other' --> 'sandbox page' -- 'sandbox-notice-compare-link-display' --> 'diff' -- 'sandbox-notice-testcases-blurb' --> 'See also the companion subpage for $1.' -- 'sandbox-notice-testcases-link-display' --> 'test cases' -- 'sandbox-category' --> 'Template sandboxes' --]=] local title = env.title local sandboxTitle = env.sandboxTitle local templateTitle = env.templateTitle local subjectSpace = env.subjectSpace if not (subjectSpace and title and sandboxTitle and templateTitle and mw.title.equals(title, sandboxTitle)) then return nil end -- Build the table of arguments to pass to {{ombox}}. We need just two fields, "image" and "text". local omargs = {} omargs.image = message('sandbox-notice-image') -- Get the text. We start with the opening blurb, which is something like -- "This is the template sandbox for [[Template:Foo]] (diff)." local text = '' local pagetype if subjectSpace == 10 then pagetype = message('sandbox-notice-pagetype-template') elseif subjectSpace == 828 then pagetype = message('sandbox-notice-pagetype-module') else pagetype = message('sandbox-notice-pagetype-other') end local templateLink = makeWikilink(templateTitle.prefixedText) local compareUrl = env.compareUrl if compareUrl then local compareDisplay = message('sandbox-notice-compare-link-display') local compareLink = makeUrlLink(compareUrl, compareDisplay) text = text .. message('sandbox-notice-diff-blurb', {pagetype, templateLink, compareLink}) else text = text .. message('sandbox-notice-blurb', {pagetype, templateLink}) end -- Get the test cases page blurb if the page exists. This is something like -- "See also the companion subpage for [[Template:Foo/testcases|test cases]]." local testcasesTitle = env.testcasesTitle if testcasesTitle and testcasesTitle.exists then if testcasesTitle.contentModel == "Scribunto" then local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') local testcasesRunLinkDisplay = message('sandbox-notice-testcases-run-link-display') local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) text = text .. '<br />' .. message('sandbox-notice-testcases-run-blurb', {testcasesLink, testcasesRunLink}) else local testcasesLinkDisplay = message('sandbox-notice-testcases-link-display') local testcasesLink = makeWikilink(testcasesTitle.prefixedText, testcasesLinkDisplay) text = text .. '<br />' .. message('sandbox-notice-testcases-blurb', {testcasesLink}) end end -- Add the sandbox to the sandbox category. text = text .. makeCategoryLink(message('sandbox-category')) omargs.text = text local ret = '<div style="clear: both;"></div>' ret = ret .. messageBox.main('ombox', omargs) return ret end function p.protectionTemplate(env) -- Generates the padlock icon in the top right. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'protection-template' --> 'pp-template' -- 'protection-template-args' --> {docusage = 'yes'} local protectionLevels, mProtectionBanner local title = env.title protectionLevels = env.protectionLevels if not protectionLevels then return nil end local editProt = protectionLevels.edit and protectionLevels.edit[1] local moveProt = protectionLevels.move and protectionLevels.move[1] if editProt then -- The page is edit-protected. mProtectionBanner = require('Module:Protection banner') local reason = message('protection-reason-edit') return mProtectionBanner._main{reason, small = true} elseif moveProt and moveProt ~= 'autoconfirmed' then -- The page is move-protected but not edit-protected. Exclude move -- protection with the level "autoconfirmed", as this is equivalent to -- no move protection at all. mProtectionBanner = require('Module:Protection banner') return mProtectionBanner._main{action = 'move', small = true} else return nil end end ---------------------------------------------------------------------------- -- Start box ---------------------------------------------------------------------------- p.startBox = makeInvokeFunc('_startBox') function p._startBox(args, env) --[[ -- This function generates the start box. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- The actual work is done by p.makeStartBoxLinksData and p.renderStartBoxLinks which make -- the [view] [edit] [history] [purge] links, and by p.makeStartBoxData and p.renderStartBox -- which generate the box HTML. --]] env = env or p.getEnvironment(args) local links local content = args.content if not content or args[1] then -- No need to include the links if the documentation is on the template page itself. local linksData = p.makeStartBoxLinksData(args, env) if linksData then links = p.renderStartBoxLinks(linksData) end end -- Generate the start box html. local data = p.makeStartBoxData(args, env, links) if data then return p.renderStartBox(data) else -- User specified no heading. return nil end end function p.makeStartBoxLinksData(args, env) --[[ -- Does initial processing of data to make the [view] [edit] [history] [purge] links. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'view-link-display' --> 'view' -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'purge-link-display' --> 'purge' -- 'file-docpage-preload' --> 'Template:Documentation/preload-filespace' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'docpage-preload' --> 'Template:Documentation/preload' -- 'create-link-display' --> 'create' --]] local subjectSpace = env.subjectSpace local title = env.title local docTitle = env.docTitle if not title or not docTitle then return nil end if docTitle.isRedirect then docTitle = docTitle.redirectTarget end local data = {} data.title = title data.docTitle = docTitle -- View, display, edit, and purge links if /doc exists. data.viewLinkDisplay = message('view-link-display') data.editLinkDisplay = message('edit-link-display') data.historyLinkDisplay = message('history-link-display') data.purgeLinkDisplay = message('purge-link-display') -- Create link if /doc doesn't exist. local preload = args.preload if not preload then if subjectSpace == 6 then -- File namespace preload = message('file-docpage-preload') elseif subjectSpace == 828 then -- Module namespace preload = message('module-preload') else preload = message('docpage-preload') end end data.preload = preload data.createLinkDisplay = message('create-link-display') return data end function p.renderStartBoxLinks(data) --[[ -- Generates the [view][edit][history][purge] or [create] links from the data table. -- @data - a table of data generated by p.makeStartBoxLinksData --]] local function escapeBrackets(s) -- Escapes square brackets with HTML entities. s = s:gsub('%[', '&#91;') -- Replace square brackets with HTML entities. s = s:gsub('%]', '&#93;') return s end local ret local docTitle = data.docTitle local title = data.title if docTitle.exists then local viewLink = makeWikilink(docTitle.prefixedText, data.viewLinkDisplay) local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, data.editLinkDisplay) local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, data.historyLinkDisplay) local purgeLink = makeUrlLink(title:fullUrl{action = 'purge'}, data.purgeLinkDisplay) ret = '[%s] [%s] [%s] [%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, viewLink, editLink, historyLink, purgeLink) else local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = data.preload}, data.createLinkDisplay) ret = '[%s]' ret = escapeBrackets(ret) ret = mw.ustring.format(ret, createLink) end return ret end function p.makeStartBoxData(args, env, links) --[=[ -- Does initial processing of data to pass to the start-box render function, p.renderStartBox. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- @links - a string containing the [view][edit][history][purge] links - could be nil if there's an error. -- -- Messages: -- 'documentation-icon-wikitext' --> '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- 'template-namespace-heading' --> 'Template documentation' -- 'module-namespace-heading' --> 'Module documentation' -- 'file-namespace-heading' --> 'Summary' -- 'other-namespaces-heading' --> 'Documentation' -- 'start-box-linkclasses' --> 'mw-editsection-like plainlinks' -- 'start-box-link-id' --> 'doc_editlinks' -- 'testcases-create-link-display' --> 'create' --]=] local subjectSpace = env.subjectSpace if not subjectSpace then -- Default to an "other namespaces" namespace, so that we get at least some output -- if an error occurs. subjectSpace = 2 end local data = {} -- Heading local heading = args.heading -- Blank values are not removed. if heading == '' then -- Don't display the start box if the heading arg is defined but blank. return nil end if heading then data.heading = heading elseif subjectSpace == 10 then -- Template namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('template-namespace-heading') elseif subjectSpace == 828 then -- Module namespace data.heading = message('documentation-icon-wikitext') .. ' ' .. message('module-namespace-heading') elseif subjectSpace == 6 then -- File namespace data.heading = message('file-namespace-heading') else data.heading = message('other-namespaces-heading') end -- Heading CSS local headingStyle = args['heading-style'] if headingStyle then data.headingStyleText = headingStyle elseif subjectSpace == 10 then -- We are in the template or template talk namespaces. data.headingFontWeight = 'bold' data.headingFontSize = '125%' else data.headingFontSize = '150%' end -- Data for the [view][edit][history][purge] or [create] links. if links then data.linksClass = message('start-box-linkclasses') data.linksId = message('start-box-link-id') data.links = links end return data end function p.renderStartBox(data) -- Renders the start box html. -- @data - a table of data generated by p.makeStartBoxData. local sbox = mw.html.create('div') sbox :css('padding-bottom', '3px') :css('border-bottom', '1px solid #aaa') :css('margin-bottom', '1ex') :newline() :tag('span') :cssText(data.headingStyleText) :css('font-weight', data.headingFontWeight) :css('font-size', data.headingFontSize) :wikitext(data.heading) local links = data.links if links then sbox:tag('span') :addClass(data.linksClass) :attr('id', data.linksId) :wikitext(links) end return tostring(sbox) end ---------------------------------------------------------------------------- -- Documentation content ---------------------------------------------------------------------------- p.content = makeInvokeFunc('_content') function p._content(args, env) -- Displays the documentation contents -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment env = env or p.getEnvironment(args) local docTitle = env.docTitle local content = args.content if not content and docTitle and docTitle.exists then content = args._content or mw.getCurrentFrame():expandTemplate{title = docTitle.prefixedText} end -- The line breaks below are necessary so that "=== Headings ===" at the start and end -- of docs are interpreted correctly. return '\n' .. (content or '') .. '\n' end p.contentTitle = makeInvokeFunc('_contentTitle') function p._contentTitle(args, env) env = env or p.getEnvironment(args) local docTitle = env.docTitle if not args.content and docTitle and docTitle.exists then return docTitle.prefixedText else return '' end end ---------------------------------------------------------------------------- -- End box ---------------------------------------------------------------------------- p.endBox = makeInvokeFunc('_endBox') function p._endBox(args, env) --[=[ -- This function generates the end box (also known as the link box). -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'fmbox-id' --> 'documentation-meta-data' -- 'fmbox-style' --> 'background-color: #ecfcf4' -- 'fmbox-textstyle' --> 'font-style: italic' -- -- The HTML is generated by the {{fmbox}} template, courtesy of [[Module:Message box]]. --]=] -- Get environment data. env = env or p.getEnvironment(args) local subjectSpace = env.subjectSpace local docTitle = env.docTitle if not subjectSpace or not docTitle then return nil end -- Check whether we should output the end box at all. Add the end -- box by default if the documentation exists or if we are in the -- user, module or template namespaces. local linkBox = args['link box'] if linkBox == 'off' or not ( docTitle.exists or subjectSpace == 2 or subjectSpace == 828 or subjectSpace == 10 ) then return nil end -- Assemble the arguments for {{fmbox}}. local fmargs = {} fmargs.id = message('fmbox-id') -- Sets 'documentation-meta-data' fmargs.image = 'none' fmargs.style = message('fmbox-style') -- Sets 'background-color: #ecfcf4' fmargs.textstyle = message('fmbox-textstyle') -- 'font-style: italic;' -- Assemble the fmbox text field. local text = '' if linkBox then text = text .. linkBox else text = text .. (p.makeDocPageBlurb(args, env) or '') -- "This documentation is transcluded from [[Foo]]." if subjectSpace == 2 or subjectSpace == 10 or subjectSpace == 828 then -- We are in the user, template or module namespaces. -- Add sandbox and testcases links. -- "Editors can experiment in this template's sandbox and testcases pages." text = text .. (p.makeExperimentBlurb(args, env) or '') text = text .. '<br />' if not args.content and not args[1] then -- "Please add categories to the /doc subpage." -- Don't show this message with inline docs or with an explicitly specified doc page, -- as then it is unclear where to add the categories. text = text .. (p.makeCategoriesBlurb(args, env) or '') end text = text .. ' ' .. (p.makeSubpagesBlurb(args, env) or '') --"Subpages of this template" local printBlurb = p.makePrintBlurb(args, env) -- Two-line blurb about print versions of templates. if printBlurb then text = text .. '<br />' .. printBlurb end end end fmargs.text = text return messageBox.main('fmbox', fmargs) end function p.makeDocPageBlurb(args, env) --[=[ -- Makes the blurb "This documentation is transcluded from [[Template:Foo]] (edit, history)". -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'edit-link-display' --> 'edit' -- 'history-link-display' --> 'history' -- 'transcluded-from-blurb' --> -- 'The above [[Wikipedia:Template documentation|documentation]] -- is [[Wikipedia:Transclusion|transcluded]] from $1.' -- 'module-preload' --> 'Template:Documentation/preload-module-doc' -- 'create-link-display' --> 'create' -- 'create-module-doc-blurb' --> -- 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' --]=] local docTitle = env.docTitle if not docTitle then return nil end local ret if docTitle.exists then -- /doc exists; link to it. local docLink = makeWikilink(docTitle.prefixedText) local editUrl = docTitle:fullUrl{action = 'edit'} local editDisplay = message('edit-link-display') local editLink = makeUrlLink(editUrl, editDisplay) local historyUrl = docTitle:fullUrl{action = 'history'} local historyDisplay = message('history-link-display') local historyLink = makeUrlLink(historyUrl, historyDisplay) ret = message('transcluded-from-blurb', {docLink}) .. ' ' .. makeToolbar(editLink, historyLink) .. '<br />' elseif env.subjectSpace == 828 then -- /doc does not exist; ask to create it. local createUrl = docTitle:fullUrl{action = 'edit', preload = message('module-preload')} local createDisplay = message('create-link-display') local createLink = makeUrlLink(createUrl, createDisplay) ret = message('create-module-doc-blurb', {createLink}) .. '<br />' end return ret end function p.makeExperimentBlurb(args, env) --[[ -- Renders the text "Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'sandbox-link-display' --> 'sandbox' -- 'sandbox-edit-link-display' --> 'edit' -- 'compare-link-display' --> 'diff' -- 'module-sandbox-preload' --> 'Template:Documentation/preload-module-sandbox' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'sandbox-create-link-display' --> 'create' -- 'mirror-edit-summary' --> 'Create sandbox version of $1' -- 'mirror-link-display' --> 'mirror' -- 'mirror-link-preload' --> 'Template:Documentation/mirror' -- 'sandbox-link-display' --> 'sandbox' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display'--> 'edit' -- 'template-sandbox-preload' --> 'Template:Documentation/preload-sandbox' -- 'testcases-create-link-display' --> 'create' -- 'testcases-link-display' --> 'testcases' -- 'testcases-edit-link-display' --> 'edit' -- 'module-testcases-preload' --> 'Template:Documentation/preload-module-testcases' -- 'template-testcases-preload' --> 'Template:Documentation/preload-testcases' -- 'experiment-blurb-module' --> 'Editors can experiment in this module's $1 and $2 pages.' -- 'experiment-blurb-template' --> 'Editors can experiment in this template's $1 and $2 pages.' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle local sandboxTitle = env.sandboxTitle local testcasesTitle = env.testcasesTitle local templatePage = templateTitle.prefixedText if not subjectSpace or not templateTitle or not sandboxTitle or not testcasesTitle then return nil end -- Make links. local sandboxLinks, testcasesLinks if sandboxTitle.exists then local sandboxPage = sandboxTitle.prefixedText local sandboxDisplay = message('sandbox-link-display') local sandboxLink = makeWikilink(sandboxPage, sandboxDisplay) local sandboxEditUrl = sandboxTitle:fullUrl{action = 'edit'} local sandboxEditDisplay = message('sandbox-edit-link-display') local sandboxEditLink = makeUrlLink(sandboxEditUrl, sandboxEditDisplay) local compareUrl = env.compareUrl local compareLink if compareUrl then local compareDisplay = message('compare-link-display') compareLink = makeUrlLink(compareUrl, compareDisplay) end sandboxLinks = sandboxLink .. ' ' .. makeToolbar(sandboxEditLink, compareLink) else local sandboxPreload if subjectSpace == 828 then sandboxPreload = message('module-sandbox-preload') else sandboxPreload = message('template-sandbox-preload') end local sandboxCreateUrl = sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload} local sandboxCreateDisplay = message('sandbox-create-link-display') local sandboxCreateLink = makeUrlLink(sandboxCreateUrl, sandboxCreateDisplay) local mirrorSummary = message('mirror-edit-summary', {makeWikilink(templatePage)}) local mirrorPreload = message('mirror-link-preload') local mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = mirrorPreload, summary = mirrorSummary} if subjectSpace == 828 then mirrorUrl = sandboxTitle:fullUrl{action = 'edit', preload = templateTitle.prefixedText, summary = mirrorSummary} end local mirrorDisplay = message('mirror-link-display') local mirrorLink = makeUrlLink(mirrorUrl, mirrorDisplay) sandboxLinks = message('sandbox-link-display') .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink) end if testcasesTitle.exists then local testcasesPage = testcasesTitle.prefixedText local testcasesDisplay = message('testcases-link-display') local testcasesLink = makeWikilink(testcasesPage, testcasesDisplay) local testcasesEditUrl = testcasesTitle:fullUrl{action = 'edit'} local testcasesEditDisplay = message('testcases-edit-link-display') local testcasesEditLink = makeUrlLink(testcasesEditUrl, testcasesEditDisplay) -- for Modules, add testcases run link if exists if testcasesTitle.contentModel == "Scribunto" and testcasesTitle.talkPageTitle and testcasesTitle.talkPageTitle.exists then local testcasesRunLinkDisplay = message('testcases-run-link-display') local testcasesRunLink = makeWikilink(testcasesTitle.talkPageTitle.prefixedText, testcasesRunLinkDisplay) testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink, testcasesRunLink) else testcasesLinks = testcasesLink .. ' ' .. makeToolbar(testcasesEditLink) end else local testcasesPreload if subjectSpace == 828 then testcasesPreload = message('module-testcases-preload') else testcasesPreload = message('template-testcases-preload') end local testcasesCreateUrl = testcasesTitle:fullUrl{action = 'edit', preload = testcasesPreload} local testcasesCreateDisplay = message('testcases-create-link-display') local testcasesCreateLink = makeUrlLink(testcasesCreateUrl, testcasesCreateDisplay) testcasesLinks = message('testcases-link-display') .. ' ' .. makeToolbar(testcasesCreateLink) end local messageName if subjectSpace == 828 then messageName = 'experiment-blurb-module' else messageName = 'experiment-blurb-template' end return message(messageName, {sandboxLinks, testcasesLinks}) end function p.makeCategoriesBlurb(args, env) --[[ -- Generates the text "Please add categories to the /doc subpage." -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'doc-link-display' --> '/doc' -- 'add-categories-blurb' --> 'Please add categories to the $1 subpage.' --]] local docTitle = env.docTitle if not docTitle then return nil end local docPathLink = makeWikilink(docTitle.prefixedText, message('doc-link-display')) return message('add-categories-blurb', {docPathLink}) end function p.makeSubpagesBlurb(args, env) --[[ -- Generates the "Subpages of this template" link. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'template-pagetype' --> 'template' -- 'module-pagetype' --> 'module' -- 'default-pagetype' --> 'page' -- 'subpages-link-display' --> 'Subpages of this $1' --]] local subjectSpace = env.subjectSpace local templateTitle = env.templateTitle if not subjectSpace or not templateTitle then return nil end local pagetype if subjectSpace == 10 then pagetype = message('template-pagetype') elseif subjectSpace == 828 then pagetype = message('module-pagetype') else pagetype = message('default-pagetype') end local subpagesLink = makeWikilink( 'Special:PrefixIndex/' .. templateTitle.prefixedText .. '/', message('subpages-link-display', {pagetype}) ) return message('subpages-blurb', {subpagesLink}) end function p.makePrintBlurb(args, env) --[=[ -- Generates the blurb displayed when there is a print version of the template available. -- @args - a table of arguments passed by the user -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- -- Messages: -- 'print-link-display' --> '/Print' -- 'print-blurb' --> 'A [[Help:Books/for experts#Improving the book layout|print version]]' -- .. ' of this template exists at $1.' -- .. ' If you make a change to this template, please update the print version as well.' -- 'display-print-category' --> true -- 'print-category' --> 'Templates with print versions' --]=] local printTitle = env.printTitle if not printTitle then return nil end local ret if printTitle.exists then local printLink = makeWikilink(printTitle.prefixedText, message('print-link-display')) ret = message('print-blurb', {printLink}) local displayPrintCategory = message('display-print-category', nil, 'boolean') if displayPrintCategory then ret = ret .. makeCategoryLink(message('print-category')) end end return ret end ---------------------------------------------------------------------------- -- Tracking categories ---------------------------------------------------------------------------- function p.addTrackingCategories(env) --[[ -- Check if {{documentation}} is transcluded on a /doc or /testcases page. -- @env - environment table containing title objects, etc., generated with p.getEnvironment -- Messages: -- 'display-strange-usage-category' --> true -- 'doc-subpage' --> 'doc' -- 'testcases-subpage' --> 'testcases' -- 'strange-usage-category' --> 'Wikipedia pages with strange ((documentation)) usage' -- -- /testcases pages in the module namespace are not categorised, as they may have -- {{documentation}} transcluded automatically. --]] local title = env.title local subjectSpace = env.subjectSpace if not title or not subjectSpace then return nil end local subpage = title.subpageText local ret = '' if message('display-strange-usage-category', nil, 'boolean') and ( subpage == message('doc-subpage') or subjectSpace ~= 828 and subpage == message('testcases-subpage') ) then ret = ret .. makeCategoryLink(message('strange-usage-category')) end return ret end return p et62wy68byfbzro3kepvlo2831bqq99 Module:Documentation/config 828 883 1998 1997 2020-09-29T19:15:37Z Chrisb 1 1 revision imported 1997 Scribunto text/plain ---------------------------------------------------------------------------------------------------- -- -- Configuration for Module:Documentation -- -- Here you can set the values of the parameters and messages used in Module:Documentation to -- localise it to your wiki and your language. Unless specified otherwise, values given here -- should be string values. ---------------------------------------------------------------------------------------------------- local cfg = {} -- Do not edit this line. ---------------------------------------------------------------------------------------------------- -- Protection template configuration ---------------------------------------------------------------------------------------------------- -- cfg['protection-reason-edit'] -- The protection reason for edit-protected templates to pass to -- [[Module:Protection banner]]. cfg['protection-reason-edit'] = 'template' --[[ ---------------------------------------------------------------------------------------------------- -- Sandbox notice configuration -- -- On sandbox pages the module can display a template notifying users that the current page is a -- sandbox, and the location of test cases pages, etc. The module decides whether the page is a -- sandbox or not based on the value of cfg['sandbox-subpage']. The following settings configure the -- messages that the notices contains. ---------------------------------------------------------------------------------------------------- --]] -- cfg['sandbox-notice-image'] -- The image displayed in the sandbox notice. cfg['sandbox-notice-image'] = '[[Image:Sandbox.svg|50px|alt=|link=]]' --[[ -- cfg['sandbox-notice-pagetype-template'] -- cfg['sandbox-notice-pagetype-module'] -- cfg['sandbox-notice-pagetype-other'] -- The page type of the sandbox page. The message that is displayed depends on the current subject -- namespace. This message is used in either cfg['sandbox-notice-blurb'] or -- cfg['sandbox-notice-diff-blurb']. --]] cfg['sandbox-notice-pagetype-template'] = '[[Wikipedia:Template test cases|template sandbox]] page' cfg['sandbox-notice-pagetype-module'] = '[[Wikipedia:Template test cases|module sandbox]] page' cfg['sandbox-notice-pagetype-other'] = 'sandbox page' --[[ -- cfg['sandbox-notice-blurb'] -- cfg['sandbox-notice-diff-blurb'] -- cfg['sandbox-notice-diff-display'] -- Either cfg['sandbox-notice-blurb'] or cfg['sandbox-notice-diff-blurb'] is the opening sentence -- of the sandbox notice. The latter has a diff link, but the former does not. $1 is the page -- type, which is either cfg['sandbox-notice-pagetype-template'], -- cfg['sandbox-notice-pagetype-module'] or cfg['sandbox-notice-pagetype-other'] depending what -- namespace we are in. $2 is a link to the main template page, and $3 is a diff link between -- the sandbox and the main template. The display value of the diff link is set by -- cfg['sandbox-notice-compare-link-display']. --]] cfg['sandbox-notice-blurb'] = 'This is the $1 for $2.' cfg['sandbox-notice-diff-blurb'] = 'This is the $1 for $2 ($3).' cfg['sandbox-notice-compare-link-display'] = 'diff' --[[ -- cfg['sandbox-notice-testcases-blurb'] -- cfg['sandbox-notice-testcases-link-display'] -- cfg['sandbox-notice-testcases-run-blurb'] -- cfg['sandbox-notice-testcases-run-link-display'] -- cfg['sandbox-notice-testcases-blurb'] is a sentence notifying the user that there is a test cases page -- corresponding to this sandbox that they can edit. $1 is a link to the test cases page. -- cfg['sandbox-notice-testcases-link-display'] is the display value for that link. -- cfg['sandbox-notice-testcases-run-blurb'] is a sentence notifying the user that there is a test cases page -- corresponding to this sandbox that they can edit, along with a link to run it. $1 is a link to the test -- cases page, and $2 is a link to the page to run it. -- cfg['sandbox-notice-testcases-run-link-display'] is the display value for the link to run the test -- cases. --]] cfg['sandbox-notice-testcases-blurb'] = 'See also the companion subpage for $1.' cfg['sandbox-notice-testcases-link-display'] = 'test cases' cfg['sandbox-notice-testcases-run-blurb'] = 'See also the companion subpage for $1 ($2).' cfg['sandbox-notice-testcases-run-link-display'] = 'run' -- cfg['sandbox-category'] -- A category to add to all template sandboxes. cfg['sandbox-category'] = 'Template sandboxes' ---------------------------------------------------------------------------------------------------- -- Start box configuration ---------------------------------------------------------------------------------------------------- -- cfg['documentation-icon-wikitext'] -- The wikitext for the icon shown at the top of the template. cfg['documentation-icon-wikitext'] = '[[File:Test Template Info-Icon - Version (2).svg|50px|link=|alt=]]' -- cfg['template-namespace-heading'] -- The heading shown in the template namespace. cfg['template-namespace-heading'] = 'Template documentation' -- cfg['module-namespace-heading'] -- The heading shown in the module namespace. cfg['module-namespace-heading'] = 'Module documentation' -- cfg['file-namespace-heading'] -- The heading shown in the file namespace. cfg['file-namespace-heading'] = 'Summary' -- cfg['other-namespaces-heading'] -- The heading shown in other namespaces. cfg['other-namespaces-heading'] = 'Documentation' -- cfg['view-link-display'] -- The text to display for "view" links. cfg['view-link-display'] = 'view' -- cfg['edit-link-display'] -- The text to display for "edit" links. cfg['edit-link-display'] = 'edit' -- cfg['history-link-display'] -- The text to display for "history" links. cfg['history-link-display'] = 'history' -- cfg['purge-link-display'] -- The text to display for "purge" links. cfg['purge-link-display'] = 'purge' -- cfg['create-link-display'] -- The text to display for "create" links. cfg['create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Link box (end box) configuration ---------------------------------------------------------------------------------------------------- -- cfg['transcluded-from-blurb'] -- Notice displayed when the docs are transcluded from another page. $1 is a wikilink to that page. cfg['transcluded-from-blurb'] = 'The above [[Wikipedia:Template documentation|documentation]] is [[Wikipedia:Transclusion|transcluded]] from $1.' --[[ -- cfg['create-module-doc-blurb'] -- Notice displayed in the module namespace when the documentation subpage does not exist. -- $1 is a link to create the documentation page with the preload cfg['module-preload'] and the -- display cfg['create-link-display']. --]] cfg['create-module-doc-blurb'] = 'You might want to $1 a documentation page for this [[Wikipedia:Lua|Scribunto module]].' ---------------------------------------------------------------------------------------------------- -- Experiment blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['experiment-blurb-template'] -- cfg['experiment-blurb-module'] -- The experiment blurb is the text inviting editors to experiment in sandbox and test cases pages. -- It is only shown in the template and module namespaces. With the default English settings, it -- might look like this: -- -- Editors can experiment in this template's sandbox (edit | diff) and testcases (edit) pages. -- -- In this example, "sandbox", "edit", "diff", "testcases", and "edit" would all be links. -- -- There are two versions, cfg['experiment-blurb-template'] and cfg['experiment-blurb-module'], depending -- on what namespace we are in. -- -- Parameters: -- -- $1 is a link to the sandbox page. If the sandbox exists, it is in the following format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-edit-link-display'] | cfg['compare-link-display']) -- -- If the sandbox doesn't exist, it is in the format: -- -- cfg['sandbox-link-display'] (cfg['sandbox-create-link-display'] | cfg['mirror-link-display']) -- -- The link for cfg['sandbox-create-link-display'] link preloads the page with cfg['template-sandbox-preload'] -- or cfg['module-sandbox-preload'], depending on the current namespace. The link for cfg['mirror-link-display'] -- loads a default edit summary of cfg['mirror-edit-summary']. -- -- $2 is a link to the test cases page. If the test cases page exists, it is in the following format: -- -- cfg['testcases-link-display'] (cfg['testcases-edit-link-display'] | cfg['testcases-run-link-display']) -- -- If the test cases page doesn't exist, it is in the format: -- -- cfg['testcases-link-display'] (cfg['testcases-create-link-display']) -- -- If the test cases page doesn't exist, the link for cfg['testcases-create-link-display'] preloads the -- page with cfg['template-testcases-preload'] or cfg['module-testcases-preload'], depending on the current -- namespace. --]] cfg['experiment-blurb-template'] = "Editors can experiment in this template's $1 and $2 pages." cfg['experiment-blurb-module'] = "Editors can experiment in this module's $1 and $2 pages." ---------------------------------------------------------------------------------------------------- -- Sandbox link configuration ---------------------------------------------------------------------------------------------------- -- cfg['sandbox-subpage'] -- The name of the template subpage typically used for sandboxes. cfg['sandbox-subpage'] = 'sandbox' -- cfg['template-sandbox-preload'] -- Preload file for template sandbox pages. cfg['template-sandbox-preload'] = 'Template:Documentation/preload-sandbox' -- cfg['module-sandbox-preload'] -- Preload file for Lua module sandbox pages. cfg['module-sandbox-preload'] = 'Template:Documentation/preload-module-sandbox' -- cfg['sandbox-link-display'] -- The text to display for "sandbox" links. cfg['sandbox-link-display'] = 'sandbox' -- cfg['sandbox-edit-link-display'] -- The text to display for sandbox "edit" links. cfg['sandbox-edit-link-display'] = 'edit' -- cfg['sandbox-create-link-display'] -- The text to display for sandbox "create" links. cfg['sandbox-create-link-display'] = 'create' -- cfg['compare-link-display'] -- The text to display for "compare" links. cfg['compare-link-display'] = 'diff' -- cfg['mirror-edit-summary'] -- The default edit summary to use when a user clicks the "mirror" link. $1 is a wikilink to the -- template page. cfg['mirror-edit-summary'] = 'Create sandbox version of $1' -- cfg['mirror-link-display'] -- The text to display for "mirror" links. cfg['mirror-link-display'] = 'mirror' -- cfg['mirror-link-preload'] -- The page to preload when a user clicks the "mirror" link. cfg['mirror-link-preload'] = 'Template:Documentation/mirror' ---------------------------------------------------------------------------------------------------- -- Test cases link configuration ---------------------------------------------------------------------------------------------------- -- cfg['testcases-subpage'] -- The name of the template subpage typically used for test cases. cfg['testcases-subpage'] = 'testcases' -- cfg['template-testcases-preload'] -- Preload file for template test cases pages. cfg['template-testcases-preload'] = 'Template:Documentation/preload-testcases' -- cfg['module-testcases-preload'] -- Preload file for Lua module test cases pages. cfg['module-testcases-preload'] = 'Template:Documentation/preload-module-testcases' -- cfg['testcases-link-display'] -- The text to display for "testcases" links. cfg['testcases-link-display'] = 'testcases' -- cfg['testcases-edit-link-display'] -- The text to display for test cases "edit" links. cfg['testcases-edit-link-display'] = 'edit' -- cfg['testcases-run-link-display'] -- The text to display for test cases "run" links. cfg['testcases-run-link-display'] = 'run' -- cfg['testcases-create-link-display'] -- The text to display for test cases "create" links. cfg['testcases-create-link-display'] = 'create' ---------------------------------------------------------------------------------------------------- -- Add categories blurb configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['add-categories-blurb'] -- Text to direct users to add categories to the /doc subpage. Not used if the "content" or -- "docname fed" arguments are set, as then it is not clear where to add the categories. $1 is a -- link to the /doc subpage with a display value of cfg['doc-link-display']. --]] cfg['add-categories-blurb'] = 'Please add categories to the $1 subpage.' -- cfg['doc-link-display'] -- The text to display when linking to the /doc subpage. cfg['doc-link-display'] = '/doc' ---------------------------------------------------------------------------------------------------- -- Subpages link configuration ---------------------------------------------------------------------------------------------------- --[[ -- cfg['subpages-blurb'] -- The "Subpages of this template" blurb. $1 is a link to the main template's subpages with a -- display value of cfg['subpages-link-display']. In the English version this blurb is simply -- the link followed by a period, and the link display provides the actual text. --]] cfg['subpages-blurb'] = '$1.' --[[ -- cfg['subpages-link-display'] -- The text to display for the "subpages of this page" link. $1 is cfg['template-pagetype'], -- cfg['module-pagetype'] or cfg['default-pagetype'], depending on whether the current page is in -- the template namespace, the module namespace, or another namespace. --]] cfg['subpages-link-display'] = 'Subpages of this $1' -- cfg['template-pagetype'] -- The pagetype to display for template pages. cfg['template-pagetype'] = 'template' -- cfg['module-pagetype'] -- The pagetype to display for Lua module pages. cfg['module-pagetype'] = 'module' -- cfg['default-pagetype'] -- The pagetype to display for pages other than templates or Lua modules. cfg['default-pagetype'] = 'page' ---------------------------------------------------------------------------------------------------- -- Doc link configuration ---------------------------------------------------------------------------------------------------- -- cfg['doc-subpage'] -- The name of the subpage typically used for documentation pages. cfg['doc-subpage'] = 'doc' -- cfg['file-docpage-preload'] -- Preload file for documentation page in the file namespace. cfg['file-docpage-preload'] = 'Template:Documentation/preload-filespace' -- cfg['docpage-preload'] -- Preload file for template documentation pages in all namespaces. cfg['docpage-preload'] = 'Template:Documentation/preload' -- cfg['module-preload'] -- Preload file for Lua module documentation pages. cfg['module-preload'] = 'Template:Documentation/preload-module-doc' ---------------------------------------------------------------------------------------------------- -- Print version configuration ---------------------------------------------------------------------------------------------------- -- cfg['print-subpage'] -- The name of the template subpage used for print versions. cfg['print-subpage'] = 'Print' -- cfg['print-link-display'] -- The text to display when linking to the /Print subpage. cfg['print-link-display'] = '/Print' -- cfg['print-blurb'] -- Text to display if a /Print subpage exists. $1 is a link to the subpage with a display value of cfg['print-link-display']. cfg['print-blurb'] = 'A [[Help:Books/for experts#Improving the book layout|print version]] of this template exists at $1.' .. ' If you make a change to this template, please update the print version as well.' -- cfg['display-print-category'] -- Set to true to enable output of cfg['print-category'] if a /Print subpage exists. -- This should be a boolean value (either true or false). cfg['display-print-category'] = true -- cfg['print-category'] -- Category to output if cfg['display-print-category'] is set to true, and a /Print subpage exists. cfg['print-category'] = 'Templates with print versions' ---------------------------------------------------------------------------------------------------- -- HTML and CSS configuration ---------------------------------------------------------------------------------------------------- -- cfg['main-div-id'] -- The "id" attribute of the main HTML "div" tag. cfg['main-div-id'] = 'template-documentation' -- cfg['main-div-classes'] -- The CSS classes added to the main HTML "div" tag. cfg['main-div-classes'] = 'template-documentation iezoomfix' -- cfg['start-box-linkclasses'] -- The CSS classes used for the [view][edit][history] or [create] links in the start box. cfg['start-box-linkclasses'] = 'mw-editsection-like plainlinks' -- cfg['start-box-link-id'] -- The HTML "id" attribute for the links in the start box. cfg['start-box-link-id'] = 'doc_editlinks' ---------------------------------------------------------------------------------------------------- -- {{fmbox}} template configuration ---------------------------------------------------------------------------------------------------- -- cfg['fmbox-id'] -- The id sent to the "id" parameter of the {{fmbox}} template. cfg['fmbox-id'] = 'documentation-meta-data' -- cfg['fmbox-style'] -- The value sent to the style parameter of {{fmbox}}. cfg['fmbox-style'] = 'background-color: #ecfcf4' -- cfg['fmbox-textstyle'] -- The value sent to the "textstyle parameter of {{fmbox}}. cfg['fmbox-textstyle'] = 'font-style: italic' ---------------------------------------------------------------------------------------------------- -- Tracking category configuration ---------------------------------------------------------------------------------------------------- -- cfg['display-strange-usage-category'] -- Set to true to enable output of cfg['strange-usage-category'] if the module is used on a /doc subpage -- or a /testcases subpage. This should be a boolean value (either true or false). cfg['display-strange-usage-category'] = true -- cfg['strange-usage-category'] -- Category to output if cfg['display-strange-usage-category'] is set to true and the module is used on a -- /doc subpage or a /testcases subpage. cfg['strange-usage-category'] = 'Wikipedia pages with strange ((documentation)) usage' --[[ ---------------------------------------------------------------------------------------------------- -- End configuration -- -- Don't edit anything below this line. ---------------------------------------------------------------------------------------------------- --]] return cfg 6hym6c6py8yoseohy71qvk7kafcy1p5 Module:Effective protection expiry 828 884 2000 1999 2020-09-29T19:15:38Z Chrisb 1 1 revision imported 1999 Scribunto text/plain local p = {} -- Returns the expiry of a restriction of an action on a given title, or unknown if it cannot be known. -- If no title is specified, the title of the page being displayed is used. function p._main(action, pagename) local title if type(pagename) == 'table' and pagename.prefixedText then title = pagename elseif pagename then title = mw.title.new(pagename) else title = mw.title.getCurrentTitle() end pagename = title.prefixedText if action == 'autoreview' then local stabilitySettings = mw.ext.FlaggedRevs.getStabilitySettings(title) return stabilitySettings and stabilitySettings.expiry or 'unknown' elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' then error( 'First parameter must be one of edit, move, create, upload, autoreview', 2 ) end local rawExpiry = mw.getCurrentFrame():callParserFunction('PROTECTIONEXPIRY', action, pagename) if rawExpiry == 'infinity' then return 'infinity' elseif rawExpiry == '' then return 'unknown' else local year, month, day, hour, minute, second = rawExpiry:match( '^(%d%d%d%d)(%d%d)(%d%d)(%d%d)(%d%d)(%d%d)$' ) if year then return string.format( '%s-%s-%sT%s:%s:%s', year, month, day, hour, minute, second ) else error('internal error in Module:Effective protection expiry; malformed expiry timestamp') end end end setmetatable(p, { __index = function(t, k) return function(frame) return t._main(k, frame.args[1]) end end }) return p i1wms02y1w048cq6uttka18a5pjzp63 Module:Effective protection level 828 885 2002 2001 2020-09-29T19:15:38Z Chrisb 1 1 revision imported 2001 Scribunto text/plain local p = {} -- Returns the permission required to perform a given action on a given title. -- If no title is specified, the title of the page being displayed is used. function p._main(action, pagename) local title if type(pagename) == 'table' and pagename.prefixedText then title = pagename elseif pagename then title = mw.title.new(pagename) else title = mw.title.getCurrentTitle() end pagename = title.prefixedText if action == 'autoreview' then local level = mw.ext.FlaggedRevs.getStabilitySettings(title) level = level and level.autoreview if level == 'review' then return 'reviewer' elseif level ~= '' then return level else return nil -- not '*'. a page not being PC-protected is distinct from it being PC-protected with anyone able to review. also not '', as that would mean PC-protected but nobody can review end elseif action ~= 'edit' and action ~= 'move' and action ~= 'create' and action ~= 'upload' and action ~= 'undelete' then error( 'First parameter must be one of edit, move, create, upload, undelete, autoreview', 2 ) end if title.namespace == 8 then -- MediaWiki namespace if title.text:sub(-3) == '.js' or title.text:sub(-4) == '.css' or title.contentModel == 'javascript' or title.contentModel == 'css' then -- site JS or CSS page return 'interfaceadmin' else -- any non-JS/CSS MediaWiki page return 'sysop' end elseif title.namespace == 2 and title.isSubpage then if title.contentModel == 'javascript' or title.contentModel == 'css' then -- user JS or CSS page return 'interfaceadmin' elseif title.contentModel == 'json' then -- user JSON page return 'sysop' end end if action == 'undelete' then return 'sysop' end local level = title.protectionLevels[action] and title.protectionLevels[action][1] if level == 'sysop' or level == 'editprotected' then return 'sysop' elseif title.cascadingProtection.restrictions[action] and title.cascadingProtection.restrictions[action][1] then -- used by a cascading-protected page return 'sysop' elseif level == 'templateeditor' then return 'templateeditor' elseif action == 'move' then local blacklistentry = mw.ext.TitleBlacklist.test('edit', pagename) -- Testing action edit is correct, since this is for the source page. The target page name gets tested with action move. if blacklistentry and not blacklistentry.params.autoconfirmed then return 'templateeditor' elseif title.namespace == 6 then return 'filemover' elseif level == 'extendedconfirmed' then return 'extendedconfirmed' else return 'autoconfirmed' end end local blacklistentry = mw.ext.TitleBlacklist.test(action, pagename) if blacklistentry then if not blacklistentry.params.autoconfirmed then return 'templateeditor' elseif level == 'extendedconfirmed' then return 'extendedconfirmed' else return 'autoconfirmed' end elseif level == 'editsemiprotected' then -- create-semiprotected pages return this for some reason return 'autoconfirmed' elseif level then return level elseif action == 'upload' then return 'autoconfirmed' elseif action == 'create' and title.namespace % 2 == 0 and title.namespace ~= 118 then -- You need to be registered, but not autoconfirmed, to create non-talk pages other than drafts return 'user' else return '*' end end setmetatable(p, { __index = function(t, k) return function(frame) return t._main(k, frame.args[1]) end end }) return p d3lhy0comfcfe9lnnj8klmrfqm1oxw7 Module:File link 828 886 2004 2003 2020-09-29T19:15:38Z Chrisb 1 1 revision imported 2003 Scribunto text/plain -- This module provides a library for formatting file wikilinks. local yesno = require('Module:Yesno') local checkType = require('libraryUtil').checkType local p = {} function p._main(args) checkType('_main', 1, args, 'table') -- This is basically libraryUtil.checkTypeForNamedArg, but we are rolling our -- own function to get the right error level. local function checkArg(key, val, level) if type(val) ~= 'string' then error(string.format( "type error in '%s' parameter of '_main' (expected string, got %s)", key, type(val) ), level) end end local ret = {} -- Adds a positional parameter to the buffer. local function addPositional(key) local val = args[key] if not val then return nil end checkArg(key, val, 4) ret[#ret + 1] = val end -- Adds a named parameter to the buffer. We assume that the parameter name -- is the same as the argument key. local function addNamed(key) local val = args[key] if not val then return nil end checkArg(key, val, 4) ret[#ret + 1] = key .. '=' .. val end -- Filename checkArg('file', args.file, 3) ret[#ret + 1] = 'File:' .. args.file -- Format if args.format then checkArg('format', args.format) if args.formatfile then checkArg('formatfile', args.formatfile) ret[#ret + 1] = args.format .. '=' .. args.formatfile else ret[#ret + 1] = args.format end end -- Border if yesno(args.border) then ret[#ret + 1] = 'border' end addPositional('location') addPositional('alignment') addPositional('size') addNamed('upright') addNamed('link') addNamed('alt') addNamed('page') addNamed('class') addNamed('lang') addNamed('start') addNamed('end') addNamed('thumbtime') addPositional('caption') return string.format('[[%s]]', table.concat(ret, '|')) end function p.main(frame) local origArgs = require('Module:Arguments').getArgs(frame, { wrappers = 'Template:File link' }) if not origArgs.file then error("'file' parameter missing from [[Template:File link]]", 0) end -- Copy the arguments that were passed to a new table to avoid looking up -- every possible parameter in the frame object. local args = {} for k, v in pairs(origArgs) do -- Make _BLANK a special argument to add a blank parameter. For use in -- conditional templates etc. it is useful for blank arguments to be -- ignored, but we still need a way to specify them so that we can do -- things like [[File:Example.png|link=]]. if v == '_BLANK' then v = '' end args[k] = v end return p._main(args) end return p bzc22v133v9z5yc4aisazripn6l94p8 Module:For 828 1603 4854 4853 2020-10-11T05:35:32Z Chrisb 1 1 revision imported 4853 Scribunto text/plain local mArguments --initialize lazily local mHatlist = require('Module:Hatnote list') local mHatnote = require('Module:Hatnote') local yesNo = require('Module:Yesno') local p = {} --Implements {{For}} from the frame --uses capitalized "For" to avoid collision with Lua reserved word "for" function p.For (frame) mArguments = require('Module:Arguments') return p._For(mArguments.getArgs(frame)) end --Implements {{For}} but takes a manual arguments table function p._For (args) local use = args[1] if (not use) then return mHatnote.makeWikitextError( 'no context parameter provided. Use {{other uses}} for "other uses" hatnotes.', 'Template:For#Errors', args.category ) end local pages = {} function two (a, b) return a, b, 1 end --lets us run ipairs from 2 for k, v in two(ipairs(args)) do table.insert(pages, v) end local category = yesNo(args.category) return mHatnote._hatnote( mHatlist.forSeeTableToString({{use = use, pages = pages}}), {selfref = args.selfref} ) .. ( (use == 'other uses') and ((category == true) or (category == nil)) and '[[Category:Hatnote templates using unusual parameters]]' or '' ) end return p 9pm07mvqlrdc1kwj9bb1m1doie9d4xo Module:Hatnote 828 1469 3242 3241 2020-10-11T01:36:00Z Chrisb 1 1 revision imported 3241 Scribunto text/plain -------------------------------------------------------------------------------- -- Module:Hatnote -- -- -- -- This module produces hatnote links and links to related articles. It -- -- implements the {{hatnote}} and {{format link}} meta-templates and includes -- -- helper functions for other Lua hatnote modules. -- -------------------------------------------------------------------------------- local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local checkTypeForNamedArg = libraryUtil.checkTypeForNamedArg local mArguments -- lazily initialise [[Module:Arguments]] local yesno -- lazily initialise [[Module:Yesno]] local p = {} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end function p.findNamespaceId(link, removeColon) -- Finds the namespace id (namespace number) of a link or a pagename. This -- function will not work if the link is enclosed in double brackets. Colons -- are trimmed from the start of the link by default. To skip colon -- trimming, set the removeColon parameter to false. checkType('findNamespaceId', 1, link, 'string') checkType('findNamespaceId', 2, removeColon, 'boolean', true) if removeColon ~= false then link = removeInitialColon(link) end local namespace = link:match('^(.-):') if namespace then local nsTable = mw.site.namespaces[namespace] if nsTable then return nsTable.id end end return 0 end function p.formatPages(...) -- Formats a list of pages using formatLink and returns it as an array. Nil -- values are not allowed. local pages = {...} local ret = {} for i, page in ipairs(pages) do ret[i] = p._formatLink{link = page} end return ret end function p.formatPageTables(...) -- Takes a list of page/display tables and returns it as a list of -- formatted links. Nil values are not allowed. local pages = {...} local links = {} for i, t in ipairs(pages) do checkType('formatPageTables', i, t, 'table') local link = t[1] local display = t[2] links[i] = p._formatLink{link = link, display = display} end return links end function p.makeWikitextError(msg, helpLink, addTrackingCategory, title) -- Formats an error message to be returned to wikitext. If -- addTrackingCategory is not false after being returned from -- [[Module:Yesno]], and if we are not on a talk page, a tracking category -- is added. checkType('makeWikitextError', 1, msg, 'string') checkType('makeWikitextError', 2, helpLink, 'string', true) yesno = require('Module:Yesno') title = title or mw.title.getCurrentTitle() -- Make the help link text. local helpText if helpLink then helpText = ' ([[' .. helpLink .. '|help]])' else helpText = '' end -- Make the category text. local category if not title.isTalkPage -- Don't categorise talk pages and title.namespace ~= 2 -- Don't categorise userspace and yesno(addTrackingCategory) ~= false -- Allow opting out then category = 'Hatnote templates with errors' category = string.format( '[[%s:%s]]', mw.site.namespaces[14].name, category ) else category = '' end return string.format( '<strong class="error">Error: %s%s.</strong>%s', msg, helpText, category ) end function p.disambiguate(page, disambiguator) -- Formats a page title with a disambiguation parenthetical, -- i.e. "Example" → "Example (disambiguation)". checkType('disambiguate', 1, page, 'string') checkType('disambiguate', 2, disambiguator, 'string', true) disambiguator = disambiguator or 'disambiguation' return string.format('%s (%s)', page, disambiguator) end -------------------------------------------------------------------------------- -- Format link -- -- Makes a wikilink from the given link and display values. Links are escaped -- with colons if necessary, and links to sections are detected and displayed -- with " § " as a separator rather than the standard MediaWiki "#". Used in -- the {{format link}} template. -------------------------------------------------------------------------------- function p.formatLink(frame) -- The formatLink export function, for use in templates. yesno = require('Module:Yesno') local args = getArgs(frame) local link = args[1] if not link then return p.makeWikitextError( 'no link specified', 'Template:Format link#Errors', args.category ) end return p._formatLink{ link = link, display = args[2], italicizePage = yesno(args.italicizepage), italicizeSection = yesno(args.italicizesection), } end local function italicize(s) -- Italicize a string. return '<i>' .. s .. '</i>' end local function maybeItalicize(s, shouldItalicize) -- italicize s if s is a string and the shouldItalicize parameter is true. if s and shouldItalicize then return italicize(s) else return s end end local function parseLink(link) -- Parse a link and return a table with the link's components. -- These components are: -- - link: the link, stripped of any initial colon (always present) -- - page: the page name (always present) -- - section: the page name (may be nil) -- - display: the display text, if manually entered after a pipe (may be nil) link = removeInitialColon(link) -- Find whether a faux display value has been added with the {{!}} magic -- word. local prePipe, display = link:match('^(.-)|(.*)$') link = prePipe or link -- Find the page, if it exists. -- For links like [[#Bar]], the page will be nil. local preHash, postHash = link:match('^(.-)#(.*)$') local page if not preHash then -- We have a link like [[Foo]]. page = link elseif preHash ~= '' then -- We have a link like [[Foo#Bar]]. page = preHash end -- Find the section, if it exists. local section if postHash and postHash ~= '' then section = postHash end return { link = link, page = page, section = section, display = display, } end function p._formatLink(options) -- The formatLink export function, for use in modules. checkType('_formatLink', 1, options, 'table') checkTypeForNamedArg('_formatLink', 'link', options.link, 'string', false) checkTypeForNamedArg( '_formatLink', 'display', options.display, 'string', true ) checkTypeForNamedArg( '_formatLink', 'italicizePage', options.italicizePage, 'boolean', true ) checkTypeForNamedArg( '_formatLink', 'italicizeSection', options.italicizeSection, 'boolean', true ) local parsed = parseLink(options.link) local display = options.display or parsed.display -- Deal with the case where we don't have to pipe the link if not display and not parsed.section and not options.italicizePage then return string.format('[[:%s]]', parsed.link) end -- Find the display text for piped links if not display then local page = maybeItalicize(parsed.page, options.italicizePage) local section = maybeItalicize(parsed.section, options.italicizeSection) if not page then display = string.format('§&nbsp;%s', section) elseif section then display = string.format('%s §&nbsp;%s', page, section) else display = page end end return string.format('[[:%s|%s]]', parsed.link, display) end -------------------------------------------------------------------------------- -- Hatnote -- -- Produces standard hatnote text. Implements the {{hatnote}} template. -------------------------------------------------------------------------------- function p.hatnote(frame) local args = getArgs(frame) local s = args[1] local options = {} if not s then return p.makeWikitextError( 'no text specified', 'Template:Hatnote#Errors', args.category ) end options.extraclasses = args.extraclasses options.selfref = args.selfref return p._hatnote(s, options) end function p._hatnote(s, options) checkType('_hatnote', 1, s, 'string') checkType('_hatnote', 2, options, 'table', true) options = options or {} local classes = {'hatnote', 'navigation-not-searchable'} local extraclasses = options.extraclasses local selfref = options.selfref if type(extraclasses) == 'string' then classes[#classes + 1] = extraclasses end if selfref then classes[#classes + 1] = 'selfref' end return string.format( '<div role="note" class="%s">%s</div>', table.concat(classes, ' '), s ) end return p i11f8q2u8pomoj3ukbihsqdql9a3juh Module:Hatnote list 828 1470 3244 3243 2020-10-11T01:36:00Z Chrisb 1 1 revision imported 3243 Scribunto text/plain -------------------------------------------------------------------------------- -- Module:Hatnote list -- -- -- -- This module produces and formats lists for use in hatnotes. In particular, -- -- it implements the for-see list, i.e. lists of "For X, see Y" statements, -- -- as used in {{about}}, {{redirect}}, and their variants. Also introduced -- -- are andList & orList helpers for formatting lists with those conjunctions. -- -------------------------------------------------------------------------------- local mArguments --initialize lazily local mHatnote = require('Module:Hatnote') local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local p = {} -------------------------------------------------------------------------------- -- List stringification helper functions -- -- These functions are used for stringifying lists, usually page lists inside -- the "Y" portion of "For X, see Y" for-see items. -------------------------------------------------------------------------------- --default options table used across the list stringification functions local stringifyListDefaultOptions = { conjunction = "and", separator = ",", altSeparator = ";", space = " ", formatted = false } -- Stringifies a list generically; probably shouldn't be used directly function stringifyList(list, options) -- Type-checks, defaults, and a shortcut checkType("stringifyList", 1, list, "table") if #list == 0 then return nil end checkType("stringifyList", 2, options, "table", true) options = options or {} for k, v in pairs(stringifyListDefaultOptions) do if options[k] == nil then options[k] = v end end local s = options.space -- Format the list if requested if options.formatted then list = mHatnote.formatPages(unpack(list)) end -- Set the separator; if any item contains it, use the alternate separator local separator = options.separator --searches display text only local function searchDisp(t, f) return string.find(string.sub(t, (string.find(t, '|') or 0) + 1), f) end for k, v in pairs(list) do if searchDisp(v, separator) then separator = options.altSeparator break end end -- Set the conjunction, apply Oxford comma, and force a comma if #1 has "§" local conjunction = s .. options.conjunction .. s if #list == 2 and searchDisp(list[1], "§") or #list > 2 then conjunction = separator .. conjunction end -- Return the formatted string return mw.text.listToText(list, separator .. s, conjunction) end --DRY function function conjList (conj, list, fmt) return stringifyList(list, {conjunction = conj, formatted = fmt}) end -- Stringifies lists with "and" or "or" function p.andList (...) return conjList("and", ...) end function p.orList (...) return conjList("or", ...) end -------------------------------------------------------------------------------- -- For see -- -- Makes a "For X, see [[Y]]." list from raw parameters. Intended for the -- {{about}} and {{redirect}} templates and their variants. -------------------------------------------------------------------------------- --default options table used across the forSee family of functions local forSeeDefaultOptions = { andKeyword = 'and', title = mw.title.getCurrentTitle().text, otherText = 'other uses', forSeeForm = 'For %s, see %s.', } --Collapses duplicate punctuation function punctuationCollapse (text) local replacements = { ["%.%.$"] = ".", ["%?%.$"] = "?", ["%!%.$"] = "!", ["%.%]%]%.$"] = ".]]", ["%?%]%]%.$"] = "?]]", ["%!%]%]%.$"] = "!]]" } for k, v in pairs(replacements) do text = string.gsub(text, k, v) end return text end -- Structures arguments into a table for stringification, & options function p.forSeeArgsToTable (args, from, options) -- Type-checks and defaults checkType("forSeeArgsToTable", 1, args, 'table') checkType("forSeeArgsToTable", 2, from, 'number', true) from = from or 1 checkType("forSeeArgsToTable", 3, options, 'table', true) options = options or {} for k, v in pairs(forSeeDefaultOptions) do if options[k] == nil then options[k] = v end end -- maxArg's gotten manually because getArgs() and table.maxn aren't friends local maxArg = 0 for k, v in pairs(args) do if type(k) == 'number' and k > maxArg then maxArg = k end end -- Structure the data out from the parameter list: -- * forTable is the wrapper table, with forRow rows -- * Rows are tables of a "use" string & a "pages" table of pagename strings -- * Blanks are left empty for defaulting elsewhere, but can terminate list local forTable = {} local i = from local terminated = false -- If there is extra text, and no arguments are given, give nil value -- to not produce default of "For other uses, see foo (disambiguation)" if options.extratext and i > maxArg then return nil end -- Loop to generate rows repeat -- New empty row local forRow = {} -- On blank use, assume list's ended & break at end of this loop forRow.use = args[i] if not args[i] then terminated = true end -- New empty list of pages forRow.pages = {} -- Insert first pages item if present table.insert(forRow.pages, args[i + 1]) -- If the param after next is "and", do inner loop to collect params -- until the "and"'s stop. Blanks are ignored: "1|and||and|3" → {1, 3} while args[i + 2] == options.andKeyword do if args[i + 3] then table.insert(forRow.pages, args[i + 3]) end -- Increment to next "and" i = i + 2 end -- Increment to next use i = i + 2 -- Append the row table.insert(forTable, forRow) until terminated or i > maxArg return forTable end -- Stringifies a table as formatted by forSeeArgsToTable function p.forSeeTableToString (forSeeTable, options) -- Type-checks and defaults checkType("forSeeTableToString", 1, forSeeTable, "table", true) checkType("forSeeTableToString", 2, options, "table", true) options = options or {} for k, v in pairs(forSeeDefaultOptions) do if options[k] == nil then options[k] = v end end -- Stringify each for-see item into a list local strList = {} if forSeeTable then for k, v in pairs(forSeeTable) do local useStr = v.use or options.otherText local pagesStr = p.andList(v.pages, true) or mHatnote._formatLink{link = mHatnote.disambiguate(options.title)} local forSeeStr = string.format(options.forSeeForm, useStr, pagesStr) forSeeStr = punctuationCollapse(forSeeStr) table.insert(strList, forSeeStr) end end if options.extratext then table.insert(strList, punctuationCollapse(options.extratext..'.')) end -- Return the concatenated list return table.concat(strList, ' ') end -- Produces a "For X, see [[Y]]" string from arguments. Expects index gaps -- but not blank/whitespace values. Ignores named args and args < "from". function p._forSee (args, from, options) local forSeeTable = p.forSeeArgsToTable(args, from, options) return p.forSeeTableToString(forSeeTable, options) end -- As _forSee, but uses the frame. function p.forSee (frame, from, options) mArguments = require('Module:Arguments') return p._forSee(mArguments.getArgs(frame), from, options) end return p fqf9dfriof1mvsvpj4ulnui0b5k1dz1 Module:High-use 828 887 2006 2005 2020-09-29T19:15:39Z Chrisb 1 1 revision imported 2005 Scribunto text/plain local p = {} local _fetch = require('Module:Transclusion_count').fetch function p.num(frame, count) if count == nil then count = _fetch(frame) end -- Build output string local return_value = "" if count == nil then if frame.args[1] == "risk" then return_value = "a very large number of" else return_value = "many" end else -- Use 2 significant figures for smaller numbers and 3 for larger ones local sigfig = 2 if count >= 100000 then sigfig = 3 end -- Prepare to round to appropriate number of sigfigs local f = math.floor(math.log10(count)) - sigfig + 1 -- Round and insert "approximately" or "+" when appropriate if (frame.args[2] == "yes") or (mw.ustring.sub(frame.args[1],-1) == "+") then -- Round down return_value = string.format("%s+", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) ) * (10^(f))) ) else -- Round to nearest return_value = string.format("approximately&#x20;%s", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) + 0.5) * (10^(f))) ) end -- Insert percent of pages if frame.args["all-pages"] and frame.args["all-pages"] ~= "" then local percent = math.floor( ( (count/frame:callParserFunction('NUMBEROFPAGES', 'R') ) * 100) + 0.5) return_value = string.format("%s&#x20;pages, or roughly %s%% of all", return_value, percent) end end return return_value end -- Actions if there is a large (greater than or equal to 100,000) transclusion count function p.risk(frame) local return_value = "" if frame.args[1] == "risk" then return_value = "risk" else local count = _fetch(frame) if count and count >= 100000 then return_value = "risk" end end return return_value end function p.text(frame, count) local bot_text = "\n\n----\nTransclusion count updated automatically ([[Template:High-use/doc#Technical details|see documentation]])." if frame.args["nobot"] == true then bot_text = "" end if count == nil then count = _fetch(frame) end local return_value = {} local title = mw.title.getCurrentTitle() if title.subpageText == "doc" or title.subpageText == "sandbox" then title = title.basePageTitle end local templatecount = string.format("https://templatecount.toolforge.org/index.php?lang=en&namespace=%s&name=%s",mw.title.getCurrentTitle().namespace,mw.uri.encode(title.text)) local used_on_text = string.format("'''This %s is used on [%s %s pages]'''", (mw.title.getCurrentTitle().namespace == 828 and "Lua module" or "template"), templatecount, p.num(frame, count) ) local sandbox_text = string.format("%s's [[%s/sandbox|/sandbox]] or [[%s/testcases|/testcases]] subpages%s ", (mw.title.getCurrentTitle().namespace == 828 and "module" or "template"), title.fullText, title.fullText, (mw.title.getCurrentTitle().namespace == 828 and "." or ", or in your own [[Wikipedia:Subpages#How to create user subpages|user subpage]].") ) if (frame.args[1] == "risk" or (count and count >= 100000) ) then local info = "" if frame.args["info"] and frame.args["info"] ~= "" then info = "<br />" .. frame.args["info"] end sandbox_text = string.format(".%s<br /> To avoid major disruption and server load, any changes should be tested in the %sThe tested changes can be added to this page in a single edit.&#x20;", info, sandbox_text ) else sandbox_text = string.format(" and changes may be widely noticed. Test changes in the %s", sandbox_text ) end local discussion_text = "Consider discussing changes " if frame.args["2"] and frame.args["2"] ~= "" and frame.args["2"] ~= "yes" then discussion_text = string.format("%sat [[%s]]", discussion_text, frame.args["2"]) else discussion_text = string.format("%son the [[%s|talk page]]", discussion_text, title.talkPageTitle.fullText ) end return table.concat({used_on_text, sandbox_text, discussion_text, " before implementing them.", bot_text}) end function p.main(frame) local count = _fetch(frame) local return_value = "" local image = "[[File:Ambox warning yellow.svg|40px|alt=Warning|link=]]" local type_param = "style" if (frame.args[1] == "risk" or (count and count >= 100000) ) then image = "[[File:Ambox warning orange.svg|40px|alt=Warning|link=]]" type_param = "content" end if frame.args["form"] == "editnotice" then return_value = frame:expandTemplate{ title = 'editnotice', args = { ["image"] = image, ["text"] = p.text(frame, count), ["expiry"] = (frame.args["expiry"] or "") } } else return_value = frame:expandTemplate{ title = 'ombox', args = { ["type"] = type_param, ["image"] = image, ["text"] = p.text(frame, count), ["expiry"] = (frame.args["expiry"] or "") } } end return return_value end return p tbiv1nf83p49sw94e38but34b8fp53e Module:Icon 828 1471 3246 3245 2020-10-11T01:36:01Z Chrisb 1 1 revision imported 3245 Scribunto text/plain -- This module implements [[Template:Icon]]. local data = mw.loadData('Module:Icon/data') local p = {} function p._main(args) local code = args.class or args[1] local iconData if code then code = code:match('^%s*(.-)%s*$'):lower() -- trim whitespace and put in lower case iconData = data[code] end if not iconData then iconData = data._DEFAULT end return string.format( '[[File:%s%s|%s|link=]]', iconData.image, iconData.tooltip and '|' .. iconData.tooltip or '', args.size or '16x16px' ) end function p.main(frame) local args = {} for k, v in pairs(frame:getParent().args) do args[k] = v end return p._main(args) end return p 4z7aot4f3pniw3w3az56t0kryggws40 Module:Icon/data 828 1472 3248 3247 2020-10-11T01:36:01Z Chrisb 1 1 revision imported 3247 Scribunto text/plain -- This module stores icon data for [[Module:Icon]]. -------------------------------------------------------------------------------- -- Icon data -------------------------------------------------------------------------------- local data = { fa = { image = "Featured article star.svg", tooltip = "Featured article", }, far = { image = "Cscr-star piece.png", tooltip = "Featured article review", }, farc = { image = "Cscr-star piece.png", tooltip = "Featured article removal candidate", }, ffa = { aliases = {"dfa"}, image = "Featured article star - cross.svg", tooltip = "Former featured article", }, fac = { aliases = {"fan"}, image = "Cscr-candidate.svg", tooltip = "Featured article candidate", }, ffac = { aliases = {"nofa"}, image = "Featured article star - cross.svg", tooltip = "Failed featured article candidate", }, fl = { image = "Featured article star.svg", tooltip = "Featured list", }, flrc = { aliases = {"flr"}, image = "Cscr-star piece.png", tooltip = "Featured list removal candidate", }, ffl = { aliases = {"dfl"}, image = "Cscr-featured-strike.svg", tooltip = "Former featured list", }, flc = { aliases = {"fln"}, image = "Cscr-candidate.svg", tooltip = "Featured list candidate", }, fflc = { aliases = {"nofl"}, image = "Cscr-former.svg", tooltip = "Failed featured list candidate", }, a = { image = "Symbol a class.svg", tooltip = "A-Class article", }, dac = { aliases = {"daa"}, image = "Symbol unsupport A vote.svg", tooltip = "Demoted A-Class article", }, acc = { aliases = {"acn", "aac"}, image = "A candidate.svg", tooltip = "A-Class article candidate", }, noac = { aliases = {"faac"}, image = "Symbol unsupport A vote.svg", tooltip = "Failed A-Class article candidate", }, ga = { image = "Symbol support vote.svg", tooltip = "Good article", }, gar = { image = "GA Candidate Neutral vote(ChaosNil).svg", tooltip = "Good article reassessment", }, dga = { image = "Symbol unsupport vote.svg", tooltip = "Delisted good article", }, gan = { aliases = {"gac"}, image = "GA candidate.svg", tooltip = "Good article nominee", }, ga2 = { image = "Symbol neutral vote.svg", tooltip = "Good article, 2nd opinion", }, gah = { image = "Symbol wait.svg", tooltip = "Good article on hold", }, fgan = { aliases = {"noga", "gaf", "gf"}, image = "Symbol oppose vote.svg", tooltip = "Failed good article nominee", }, fp = { image = "Cscr-featured.svg", tooltip = "Featured picture", }, fpc = { aliases = {"fpn"}, image = "Cscr-candidate.svg", tooltip = "Featured picture candidate", }, ffp = { image = "Cscr-former.svg", tooltip = "Former featured picture", }, vp = { image = "ENWP VP Logo.svg", tooltip = "Valued picture", }, vpc = { image = "Valued pics 1.svg", tooltip = "Valued picture candidate", }, fs = { image = "Cscr-featured.svg", tooltip = "Featured sound", }, ffs = { image = "Cscr-former.svg", tooltip = "Former featured sound", }, fsc = { image = "Cscr-candidate.svg", tooltip = "Featured sound candidate", }, fpo = { image = "Linecons big-star.svg", tooltip = "Before the featured portal process ceased in 2017, this had been designated as a featured portal.", }, fpor = { image = "Cscr-star piece.png", tooltip = "Featured portal review", }, ffpo = { image = "Featured article star - cross.svg", tooltip = "Former featured portal", }, fpoc = { image = "Cscr-candidate.svg", tooltip = "Featured portal candidate", }, ft = { image = "Cscr-featuredtopic.svg", tooltip = "Featured topic", }, ftrc = { image = "Cscr-star piece.png", tooltip = "Featured topic removal candidate", }, fft = { aliases = {"dft"}, image = "DFT candidate_cluster.svg", tooltip = "Former featured topic", }, ftc = { aliases = {"ftn"}, image = "FT candidate cluster.svg", tooltip = "Featured topic candidate", }, gt = { image = "Support cluster.svg", tooltip = "Good topic", }, gtrc = { image = "Symbol unsupport vote.svg", tooltip = "Good topic removal candidate", }, gtc = { aliases = {"gtn"}, image = "GA candidate cluster.svg", tooltip = "Good topic candidate", }, bplus = { aliases = {"b+"}, image = "Symbol bplus class.svg", tooltip = "Bplus-Class article", }, b = { image = "Symbol b class.svg", tooltip = "B-Class article", }, br = { aliases = {"bcr"}, image = "Bclass-checklist.svg", tooltip = "B-Class review", }, c = { image = "Symbol c class.svg", tooltip = "C-Class article", }, start = { image = "Symbol start class.svg", tooltip = "Start-Class article", }, stub = { image = "Symbol stub class.svg", tooltip = "Stub-Class article", }, list = { aliases = {"comparison"}, image = "Symbol list class.svg", tooltip = "List-Class article", }, no = { image = "Crystal button cancel.svg", tooltip = "Unknown-Class article", }, book = { image = "Symbol book class2.svg", tooltip = "Wikipedia book", }, category = { aliases = {"cat", "categ"}, image = "Folder Hexagonal Icon.svg", tooltip = "Category", }, disambiguation = { aliases = {"dab", "disamb", "disambig"}, image = "Symbol dab class.svg", tooltip = "Disambiguation page", }, image = { aliases = {"file"}, image = "Video-x-generic.svg", tooltip = "File", }, needed = { image = "Symbol needed class.svg", tooltip = "Needed article", }, outline = { image = "Global thinking.svg", tooltip = "Outline", }, portal = { image = "Portal-puzzle.svg", tooltip = "Portal", }, project = { image = "Symbol information vote.svg", tooltip = "Project page", }, redirect = { aliases = {"red", "redir"}, image = "Symbol redirect vote2.svg", tooltip = "Redirect", }, template = { aliases = {"temp", "templ"}, image = "Symbol template class.svg", tooltip = "Template", }, essay = { image = "Essay.svg", tooltip = "Essay", }, na = { image = "Symbol neutral vote.svg", tooltip = "Non-article page", }, aa = { image = "Yes check.svg", tooltip = "Audited article of limited subject matter", }, da = { image = "Symbol oppose vote.svg", tooltip = "Demoted article", }, dyk = { image = "Symbol question.svg", tooltip = "Did You Know?", }, dyk2 = { image = "DYK questionmark icon.svg", tooltip = "Did You Know?", }, pr = { image = "Nuvola apps kedit.png", tooltip = "Peer review", }, ppr = { image = "Nuvola apps kedit.png", tooltip = "Portal peer review", }, q = { aliases = {"question"}, image = "Symbol question.svg", tooltip = "Question", }, qi = { image = "Quality images logo.svg", tooltip = "Quality image on Wikimedia Commons", }, vi = { image = "Valued image seal.svg", tooltip = "Valued image on Wikimedia Commons", }, tfa = { image = "Wikipedia-logo.svg", tooltip = "Today's Featured Article", }, tfl = { image = "Wikipedia-logo.svg", tooltip = "Today's Featured List", }, itn = { image = "Globe current.svg", tooltip = "In The News", }, otd = { image = "Nuvola apps date.svg", tooltip = "On This Day", }, wikiproject = { image = "People icon.svg", tooltip = "WikiProject", }, wikipedia = { image = "Wikipedia-logo.svg", tooltip = "Wikipedia page", }, commons = { image = "Commons-logo.svg", tooltip = "Commons page", }, wikiquote = { image = "Wikiquote-logo.svg", tooltip = "Wikiquote page", }, wikiversity = { image = "Wikiversity-logo.svg", tooltip = "Wikiversity page", }, wikibooks = { image = "Wikibooks-logo.svg", tooltip = "Wikibooks page", }, wikisource = { image = "Wikisource-logo.svg", tooltip = "Wikisource page", }, wiktionary = { image = "Wiktionary-logo.svg", tooltip = "Wiktionary page", }, wikinews = { image = "Wikinews-logo.svg", tooltip = "Wikinews page", }, wikispecies = { image = "Wikispecies-logo.svg", tooltip = "Wikispecies page", }, wikidata = { image = "Wikidata-logo.svg", tooltip = "Wikidata page", }, wikivoyage = { image = "Wikivoyage-logo.svg", tooltip = "Wikivoyage page", }, meta = { image = "Wikimedia Community Logo.svg", tooltip = "Meta-wiki page", }, four = { image = "Four Award.svg", tooltip = "Four Award", }, million = { image = "Million award logo.svg", tooltip = "Million Award", }, module = { image = "Lua-logo-nolabel.svg", tooltip = "Module", }, vital = { image = "Círculos_Concéntricos.svg", tooltip = "Vital article", }, _DEFAULT = { image = "Symbol question.svg", } } -------------------------------------------------------------------------------- -- End icon data -------------------------------------------------------------------------------- -- Make aliases work the same as normal keys, and remove the "aliases" subtables. for k, t in pairs(data) do if t.aliases then for i, alias in ipairs(t.aliases) do data[alias] = t end t.aliases = nil end data[k] = t end return data a8dgbrnmc8lyixix5fkiw5tfctl66dq Module:Infobox 828 1307 2846 2845 2020-09-29T19:18:18Z Chrisb 1 1 revision imported 2845 Scribunto text/plain -- -- This module implements {{Infobox}} -- local p = {} local navbar = require('Module:Navbar')._navbar local args = {} local origArgs = {} local root local function notempty( s ) return s and s:match( '%S' ) end local function fixChildBoxes(sval, tt) if notempty(sval) then local marker = '<span class=special_infobox_marker>' local s = sval s = mw.ustring.gsub(s, '(<%s*[Tt][Rr])', marker .. '%1') s = mw.ustring.gsub(s, '(</[Tt][Rr]%s*>)', '%1' .. marker) if s:match(marker) then s = mw.ustring.gsub(s, marker .. '%s*' .. marker, '') s = mw.ustring.gsub(s, '([\r\n]|-[^\r\n]*[\r\n])%s*' .. marker, '%1') s = mw.ustring.gsub(s, marker .. '%s*([\r\n]|-)', '%1') s = mw.ustring.gsub(s, '(</[Cc][Aa][Pp][Tt][Ii][Oo][Nn]%s*>%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '(<%s*[Tt][Aa][Bb][Ll][Ee][^<>]*>%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '^(%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') s = mw.ustring.gsub(s, '([\r\n]%{|[^\r\n]*[\r\n]%s*)' .. marker, '%1') s = mw.ustring.gsub(s, marker .. '(%s*</[Tt][Aa][Bb][Ll][Ee]%s*>)', '%1') s = mw.ustring.gsub(s, marker .. '(%s*\n|%})', '%1') end if s:match(marker) then local subcells = mw.text.split(s, marker) s = '' for k = 1, #subcells do if k == 1 then s = s .. subcells[k] .. '</' .. tt .. '></tr>' elseif k == #subcells then local rowstyle = ' style="display:none"' if notempty(subcells[k]) then rowstyle = '' end s = s .. '<tr' .. rowstyle ..'><' .. tt .. ' colspan=2>\n' .. subcells[k] elseif notempty(subcells[k]) then if (k % 2) == 0 then s = s .. subcells[k] else s = s .. '<tr><' .. tt .. ' colspan=2>\n' .. subcells[k] .. '</' .. tt .. '></tr>' end end end end -- the next two lines add a newline at the end of lists for the PHP parser -- https://en.wikipedia.org/w/index.php?title=Template_talk:Infobox_musical_artist&oldid=849054481 -- remove when [[:phab:T191516]] is fixed or OBE s = mw.ustring.gsub(s, '([\r\n][%*#;:][^\r\n]*)$', '%1\n') s = mw.ustring.gsub(s, '^([%*#;:][^\r\n]*)$', '%1\n') s = mw.ustring.gsub(s, '^([%*#;:])', '\n%1') s = mw.ustring.gsub(s, '^(%{%|)', '\n%1') return s else return sval end end local function union(t1, t2) -- Returns the union of the values of two tables, as a sequence. local vals = {} for k, v in pairs(t1) do vals[v] = true end for k, v in pairs(t2) do vals[v] = true end local ret = {} for k, v in pairs(vals) do table.insert(ret, k) end return ret end local function getArgNums(prefix) -- Returns a table containing the numbers of the arguments that exist -- for the specified prefix. For example, if the prefix was 'data', and -- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}. local nums = {} for k, v in pairs(args) do local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end local function addRow(rowArgs) -- Adds a row to the infobox, with either a header cell -- or a label/data cell combination. if rowArgs.header and rowArgs.header ~= '_BLANK_' then root :tag('tr') :addClass(rowArgs.rowclass) :cssText(rowArgs.rowstyle) :attr('id', rowArgs.rowid) :tag('th') :attr('colspan', 2) :attr('id', rowArgs.headerid) :addClass(rowArgs.class) :addClass(args.headerclass) :css('text-align', 'center') :cssText(args.headerstyle) :cssText(rowArgs.rowcellstyle) :wikitext(fixChildBoxes(rowArgs.header, 'th')) if rowArgs.data then root:wikitext('[[Category:Pages which use infobox templates with ignored data cells]]') end elseif rowArgs.data then if not rowArgs.data:gsub('%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]', ''):match('^%S') then rowArgs.rowstyle = 'display:none' end local row = root:tag('tr') row:addClass(rowArgs.rowclass) row:cssText(rowArgs.rowstyle) row:attr('id', rowArgs.rowid) if rowArgs.label then row :tag('th') :attr('scope', 'row') :attr('id', rowArgs.labelid) :cssText(args.labelstyle) :cssText(rowArgs.rowcellstyle) :wikitext(rowArgs.label) :done() end local dataCell = row:tag('td') if not rowArgs.label then dataCell :attr('colspan', 2) :css('text-align', 'center') end dataCell :attr('id', rowArgs.dataid) :addClass(rowArgs.class) :cssText(rowArgs.datastyle) :cssText(rowArgs.rowcellstyle) :wikitext(fixChildBoxes(rowArgs.data, 'td')) end end local function renderTitle() if not args.title then return end root :tag('caption') :addClass(args.titleclass) :cssText(args.titlestyle) :wikitext(args.title) end local function renderAboveRow() if not args.above then return end root :tag('tr') :tag('th') :attr('colspan', 2) :addClass(args.aboveclass) :css('text-align', 'center') :css('font-size', '125%') :css('font-weight', 'bold') :cssText(args.abovestyle) :wikitext(fixChildBoxes(args.above,'th')) end local function renderBelowRow() if not args.below then return end root :tag('tr') :tag('td') :attr('colspan', '2') :addClass(args.belowclass) :css('text-align', 'center') :cssText(args.belowstyle) :wikitext(fixChildBoxes(args.below,'td')) end local function renderSubheaders() if args.subheader then args.subheader1 = args.subheader end if args.subheaderrowclass then args.subheaderrowclass1 = args.subheaderrowclass end local subheadernums = getArgNums('subheader') for k, num in ipairs(subheadernums) do addRow({ data = args['subheader' .. tostring(num)], datastyle = args.subheaderstyle, rowcellstyle = args['subheaderstyle' .. tostring(num)], class = args.subheaderclass, rowclass = args['subheaderrowclass' .. tostring(num)] }) end end local function renderImages() if args.image then args.image1 = args.image end if args.caption then args.caption1 = args.caption end local imagenums = getArgNums('image') for k, num in ipairs(imagenums) do local caption = args['caption' .. tostring(num)] local data = mw.html.create():wikitext(args['image' .. tostring(num)]) if caption then data :tag('div') :cssText(args.captionstyle) :wikitext(caption) end addRow({ data = tostring(data), datastyle = args.imagestyle, class = args.imageclass, rowclass = args['imagerowclass' .. tostring(num)] }) end end local function preprocessRows() -- Gets the union of the header and data argument numbers, -- and renders them all in order using addRow. local rownums = union(getArgNums('header'), getArgNums('data')) table.sort(rownums) local lastheader for k, num in ipairs(rownums) do if args['header' .. tostring(num)] then if lastheader then args['header' .. tostring(lastheader)] = nil end lastheader = num elseif args['data' .. tostring(num)] and args['data' .. tostring(num)]:gsub('%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]', ''):match('^%S') then local data = args['data' .. tostring(num)] if data:gsub('%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:[^]]*]]', ''):match('%S') then lastheader = nil end end end if lastheader then args['header' .. tostring(lastheader)] = nil end end local function renderRows() -- Gets the union of the header and data argument numbers, -- and renders them all in order using addRow. local rownums = union(getArgNums('header'), getArgNums('data')) table.sort(rownums) for k, num in ipairs(rownums) do addRow({ header = args['header' .. tostring(num)], label = args['label' .. tostring(num)], data = args['data' .. tostring(num)], datastyle = args.datastyle, class = args['class' .. tostring(num)], rowclass = args['rowclass' .. tostring(num)], rowstyle = args['rowstyle' .. tostring(num)], rowcellstyle = args['rowcellstyle' .. tostring(num)], dataid = args['dataid' .. tostring(num)], labelid = args['labelid' .. tostring(num)], headerid = args['headerid' .. tostring(num)], rowid = args['rowid' .. tostring(num)] }) end end local function renderNavBar() if not args.name then return end root :tag('tr') :tag('td') :attr('colspan', '2') :css('text-align', 'right') :wikitext(navbar{ args.name, mini = 1, }) end local function renderItalicTitle() local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title']) if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then root:wikitext(mw.getCurrentFrame():expandTemplate({title = 'italic title'})) end end local function renderTrackingCategories() if args.decat ~= 'yes' then if args.child == 'yes' then if args.title then root:wikitext('[[Category:Pages which use embedded infobox templates with the title parameter]]') end elseif #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then root:wikitext('[[Category:Articles which use infobox templates with no data rows]]') end end end local function _infobox() -- Specify the overall layout of the infobox, with special settings -- if the infobox is used as a 'child' inside another infobox. if args.child ~= 'yes' then root = mw.html.create('table') root :addClass((args.subbox ~= 'yes') and 'infobox' or nil) :addClass(args.bodyclass) if args.subbox == 'yes' then root :css('padding', '0') :css('border', 'none') :css('margin', '-3px') :css('width', 'auto') :css('min-width', '100%') :css('font-size', '100%') :css('clear', 'none') :css('float', 'none') :css('background-color', 'transparent') else root :css('width', '22em') end root :cssText(args.bodystyle) renderTitle() renderAboveRow() else root = mw.html.create() root :wikitext(args.title) end renderSubheaders() renderImages() if args.autoheaders then preprocessRows() end renderRows() renderBelowRow() renderNavBar() renderItalicTitle() renderTrackingCategories() return tostring(root) end local function preprocessSingleArg(argName) -- If the argument exists and isn't blank, add it to the argument table. -- Blank arguments are treated as nil to match the behaviour of ParserFunctions. if origArgs[argName] and origArgs[argName] ~= '' then args[argName] = origArgs[argName] end end local function preprocessArgs(prefixTable, step) -- Assign the parameters with the given prefixes to the args table, in order, in batches -- of the step size specified. This is to prevent references etc. from appearing in the -- wrong order. The prefixTable should be an array containing tables, each of which has -- two possible fields, a "prefix" string and a "depend" table. The function always parses -- parameters containing the "prefix" string, but only parses parameters in the "depend" -- table if the prefix parameter is present and non-blank. if type(prefixTable) ~= 'table' then error("Non-table value detected for the prefix table", 2) end if type(step) ~= 'number' then error("Invalid step value detected", 2) end -- Get arguments without a number suffix, and check for bad input. for i,v in ipairs(prefixTable) do if type(v) ~= 'table' or type(v.prefix) ~= "string" or (v.depend and type(v.depend) ~= 'table') then error('Invalid input detected to preprocessArgs prefix table', 2) end preprocessSingleArg(v.prefix) -- Only parse the depend parameter if the prefix parameter is present and not blank. if args[v.prefix] and v.depend then for j, dependValue in ipairs(v.depend) do if type(dependValue) ~= 'string' then error('Invalid "depend" parameter value detected in preprocessArgs') end preprocessSingleArg(dependValue) end end end -- Get arguments with number suffixes. local a = 1 -- Counter variable. local moreArgumentsExist = true while moreArgumentsExist == true do moreArgumentsExist = false for i = a, a + step - 1 do for j,v in ipairs(prefixTable) do local prefixArgName = v.prefix .. tostring(i) if origArgs[prefixArgName] then moreArgumentsExist = true -- Do another loop if any arguments are found, even blank ones. preprocessSingleArg(prefixArgName) end -- Process the depend table if the prefix argument is present and not blank, or -- we are processing "prefix1" and "prefix" is present and not blank, and -- if the depend table is present. if v.depend and (args[prefixArgName] or (i == 1 and args[v.prefix])) then for j,dependValue in ipairs(v.depend) do local dependArgName = dependValue .. tostring(i) preprocessSingleArg(dependArgName) end end end end a = a + step end end local function parseDataParameters() -- Parse the data parameters in the same order that the old {{infobox}} did, so that -- references etc. will display in the expected places. Parameters that depend on -- another parameter are only processed if that parameter is present, to avoid -- phantom references appearing in article reference lists. preprocessSingleArg('autoheaders') preprocessSingleArg('child') preprocessSingleArg('bodyclass') preprocessSingleArg('subbox') preprocessSingleArg('bodystyle') preprocessSingleArg('title') preprocessSingleArg('titleclass') preprocessSingleArg('titlestyle') preprocessSingleArg('above') preprocessSingleArg('aboveclass') preprocessSingleArg('abovestyle') preprocessArgs({ {prefix = 'subheader', depend = {'subheaderstyle', 'subheaderrowclass'}} }, 10) preprocessSingleArg('subheaderstyle') preprocessSingleArg('subheaderclass') preprocessArgs({ {prefix = 'image', depend = {'caption', 'imagerowclass'}} }, 10) preprocessSingleArg('captionstyle') preprocessSingleArg('imagestyle') preprocessSingleArg('imageclass') preprocessArgs({ {prefix = 'header'}, {prefix = 'data', depend = {'label'}}, {prefix = 'rowclass'}, {prefix = 'rowstyle'}, {prefix = 'rowcellstyle'}, {prefix = 'class'}, {prefix = 'dataid'}, {prefix = 'labelid'}, {prefix = 'headerid'}, {prefix = 'rowid'} }, 50) preprocessSingleArg('headerclass') preprocessSingleArg('headerstyle') preprocessSingleArg('labelstyle') preprocessSingleArg('datastyle') preprocessSingleArg('below') preprocessSingleArg('belowclass') preprocessSingleArg('belowstyle') preprocessSingleArg('name') args['italic title'] = origArgs['italic title'] -- different behaviour if blank or absent preprocessSingleArg('decat') end function p.infobox(frame) -- If called via #invoke, use the args passed into the invoking template. -- Otherwise, for testing purposes, assume args are being passed directly in. if frame == mw.getCurrentFrame() then origArgs = frame:getParent().args else origArgs = frame end parseDataParameters() return _infobox() end function p.infoboxTemplate(frame) -- For calling via #invoke within a template origArgs = {} for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end parseDataParameters() return _infobox() end return p icv7hicbyi1nka7zvdkn0xjgl2xiiia Module:InfoboxImage 828 1669 4986 4985 2020-10-11T05:50:45Z Chrisb 1 1 revision imported 4985 Scribunto text/plain -- Inputs: -- image - Can either be a bare filename (with or without the File:/Image: prefix) or a fully formatted image link -- page - page to display for multipage images (DjVu) -- size - size to display the image -- maxsize - maximum size for image -- sizedefault - default size to display the image if size param is blank -- alt - alt text for image -- title - title text for image -- border - set to yes if border -- center - set to yes, if the image has to be centered -- upright - upright image param -- suppressplaceholder - if yes then checks to see if image is a placeholder and suppresses it -- link - page to visit when clicking on image -- Outputs: -- Formatted image. -- More details available at the "Module:InfoboxImage/doc" page local i = {}; local placeholder_image = { "Blue - Replace this image female.svg", "Blue - Replace this image male.svg", "Female no free image yet.png", "Flag of None (square).svg", "Flag of None.svg", "Flag of.svg", "Green - Replace this image female.svg", "Green - Replace this image male.svg", "Image is needed female.svg", "Image is needed male.svg", "Location map of None.svg", "Male no free image yet.png", "Missing flag.png", "No flag.svg", "No free portrait.svg", "No portrait (female).svg", "No portrait (male).svg", "Red - Replace this image female.svg", "Red - Replace this image male.svg", "Replace this image female (blue).svg", "Replace this image female.svg", "Replace this image male (blue).svg", "Replace this image male.svg", "Silver - Replace this image female.svg", "Silver - Replace this image male.svg", "Replace this image.svg", "Cricket no pic.png", "CarersLogo.gif", "Diagram Needed.svg", "Example.jpg", "Image placeholder.png", "No male portrait.svg", "Nocover-upload.png", "NoDVDcover copy.png", "Noribbon.svg", "No portrait-BFD-test.svg", "Placeholder barnstar ribbon.png", "Project Trains no image.png", "Image-request.png", "Sin bandera.svg", "Sin escudo.svg", "Replace this image - temple.png", "Replace this image butterfly.png", "Replace this image.svg", "Replace this image1.svg", "Resolution angle.png", "Image-No portrait-text-BFD-test.svg", "Insert image here.svg", "No image available.png", "NO IMAGE YET square.png", "NO IMAGE YET.png", "No Photo Available.svg", "No Screenshot.svg", "No-image-available.jpg", "Null.png", "PictureNeeded.gif", "Place holder.jpg", "Unbenannt.JPG", "UploadACopyrightFreeImage.svg", "UploadAnImage.gif", "UploadAnImage.svg", "UploadAnImageShort.svg", "CarersLogo.gif", "Diagram Needed.svg", "No male portrait.svg", "NoDVDcover copy.png", "Placeholder barnstar ribbon.png", "Project Trains no image.png", "Image-request.png", "Noimage.gif", } function i.IsPlaceholder(image) -- change underscores to spaces image = mw.ustring.gsub(image, "_", " "); assert(image ~= nil, 'mw.ustring.gsub(image, "_", " ") must not return nil') -- if image starts with [[ then remove that and anything after | if mw.ustring.sub(image,1,2) == "[[" then image = mw.ustring.sub(image,3); image = mw.ustring.gsub(image, "([^|]*)|.*", "%1"); assert(image ~= nil, 'mw.ustring.gsub(image, "([^|]*)|.*", "%1") must not return nil') end -- Trim spaces image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1'); assert(image ~= nil, "mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1') must not return nil") -- remove prefix if exists local allNames = mw.site.namespaces[6].aliases allNames[#allNames + 1] = mw.site.namespaces[6].name allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName for i, name in ipairs(allNames) do if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then image = mw.ustring.sub(image, mw.ustring.len(name) + 2); break end end -- Trim spaces image = mw.ustring.gsub(image, '^[ ]*(.-)[ ]*$', '%1'); -- capitalise first letter image = mw.ustring.upper(mw.ustring.sub(image,1,1)) .. mw.ustring.sub(image,2); for i,j in pairs(placeholder_image) do if image == j then return true end end return false end function i.InfoboxImage(frame) local image = frame.args["image"]; if image == "" or image == nil then return ""; end if image == "&nbsp;" then return image; end if frame.args["suppressplaceholder"] ~= "no" then if i.IsPlaceholder(image) == true then return ""; end end if mw.ustring.lower(mw.ustring.sub(image,1,5)) == "http:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "[http:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[[http:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,6)) == "https:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,7)) == "[https:" then return ""; end if mw.ustring.lower(mw.ustring.sub(image,1,8)) == "[[https:" then return ""; end if mw.ustring.sub(image,1,2) == "[[" then -- search for thumbnail images and add to tracking cat if found local cat = ""; if mw.title.getCurrentTitle().namespace == 0 and (mw.ustring.find(image, "|%s*thumb%s*[|%]]") or mw.ustring.find(image, "|%s*thumbnail%s*[|%]]")) then cat = "[[Category:Pages using infoboxes with thumbnail images]]"; elseif mw.title.getCurrentTitle().namespace == 0 then cat = "[[Category:Pages using deprecated image syntax]]"; end return image .. cat; elseif mw.ustring.sub(image,1,2) == "{{" and mw.ustring.sub(image,1,3) ~= "{{{" then return image; elseif mw.ustring.sub(image,1,1) == "<" then return image; elseif mw.ustring.sub(image,1,5) == mw.ustring.char(127).."UNIQ" then -- Found strip marker at begining, so pass don't process at all return image; elseif mw.ustring.sub(image,4,9) == "`UNIQ-" then -- Found strip marker at begining, so pass don't process at all return image; else local result = ""; local page = frame.args["page"]; local size = frame.args["size"]; local maxsize = frame.args["maxsize"]; local sizedefault = frame.args["sizedefault"]; local alt = frame.args["alt"]; local link = frame.args["link"]; local title = frame.args["title"]; local border = frame.args["border"]; local upright = frame.args["upright"] or ""; local thumbtime = frame.args["thumbtime"] or ""; local center= frame.args["center"]; -- remove prefix if exists local allNames = mw.site.namespaces[6].aliases allNames[#allNames + 1] = mw.site.namespaces[6].name allNames[#allNames + 1] = mw.site.namespaces[6].canonicalName for i, name in ipairs(allNames) do if mw.ustring.lower(mw.ustring.sub(image, 1, mw.ustring.len(name) + 1)) == mw.ustring.lower(name .. ":") then image = mw.ustring.sub(image, mw.ustring.len(name) + 2); break end end if maxsize ~= "" and maxsize ~= nil then -- if no sizedefault then set to maxsize if sizedefault == "" or sizedefault == nil then sizedefault = maxsize end -- check to see if size bigger than maxsize if size ~= "" and size ~= nil then local sizenumber = tonumber(mw.ustring.match(size,"%d*")) or 0; local maxsizenumber = tonumber(mw.ustring.match(maxsize,"%d*")) or 0; if sizenumber>maxsizenumber and maxsizenumber>0 then size = maxsize; end end end -- add px to size if just a number if (tonumber(size) or 0) > 0 then size = size .. "px"; end -- add px to sizedefault if just a number if (tonumber(sizedefault) or 0) > 0 then sizedefault = sizedefault .. "px"; end result = "[[File:" .. image; if page ~= "" and page ~= nil then result = result .. "|page=" .. page; end if size ~= "" and size ~= nil then result = result .. "|" .. size; elseif sizedefault ~= "" and sizedefault ~= nil then result = result .. "|" .. sizedefault; else result = result .. "|frameless"; end if center == "yes" then result = result .. "|center" end if alt ~= "" and alt ~= nil then result = result .. "|alt=" .. alt; end if link ~= "" and link ~= nil then result = result .. "|link=" .. link; end if border == "yes" then result = result .. "|border"; end if upright == "yes" then result = result .. "|upright"; elseif upright ~= "" then result = result .. "|upright=" .. upright; end if thumbtime ~= "" then result = result .. "|thumbtime=" .. thumbtime; end if title ~= "" and title ~= nil then result = result .. "|" .. title; elseif alt ~= "" and alt ~= nil then result = result .. "|" .. alt; end result = result .. "]]"; return result; end end return i; tokoxmq8k6xg8hz3ed4w86r9v6ed3vl Module:Labelled list hatnote 828 1473 3250 3249 2020-10-11T01:36:01Z Chrisb 1 1 revision imported 3249 Scribunto text/plain -------------------------------------------------------------------------------- -- Labelled list -- -- -- -- This module does the core work of creating a hatnote composed of a list -- -- prefixed by a colon-terminated label, i.e. "LABEL: [andList of pages]", -- -- for {{see also}} and similar templates. -- -------------------------------------------------------------------------------- local mHatnote = require('Module:Hatnote') local mHatlist = require('Module:Hatnote list') local mArguments --initialize lazily local p = {} -- Defaults global to this module local defaults = { label = 'See also', --Final fallback for label argument labelForm = '%s: %s', prefixes = {'label', 'label ', 'l'}, template = 'Module:Labelled list hatnote' } -- Helper function that pre-combines display parameters into page arguments. -- Also compresses sparse arrays, as a desirable side-effect. function p.preprocessDisplays (args, prefixes) -- Prefixes specify which parameters, in order, to check for display options -- They each have numbers auto-appended, e.g. 'label1', 'label 1', & 'l1' prefixes = prefixes or defaults.prefixes local pages = {} for k, v in pairs(args) do if type(k) == 'number' then local display for i = 1, #prefixes do display = args[prefixes[i] .. k] if display then break end end local page = display and string.format('%s|%s', string.gsub(v, '|.*$', ''), display) or v pages[#pages + 1] = page end end return pages end -- Produces a labelled pages-list hatnote. -- The main frame (template definition) takes 1 or 2 arguments, for a singular -- and (optionally) plural label respectively: -- * {{#invoke:Labelled list hatnote|labelledList|Singular label|Plural label}} -- The resulting template takes pagename & label parameters normally. function p.labelledList (frame) mArguments = require('Module:Arguments') local labels = {frame.args[1] or defaults.label} labels[2] = frame.args[2] or labels[1] local template = frame:getParent():getTitle() local args = mArguments.getArgs(frame, {parentOnly = true}) local pages = p.preprocessDisplays(args) local options = { extraclasses = frame.args.extraclasses, category = args.category, selfref = frame.args.selfref or args.selfref, template = template } return p._labelledList(pages, labels, options) end function p._labelledList (pages, labels, options) labels = labels or {} if #pages == 0 then return mHatnote.makeWikitextError( 'no page names specified', (options.template or defaults.template) .. '#Errors', options.category ) end label = (#pages == 1 and labels[1] or labels[2]) or defaults.label local text = string.format( options.labelForm or defaults.labelForm, label, mHatlist.andList(pages, true) ) local hnOptions = { extraclasses = options.extraclasses, selfref = options.selfref } return mHatnote._hatnote(text, hnOptions) end return p 932zychfwl5xu5castj2k9j5qs6lzif Module:List 828 1308 2848 2847 2020-09-29T19:18:18Z Chrisb 1 1 revision imported 2847 Scribunto text/plain -- This module outputs different kinds of lists. At the moment, bulleted, -- unbulleted, horizontal, ordered, and horizontal ordered lists are supported. local libUtil = require('libraryUtil') local checkType = libUtil.checkType local mTableTools = require('Module:TableTools') local p = {} local listTypes = { ['bulleted'] = true, ['unbulleted'] = true, ['horizontal'] = true, ['ordered'] = true, ['horizontal_ordered'] = true } function p.makeListData(listType, args) -- Constructs a data table to be passed to p.renderList. local data = {} -- Classes data.classes = {} if listType == 'horizontal' or listType == 'horizontal_ordered' then table.insert(data.classes, 'hlist hlist-separated') elseif listType == 'unbulleted' then table.insert(data.classes, 'plainlist') end table.insert(data.classes, args.class) -- Main div style data.style = args.style -- Indent for horizontal lists if listType == 'horizontal' or listType == 'horizontal_ordered' then local indent = tonumber(args.indent) indent = indent and indent * 1.6 or 0 if indent > 0 then data.marginLeft = indent .. 'em' end end -- List style types for ordered lists -- This could be "1, 2, 3", "a, b, c", or a number of others. The list style -- type is either set by the "type" attribute or the "list-style-type" CSS -- property. if listType == 'ordered' or listType == 'horizontal_ordered' then data.listStyleType = args.list_style_type or args['list-style-type'] data.type = args['type'] -- Detect invalid type attributes and attempt to convert them to -- list-style-type CSS properties. if data.type and not data.listStyleType and not tostring(data.type):find('^%s*[1AaIi]%s*$') then data.listStyleType = data.type data.type = nil end end -- List tag type if listType == 'ordered' or listType == 'horizontal_ordered' then data.listTag = 'ol' else data.listTag = 'ul' end -- Start number for ordered lists data.start = args.start if listType == 'horizontal_ordered' then -- Apply fix to get start numbers working with horizontal ordered lists. local startNum = tonumber(data.start) if startNum then data.counterReset = 'listitem ' .. tostring(startNum - 1) end end -- List style -- ul_style and ol_style are included for backwards compatibility. No -- distinction is made for ordered or unordered lists. data.listStyle = args.list_style -- List items -- li_style is included for backwards compatibility. item_style was included -- to be easier to understand for non-coders. data.itemStyle = args.item_style or args.li_style data.items = {} for i, num in ipairs(mTableTools.numKeys(args)) do local item = {} item.content = args[num] item.style = args['item' .. tostring(num) .. '_style'] or args['item_style' .. tostring(num)] item.value = args['item' .. tostring(num) .. '_value'] or args['item_value' .. tostring(num)] table.insert(data.items, item) end return data end function p.renderList(data) -- Renders the list HTML. -- Return the blank string if there are no list items. if type(data.items) ~= 'table' or #data.items < 1 then return '' end -- Render the main div tag. local root = mw.html.create('div') for i, class in ipairs(data.classes or {}) do root:addClass(class) end root:css{['margin-left'] = data.marginLeft} if data.style then root:cssText(data.style) end -- Render the list tag. local list = root:tag(data.listTag or 'ul') list :attr{start = data.start, type = data.type} :css{ ['counter-reset'] = data.counterReset, ['list-style-type'] = data.listStyleType } if data.listStyle then list:cssText(data.listStyle) end -- Render the list items for i, t in ipairs(data.items or {}) do local item = list:tag('li') if data.itemStyle then item:cssText(data.itemStyle) end if t.style then item:cssText(t.style) end item :attr{value = t.value} :wikitext(t.content) end return tostring(root) end function p.renderTrackingCategories(args) local isDeprecated = false -- Tracks deprecated parameters. for k, v in pairs(args) do k = tostring(k) if k:find('^item_style%d+$') or k:find('^item_value%d+$') then isDeprecated = true break end end local ret = '' if isDeprecated then ret = ret .. '[[Category:List templates with deprecated parameters]]' end return ret end function p.makeList(listType, args) if not listType or not listTypes[listType] then error(string.format( "bad argument #1 to 'makeList' ('%s' is not a valid list type)", tostring(listType) ), 2) end checkType('makeList', 2, args, 'table') local data = p.makeListData(listType, args) local list = p.renderList(data) local trackingCategories = p.renderTrackingCategories(args) return list .. trackingCategories end for listType in pairs(listTypes) do p[listType] = function (frame) local mArguments = require('Module:Arguments') local origArgs = mArguments.getArgs(frame, { valueFunc = function (key, value) if not value or not mw.ustring.find(value, '%S') then return nil end if mw.ustring.find(value, '^%s*[%*#;:]') then return value else return value:match('^%s*(.-)%s*$') end return nil end }) -- Copy all the arguments to a new table, for faster indexing. local args = {} for k, v in pairs(origArgs) do args[k] = v end return p.makeList(listType, args) end end return p 1kfxv6e8upfdko23gc41ky0lax25kzs Module:Lua banner 828 1309 2850 2849 2020-09-29T19:18:18Z Chrisb 1 1 revision imported 2849 Scribunto text/plain -- This module implements the {{lua}} template. local yesno = require('Module:Yesno') local mList = require('Module:List') local mTableTools = require('Module:TableTools') local mMessageBox = require('Module:Message box') local p = {} function p.main(frame) local origArgs = frame:getParent().args local args = {} for k, v in pairs(origArgs) do v = v:match('^%s*(.-)%s*$') if v ~= '' then args[k] = v end end return p._main(args) end function p._main(args) local modules = mTableTools.compressSparseArray(args) local box = p.renderBox(modules) local trackingCategories = p.renderTrackingCategories(args, modules) return box .. trackingCategories end function p.renderBox(modules) local boxArgs = {} if #modules < 1 then boxArgs.text = '<strong class="error">Error: no modules specified</strong>' else local moduleLinks = {} for i, module in ipairs(modules) do moduleLinks[i] = string.format('[[:%s]]', module) local maybeSandbox = mw.title.new(module .. '/sandbox') if maybeSandbox.exists then moduleLinks[i] = moduleLinks[i] .. string.format(' ([[:%s|sandbox]])', maybeSandbox.fullText) end end local moduleList = mList.makeList('bulleted', moduleLinks) local title = mw.title.getCurrentTitle() if title.subpageText == "doc" then title = title.basePageTitle end if title.contentModel == "Scribunto" then boxArgs.text = 'This module depends on the following other modules:' .. moduleList else boxArgs.text = 'This template uses [[Wikipedia:Lua|Lua]]:\n' .. moduleList end end boxArgs.type = 'notice' boxArgs.small = true boxArgs.image = '[[File:Lua-logo-nolabel.svg|30px|alt=|link=]]' return mMessageBox.main('mbox', boxArgs) end function p.renderTrackingCategories(args, modules, titleObj) if yesno(args.nocat) then return '' end local cats = {} -- Error category if #modules < 1 then cats[#cats + 1] = 'Lua templates with errors' end -- Lua templates category titleObj = titleObj or mw.title.getCurrentTitle() local subpageBlacklist = { doc = true, sandbox = true, sandbox2 = true, testcases = true } if not subpageBlacklist[titleObj.subpageText] then local protCatName if titleObj.namespace == 10 then local category = args.category if not category then local categories = { ['Module:String'] = 'Lua String-based templates', ['Module:Math'] = 'Templates based on the Math Lua module', ['Module:BaseConvert'] = 'Templates based on the BaseConvert Lua module', ['Module:Citation'] = 'Lua-based citation templates' } categories['Module:Citation/CS1'] = categories['Module:Citation'] category = modules[1] and categories[modules[1]] category = category or 'Lua-based templates' end cats[#cats + 1] = category protCatName = "Templates using under-protected Lua modules" elseif titleObj.namespace == 828 then protCatName = "Modules depending on under-protected modules" end if not args.noprotcat and protCatName then local protLevels = { autoconfirmed = 1, extendedconfirmed = 2, templateeditor = 3, sysop = 4 } local currentProt if titleObj.id ~= 0 then -- id is 0 (page does not exist) if am previewing before creating a template. currentProt = titleObj.protectionLevels["edit"][1] end if currentProt == nil then currentProt = 0 else currentProt = protLevels[currentProt] end for i, module in ipairs(modules) do if module ~= "WP:libraryUtil" then local moduleProt = mw.title.new(module).protectionLevels["edit"][1] if moduleProt == nil then moduleProt = 0 else moduleProt = protLevels[moduleProt] end if moduleProt < currentProt then cats[#cats + 1] = protCatName break end end end end end for i, cat in ipairs(cats) do cats[i] = string.format('[[Category:%s]]', cat) end return table.concat(cats) end return p jyzkcu97in5ms894d1hxq91kby64msp Module:Message box 828 868 1968 1967 2020-09-29T19:15:35Z Chrisb 1 1 revision imported 1967 Scribunto text/plain -- This is a meta-module for producing message box templates, including -- {{mbox}}, {{ambox}}, {{imbox}}, {{tmbox}}, {{ombox}}, {{cmbox}} and {{fmbox}}. -- Load necessary modules. require('Module:No globals') local getArgs local yesno = require('Module:Yesno') -- Get a language object for formatDate and ucfirst. local lang = mw.language.getContentLanguage() -- Define constants local CONFIG_MODULE = 'Module:Message box/configuration' local DEMOSPACES = {talk = 'tmbox', image = 'imbox', file = 'imbox', category = 'cmbox', article = 'ambox', main = 'ambox'} -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function getTitleObject(...) -- Get the title object, passing the function through pcall -- in case we are over the expensive function count limit. local success, title = pcall(mw.title.new, ...) if success then return title end end local function union(t1, t2) -- Returns the union of two arrays. local vals = {} for i, v in ipairs(t1) do vals[v] = true end for i, v in ipairs(t2) do vals[v] = true end local ret = {} for k in pairs(vals) do table.insert(ret, k) end table.sort(ret) return ret end local function getArgNums(args, prefix) local nums = {} for k, v in pairs(args) do local num = mw.ustring.match(tostring(k), '^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end -------------------------------------------------------------------------------- -- Box class definition -------------------------------------------------------------------------------- local MessageBox = {} MessageBox.__index = MessageBox function MessageBox.new(boxType, args, cfg) args = args or {} local obj = {} -- Set the title object and the namespace. obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle() -- Set the config for our box type. obj.cfg = cfg[boxType] if not obj.cfg then local ns = obj.title.namespace -- boxType is "mbox" or invalid input if args.demospace and args.demospace ~= '' then -- implement demospace parameter of mbox local demospace = string.lower(args.demospace) if DEMOSPACES[demospace] then -- use template from DEMOSPACES obj.cfg = cfg[DEMOSPACES[demospace]] elseif string.find( demospace, 'talk' ) then -- demo as a talk page obj.cfg = cfg.tmbox else -- default to ombox obj.cfg = cfg.ombox end elseif ns == 0 then obj.cfg = cfg.ambox -- main namespace elseif ns == 6 then obj.cfg = cfg.imbox -- file namespace elseif ns == 14 then obj.cfg = cfg.cmbox -- category namespace else local nsTable = mw.site.namespaces[ns] if nsTable and nsTable.isTalk then obj.cfg = cfg.tmbox -- any talk namespace else obj.cfg = cfg.ombox -- other namespaces or invalid input end end end -- Set the arguments, and remove all blank arguments except for the ones -- listed in cfg.allowBlankParams. do local newArgs = {} for k, v in pairs(args) do if v ~= '' then newArgs[k] = v end end for i, param in ipairs(obj.cfg.allowBlankParams or {}) do newArgs[param] = args[param] end obj.args = newArgs end -- Define internal data structure. obj.categories = {} obj.classes = {} -- For lazy loading of [[Module:Category handler]]. obj.hasCategories = false return setmetatable(obj, MessageBox) end function MessageBox:addCat(ns, cat, sort) if not cat then return nil end if sort then cat = string.format('[[Category:%s|%s]]', cat, sort) else cat = string.format('[[Category:%s]]', cat) end self.hasCategories = true self.categories[ns] = self.categories[ns] or {} table.insert(self.categories[ns], cat) end function MessageBox:addClass(class) if not class then return nil end table.insert(self.classes, class) end function MessageBox:setParameters() local args = self.args local cfg = self.cfg -- Get type data. self.type = args.type local typeData = cfg.types[self.type] self.invalidTypeError = cfg.showInvalidTypeError and self.type and not typeData typeData = typeData or cfg.types[cfg.default] self.typeClass = typeData.class self.typeImage = typeData.image -- Find if the box has been wrongly substituted. self.isSubstituted = cfg.substCheck and args.subst == 'SUBST' -- Find whether we are using a small message box. self.isSmall = cfg.allowSmall and ( cfg.smallParam and args.small == cfg.smallParam or not cfg.smallParam and yesno(args.small) ) -- Add attributes, classes and styles. self.id = args.id self.name = args.name if self.name then self:addClass('box-' .. string.gsub(self.name,' ','_')) end if yesno(args.plainlinks) ~= false then self:addClass('plainlinks') end for _, class in ipairs(cfg.classes or {}) do self:addClass(class) end if self.isSmall then self:addClass(cfg.smallClass or 'mbox-small') end self:addClass(self.typeClass) self:addClass(args.class) self.style = args.style self.attrs = args.attrs -- Set text style. self.textstyle = args.textstyle -- Find if we are on the template page or not. This functionality is only -- used if useCollapsibleTextFields is set, or if both cfg.templateCategory -- and cfg.templateCategoryRequireName are set. self.useCollapsibleTextFields = cfg.useCollapsibleTextFields if self.useCollapsibleTextFields or cfg.templateCategory and cfg.templateCategoryRequireName then if self.name then local templateName = mw.ustring.match( self.name, '^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$' ) or self.name templateName = 'Template:' .. templateName self.templateTitle = getTitleObject(templateName) end self.isTemplatePage = self.templateTitle and mw.title.equals(self.title, self.templateTitle) end -- Process data for collapsible text fields. At the moment these are only -- used in {{ambox}}. if self.useCollapsibleTextFields then -- Get the self.issue value. if self.isSmall and args.smalltext then self.issue = args.smalltext else local sect if args.sect == '' then sect = 'This ' .. (cfg.sectionDefault or 'page') elseif type(args.sect) == 'string' then sect = 'This ' .. args.sect end local issue = args.issue issue = type(issue) == 'string' and issue ~= '' and issue or nil local text = args.text text = type(text) == 'string' and text or nil local issues = {} table.insert(issues, sect) table.insert(issues, issue) table.insert(issues, text) self.issue = table.concat(issues, ' ') end -- Get the self.talk value. local talk = args.talk -- Show talk links on the template page or template subpages if the talk -- parameter is blank. if talk == '' and self.templateTitle and ( mw.title.equals(self.templateTitle, self.title) or self.title:isSubpageOf(self.templateTitle) ) then talk = '#' elseif talk == '' then talk = nil end if talk then -- If the talk value is a talk page, make a link to that page. Else -- assume that it's a section heading, and make a link to the talk -- page of the current page with that section heading. local talkTitle = getTitleObject(talk) local talkArgIsTalkPage = true if not talkTitle or not talkTitle.isTalkPage then talkArgIsTalkPage = false talkTitle = getTitleObject( self.title.text, mw.site.namespaces[self.title.namespace].talk.id ) end if talkTitle and talkTitle.exists then local talkText if self.isSmall then local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. '#' .. talk) talkText = string.format('([[%s|talk]])', talkLink) else talkText = 'Relevant discussion may be found on' if talkArgIsTalkPage then talkText = string.format( '%s [[%s|%s]].', talkText, talk, talkTitle.prefixedText ) else talkText = string.format( '%s the [[%s#%s|talk page]].', talkText, talkTitle.prefixedText, talk ) end end self.talk = talkText end end -- Get other values. self.fix = args.fix ~= '' and args.fix or nil local date if args.date and args.date ~= '' then date = args.date elseif args.date == '' and self.isTemplatePage then date = lang:formatDate('F Y') end if date then self.date = string.format(" <small class='date-container'>''(<span class='date'>%s</span>)''</small>", date) end self.info = args.info if yesno(args.removalnotice) then self.removalNotice = cfg.removalNotice end end -- Set the non-collapsible text field. At the moment this is used by all box -- types other than ambox, and also by ambox when small=yes. if self.isSmall then self.text = args.smalltext or args.text else self.text = args.text end -- Set the below row. self.below = cfg.below and args.below -- General image settings. self.imageCellDiv = not self.isSmall and cfg.imageCellDiv self.imageEmptyCell = cfg.imageEmptyCell if cfg.imageEmptyCellStyle then self.imageEmptyCellStyle = 'border:none;padding:0px;width:1px' end -- Left image settings. local imageLeft = self.isSmall and args.smallimage or args.image if cfg.imageCheckBlank and imageLeft ~= 'blank' and imageLeft ~= 'none' or not cfg.imageCheckBlank and imageLeft ~= 'none' then self.imageLeft = imageLeft if not imageLeft then local imageSize = self.isSmall and (cfg.imageSmallSize or '30x30px') or '40x40px' self.imageLeft = string.format('[[File:%s|%s|link=|alt=]]', self.typeImage or 'Imbox notice.png', imageSize) end end -- Right image settings. local imageRight = self.isSmall and args.smallimageright or args.imageright if not (cfg.imageRightNone and imageRight == 'none') then self.imageRight = imageRight end end function MessageBox:setMainspaceCategories() local args = self.args local cfg = self.cfg if not cfg.allowMainspaceCategories then return nil end local nums = {} for _, prefix in ipairs{'cat', 'category', 'all'} do args[prefix .. '1'] = args[prefix] nums = union(nums, getArgNums(args, prefix)) end -- The following is roughly equivalent to the old {{Ambox/category}}. local date = args.date date = type(date) == 'string' and date local preposition = 'from' for _, num in ipairs(nums) do local mainCat = args['cat' .. tostring(num)] or args['category' .. tostring(num)] local allCat = args['all' .. tostring(num)] mainCat = type(mainCat) == 'string' and mainCat allCat = type(allCat) == 'string' and allCat if mainCat and date and date ~= '' then local catTitle = string.format('%s %s %s', mainCat, preposition, date) self:addCat(0, catTitle) catTitle = getTitleObject('Category:' .. catTitle) if not catTitle or not catTitle.exists then self:addCat(0, 'Articles with invalid date parameter in template') end elseif mainCat and (not date or date == '') then self:addCat(0, mainCat) end if allCat then self:addCat(0, allCat) end end end function MessageBox:setTemplateCategories() local args = self.args local cfg = self.cfg -- Add template categories. if cfg.templateCategory then if cfg.templateCategoryRequireName then if self.isTemplatePage then self:addCat(10, cfg.templateCategory) end elseif not self.title.isSubpage then self:addCat(10, cfg.templateCategory) end end -- Add template error categories. if cfg.templateErrorCategory then local templateErrorCategory = cfg.templateErrorCategory local templateCat, templateSort if not self.name and not self.title.isSubpage then templateCat = templateErrorCategory elseif self.isTemplatePage then local paramsToCheck = cfg.templateErrorParamsToCheck or {} local count = 0 for i, param in ipairs(paramsToCheck) do if not args[param] then count = count + 1 end end if count > 0 then templateCat = templateErrorCategory templateSort = tostring(count) end if self.categoryNums and #self.categoryNums > 0 then templateCat = templateErrorCategory templateSort = 'C' end end self:addCat(10, templateCat, templateSort) end end function MessageBox:setAllNamespaceCategories() -- Set categories for all namespaces. if self.invalidTypeError then local allSort = (self.title.namespace == 0 and 'Main:' or '') .. self.title.prefixedText self:addCat('all', 'Wikipedia message box parameter needs fixing', allSort) end if self.isSubstituted then self:addCat('all', 'Pages with incorrectly substituted templates') end end function MessageBox:setCategories() if self.title.namespace == 0 then self:setMainspaceCategories() elseif self.title.namespace == 10 then self:setTemplateCategories() end self:setAllNamespaceCategories() end function MessageBox:renderCategories() if not self.hasCategories then -- No categories added, no need to pass them to Category handler so, -- if it was invoked, it would return the empty string. -- So we shortcut and return the empty string. return "" end -- Convert category tables to strings and pass them through -- [[Module:Category handler]]. return require('Module:Category handler')._main{ main = table.concat(self.categories[0] or {}), template = table.concat(self.categories[10] or {}), all = table.concat(self.categories.all or {}), nocat = self.args.nocat, page = self.args.page } end function MessageBox:export() local root = mw.html.create() -- Add the subst check error. if self.isSubstituted and self.name then root:tag('b') :addClass('error') :wikitext(string.format( 'Template <code>%s[[Template:%s|%s]]%s</code> has been incorrectly substituted.', mw.text.nowiki('{{'), self.name, self.name, mw.text.nowiki('}}') )) end -- Create the box table. local boxTable = root:tag('table') boxTable:attr('id', self.id or nil) for i, class in ipairs(self.classes or {}) do boxTable:addClass(class or nil) end boxTable :cssText(self.style or nil) :attr('role', 'presentation') if self.attrs then boxTable:attr(self.attrs) end -- Add the left-hand image. local row = boxTable:tag('tr') if self.imageLeft then local imageLeftCell = row:tag('td'):addClass('mbox-image') if self.imageCellDiv then -- If we are using a div, redefine imageLeftCell so that the image -- is inside it. Divs use style="width: 52px;", which limits the -- image width to 52px. If any images in a div are wider than that, -- they may overlap with the text or cause other display problems. imageLeftCell = imageLeftCell:tag('div'):css('width', '52px') end imageLeftCell:wikitext(self.imageLeft or nil) elseif self.imageEmptyCell then -- Some message boxes define an empty cell if no image is specified, and -- some don't. The old template code in templates where empty cells are -- specified gives the following hint: "No image. Cell with some width -- or padding necessary for text cell to have 100% width." row:tag('td') :addClass('mbox-empty-cell') :cssText(self.imageEmptyCellStyle or nil) end -- Add the text. local textCell = row:tag('td'):addClass('mbox-text') if self.useCollapsibleTextFields then -- The message box uses advanced text parameters that allow things to be -- collapsible. At the moment, only ambox uses this. textCell:cssText(self.textstyle or nil) local textCellDiv = textCell:tag('div') textCellDiv :addClass('mbox-text-span') :wikitext(self.issue or nil) if (self.talk or self.fix) then textCellDiv:tag('span') :addClass('hide-when-compact') :wikitext(self.talk and (' ' .. self.talk) or nil) :wikitext(self.fix and (' ' .. self.fix) or nil) end textCellDiv:wikitext(self.date and (' ' .. self.date) or nil) if self.info and not self.isSmall then textCellDiv :tag('span') :addClass('hide-when-compact') :wikitext(self.info and (' ' .. self.info) or nil) end if self.removalNotice then textCellDiv:tag('small') :addClass('hide-when-compact') :tag('i') :wikitext(string.format(" (%s)", self.removalNotice)) end else -- Default text formatting - anything goes. textCell :cssText(self.textstyle or nil) :wikitext(self.text or nil) end -- Add the right-hand image. if self.imageRight then local imageRightCell = row:tag('td'):addClass('mbox-imageright') if self.imageCellDiv then -- If we are using a div, redefine imageRightCell so that the image -- is inside it. imageRightCell = imageRightCell:tag('div'):css('width', '52px') end imageRightCell :wikitext(self.imageRight or nil) end -- Add the below row. if self.below then boxTable:tag('tr') :tag('td') :attr('colspan', self.imageRight and '3' or '2') :addClass('mbox-text') :cssText(self.textstyle or nil) :wikitext(self.below or nil) end -- Add error message for invalid type parameters. if self.invalidTypeError then root:tag('div') :css('text-align', 'center') :wikitext(string.format( 'This message box is using an invalid "type=%s" parameter and needs fixing.', self.type or '' )) end -- Add categories. root:wikitext(self:renderCategories() or nil) return tostring(root) end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p, mt = {}, {} function p._exportClasses() -- For testing. return { MessageBox = MessageBox } end function p.main(boxType, args, cfgTables) local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE)) box:setParameters() box:setCategories() return box:export() end function mt.__index(t, k) return function (frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return t.main(k, getArgs(frame, {trim = false, removeBlanks = false})) end end return setmetatable(p, mt) tiqc5on6uuhw82w1gda9wz6beyz2y0x Module:Message box/configuration 828 869 1970 1969 2020-09-29T19:15:35Z Chrisb 1 1 revision imported 1969 Scribunto text/plain -------------------------------------------------------------------------------- -- Message box configuration -- -- -- -- This module contains configuration data for [[Module:Message box]]. -- -------------------------------------------------------------------------------- return { ambox = { types = { speedy = { class = 'ambox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ambox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ambox-content', image = 'Ambox important.svg' }, style = { class = 'ambox-style', image = 'Edit-clear.svg' }, move = { class = 'ambox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ambox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ambox-notice', image = 'Information icon4.svg' } }, default = 'notice', allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'}, allowSmall = true, smallParam = 'left', smallClass = 'mbox-small-left', substCheck = true, classes = {'metadata', 'ambox'}, imageEmptyCell = true, imageCheckBlank = true, imageSmallSize = '20x20px', imageCellDiv = true, useCollapsibleTextFields = true, imageRightNone = true, sectionDefault = 'article', allowMainspaceCategories = true, templateCategory = 'Article message templates', templateCategoryRequireName = true, templateErrorCategory = 'Article message templates with missing parameters', templateErrorParamsToCheck = {'issue', 'fix', 'subst'}, removalNotice = '[[Help:Maintenance template removal|Learn how and when to remove this template message]]' }, cmbox = { types = { speedy = { class = 'cmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'cmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'cmbox-content', image = 'Ambox important.svg' }, style = { class = 'cmbox-style', image = 'Edit-clear.svg' }, move = { class = 'cmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'cmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'cmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'cmbox'}, imageEmptyCell = true }, fmbox = { types = { warning = { class = 'fmbox-warning', image = 'Ambox warning pn.svg' }, editnotice = { class = 'fmbox-editnotice', image = 'Information icon4.svg' }, system = { class = 'fmbox-system', image = 'Information icon4.svg' } }, default = 'system', showInvalidTypeError = true, classes = {'fmbox'}, imageEmptyCell = false, imageRightNone = false }, imbox = { types = { speedy = { class = 'imbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'imbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'imbox-content', image = 'Ambox important.svg' }, style = { class = 'imbox-style', image = 'Edit-clear.svg' }, move = { class = 'imbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'imbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, license = { class = 'imbox-license licensetpl', image = 'Imbox license.png' -- @todo We need an SVG version of this }, featured = { class = 'imbox-featured', image = 'Cscr-featured.svg' }, notice = { class = 'imbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'imbox'}, imageEmptyCell = true, below = true, templateCategory = 'File message boxes' }, ombox = { types = { speedy = { class = 'ombox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'ombox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'ombox-content', image = 'Ambox important.svg' }, style = { class = 'ombox-style', image = 'Edit-clear.svg' }, move = { class = 'ombox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'ombox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'ombox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'ombox'}, allowSmall = true, imageEmptyCell = true, imageRightNone = true }, tmbox = { types = { speedy = { class = 'tmbox-speedy', image = 'Ambox warning pn.svg' }, delete = { class = 'tmbox-delete', image = 'Ambox warning pn.svg' }, content = { class = 'tmbox-content', image = 'Ambox important.svg' }, style = { class = 'tmbox-style', image = 'Edit-clear.svg' }, move = { class = 'tmbox-move', image = 'Merge-split-transwiki default.svg' }, protection = { class = 'tmbox-protection', image = 'Semi-protection-shackle-keyhole.svg' }, notice = { class = 'tmbox-notice', image = 'Information icon4.svg' } }, default = 'notice', showInvalidTypeError = true, classes = {'tmbox'}, allowSmall = true, imageRightNone = true, imageEmptyCell = true, imageEmptyCellStyle = true, templateCategory = 'Talk message boxes' } } rz63o9789otb966y0k5pcntqf0bl6te Module:Message box/configuration/doc 828 894 2020 2019 2020-09-29T19:15:40Z Chrisb 1 1 revision imported 2019 wikitext text/x-wiki {{high-use|6585462}} {{Used in system}} {{Module rating|protected}} 6mhwoofggnpm89njapz90to04wmgjtl Module:Message box/doc 828 888 2008 2007 2020-09-29T19:15:39Z Chrisb 1 1 revision imported 2007 wikitext text/x-wiki {{High-use|6,323,224+|all-pages = yes}} {{Used in system}} {{module rating|p}} This is a meta-module that implements the message box templates {{tl|mbox}}, {{tl|ambox}}, {{tl|cmbox}}, {{tl|fmbox}}, {{tl|imbox}}, {{tl|ombox}}, and {{tl|tmbox}}. It is intended to be used from Lua modules, and should not be used directly from wiki pages. If you want to use this module's functionality from a wiki page, please use the individual message box templates instead. == Usage == To use this module from another Lua module, first you need to load it. <syntaxhighlight lang="lua"> local messageBox = require('Module:Message box') </syntaxhighlight> To create a message box, use the <code>main</code> function. It takes two parameters: the first is the box type (as a string), and the second is a table containing the message box parameters. <syntaxhighlight lang="lua"> local box = messageBox.main( boxType, { param1 = param1, param2 = param2, -- More parameters... }) </syntaxhighlight> There are seven available box types: {| class="wikitable" ! Box type !! Template !! Purpose |- | <code>mbox</code> || {{tl|mbox}} || For message boxes to be used in multiple namespaces |- | <code>ambox</code> || {{tl|ambox}} || For article message boxes |- | <code>cmbox</code> || {{tl|cmbox}} || For category message boxes |- | <code>fmbox</code> || {{tl|fmbox}} || For interface message boxes |- | <code>imbox</code> || {{tl|imbox}} || For file namespace message boxes |- | <code>tmbox</code> || {{tl|tmbox}} || For talk page message boxes |- | <code>ombox</code> || {{tl|ombox}} || For message boxes in other namespaces |} See the template page of each box type for the available parameters. == Usage from #invoke == As well as the <code>main</code> function, this module has separate functions for each box type. They are accessed using the code <code><nowiki>{{#invoke:Message box|mbox|...}}</nowiki></code>, <code><nowiki>{{#invoke:Message box|ambox|...}}</nowiki></code>, etc. These will work when called from other modules, but they access code used to process arguments passed from #invoke, and so calling them will be less efficient than calling <code>main</code>. == Technical details == The module uses the same basic code for each of the templates listed above; the differences between each of them are configured using the data at [[Module:Message box/configuration]]. Here are the various configuration options and what they mean: * <code>types</code> – a table containing data used by the type parameter of the message box. The table keys are the values that can be passed to the type parameter, and the table values are tables containing the class and the image used by that type. * <code>default</code> – the type to use if no value was passed to the type parameter, or if an invalid value was specified. * <code>showInvalidTypeError</code> – whether to show an error if the value passed to the type parameter was invalid. * <code>allowBlankParams</code> – usually blank values are stripped from parameters passed to the module. However, whitespace is preserved for the parameters included in the allowBlankParams table. * <code>allowSmall</code> – whether a small version of the message box can be produced with "small=yes". * <code>smallParam</code> – a custom name for the small parameter. For example, if set to "left" you can produce a small message box using "small=left". * <code>smallClass</code> – the class to use for small message boxes. * <code>substCheck</code> – whether to perform a subst check or not. * <code>classes</code> – an array of classes to use with the message box. * <code>imageEmptyCell</code> – whether to use an empty {{tag|td}} cell if there is no image set. This is used to preserve spacing for message boxes with a width of less than 100% of the screen. * <code>imageEmptyCellStyle</code> – whether empty image cells should be styled. * <code>imageCheckBlank</code> – whether "image=blank" results in no image being displayed. * <code>imageSmallSize</code> – usually, images used in small message boxes are set to 30x30px. This sets a custom size. * <code>imageCellDiv</code> – whether to enclose the image in a div enforcing a maximum image size. * <code>useCollapsibleTextFields</code> – whether to use text fields that can be collapsed, i.e. "issue", "fix", "talk", etc. Currently only used in ambox. * <code>imageRightNone</code> – whether imageright=none results in no image being displayed on the right-hand side of the message box. * <code>sectionDefault</code> – the default name for the "section" parameter. Depends on <code>useCollapsibleTextFields</code>. * <code>allowMainspaceCategories</code> – allow categorisation in the main namespace. * <code>templateCategory</code> – the name of a category to be placed on the template page. * <code>templateCategoryRequireName</code> – whether the <code>name</code> parameter is required to display the template category. * <code>templateErrorCategory</code> – the name of the error category to be used on the template page. * <code>templateErrorParamsToCheck</code> – an array of parameter names to check. If any are absent, the <code>templateErrorCategory</code> is applied to the template page. re49gipsysdi8dr5si150dtxxr4b4co Module:Message box/testcases 828 1170 2572 2571 2020-09-29T19:17:57Z Chrisb 1 1 revision imported 2571 wikitext text/x-wiki {{ambox/testcases}} {{cmbox/testcases}} {{imbox/testcases}} {{fmbox/testcases}} {{mbox/testcases}} {{ombox/testcases}} {{tmbox/testcases}} dm1l0klbnx7aresxqqqt9vldlsciva6 Module:Namespace detect 828 905 2042 2041 2020-09-29T19:15:44Z Chrisb 1 1 revision imported 2041 Scribunto text/plain --[[ -------------------------------------------------------------------------------- -- -- -- NAMESPACE DETECT -- -- -- -- This module implements the {{namespace detect}} template in Lua, with a -- -- few improvements: all namespaces and all namespace aliases are supported, -- -- and namespace names are detected automatically for the local wiki. The -- -- module can also use the corresponding subject namespace value if it is -- -- used on a talk page. Parameter names can be configured for different wikis -- -- by altering the values in the "cfg" table in -- -- Module:Namespace detect/config. -- -- -- -------------------------------------------------------------------------------- --]] local data = mw.loadData('Module:Namespace detect/data') local argKeys = data.argKeys local cfg = data.cfg local mappings = data.mappings local yesno = require('Module:Yesno') local mArguments -- Lazily initialise Module:Arguments local mTableTools -- Lazily initilalise Module:TableTools local ustringLower = mw.ustring.lower local p = {} local function fetchValue(t1, t2) -- Fetches a value from the table t1 for the first key in array t2 where -- a non-nil value of t1 exists. for i, key in ipairs(t2) do local value = t1[key] if value ~= nil then return value end end return nil end local function equalsArrayValue(t, value) -- Returns true if value equals a value in the array t. Otherwise -- returns false. for i, arrayValue in ipairs(t) do if value == arrayValue then return true end end return false end function p.getPageObject(page) -- Get the page object, passing the function through pcall in case of -- errors, e.g. being over the expensive function count limit. if page then local success, pageObject = pcall(mw.title.new, page) if success then return pageObject else return nil end else return mw.title.getCurrentTitle() end end -- Provided for backward compatibility with other modules function p.getParamMappings() return mappings end local function getNamespace(args) -- This function gets the namespace name from the page object. local page = fetchValue(args, argKeys.demopage) if page == '' then page = nil end local demospace = fetchValue(args, argKeys.demospace) if demospace == '' then demospace = nil end local subjectns = fetchValue(args, argKeys.subjectns) local ret if demospace then -- Handle "demospace = main" properly. if equalsArrayValue(argKeys.main, ustringLower(demospace)) then ret = mw.site.namespaces[0].name else ret = demospace end else local pageObject = p.getPageObject(page) if pageObject then if pageObject.isTalkPage then -- Get the subject namespace if the option is set, -- otherwise use "talk". if yesno(subjectns) then ret = mw.site.namespaces[pageObject.namespace].subject.name else ret = 'talk' end else ret = pageObject.nsText end else return nil -- return nil if the page object doesn't exist. end end ret = ret:gsub('_', ' ') return ustringLower(ret) end function p._main(args) -- Check the parameters stored in the mappings table for any matches. local namespace = getNamespace(args) or 'other' -- "other" avoids nil table keys local params = mappings[namespace] or {} local ret = fetchValue(args, params) --[[ -- If there were no matches, return parameters for other namespaces. -- This happens if there was no text specified for the namespace that -- was detected or if the demospace parameter is not a valid -- namespace. Note that the parameter for the detected namespace must be -- completely absent for this to happen, not merely blank. --]] if ret == nil then ret = fetchValue(args, argKeys.other) end return ret end function p.main(frame) mArguments = require('Module:Arguments') local args = mArguments.getArgs(frame, {removeBlanks = false}) local ret = p._main(args) return ret or '' end function p.table(frame) --[[ -- Create a wikitable of all subject namespace parameters, for -- documentation purposes. The talk parameter is optional, in case it -- needs to be excluded in the documentation. --]] -- Load modules and initialise variables. mTableTools = require('Module:TableTools') local namespaces = mw.site.namespaces local cfg = data.cfg local useTalk = type(frame) == 'table' and type(frame.args) == 'table' and yesno(frame.args.talk) -- Whether to use the talk parameter. -- Get the header names. local function checkValue(value, default) if type(value) == 'string' then return value else return default end end local nsHeader = checkValue(cfg.wikitableNamespaceHeader, 'Namespace') local aliasesHeader = checkValue(cfg.wikitableAliasesHeader, 'Aliases') -- Put the namespaces in order. local mappingsOrdered = {} for nsname, params in pairs(mappings) do if useTalk or nsname ~= 'talk' then local nsid = namespaces[nsname].id -- Add 1, as the array must start with 1; nsid 0 would be lost otherwise. nsid = nsid + 1 mappingsOrdered[nsid] = params end end mappingsOrdered = mTableTools.compressSparseArray(mappingsOrdered) -- Build the table. local ret = '{| class="wikitable"' .. '\n|-' .. '\n! ' .. nsHeader .. '\n! ' .. aliasesHeader for i, params in ipairs(mappingsOrdered) do for j, param in ipairs(params) do if j == 1 then ret = ret .. '\n|-' .. '\n| <code>' .. param .. '</code>' .. '\n| ' elseif j == 2 then ret = ret .. '<code>' .. param .. '</code>' else ret = ret .. ', <code>' .. param .. '</code>' end end end ret = ret .. '\n|-' .. '\n|}' return ret end return p j7kygz1y56jpz4doq0m2c6x1td5d8ar Module:Namespace detect/config 828 906 2044 2043 2020-09-29T19:15:44Z Chrisb 1 1 revision imported 2043 Scribunto text/plain -------------------------------------------------------------------------------- -- Namespace detect configuration data -- -- -- -- This module stores configuration data for Module:Namespace detect. Here -- -- you can localise the module to your wiki's language. -- -- -- -- To activate a configuration item, you need to uncomment it. This means -- -- that you need to remove the text "-- " at the start of the line. -- -------------------------------------------------------------------------------- local cfg = {} -- Don't edit this line. -------------------------------------------------------------------------------- -- Parameter names -- -- These configuration items specify custom parameter names. Values added -- -- here will work in addition to the default English parameter names. -- -- To add one extra name, you can use this format: -- -- -- -- cfg.foo = 'parameter name' -- -- -- -- To add multiple names, you can use this format: -- -- -- -- cfg.foo = {'parameter name 1', 'parameter name 2', 'parameter name 3'} -- -------------------------------------------------------------------------------- ---- This parameter displays content for the main namespace: -- cfg.main = 'main' ---- This parameter displays in talk namespaces: -- cfg.talk = 'talk' ---- This parameter displays content for "other" namespaces (namespaces for which ---- parameters have not been specified): -- cfg.other = 'other' ---- This parameter makes talk pages behave as though they are the corresponding ---- subject namespace. Note that this parameter is used with [[Module:Yesno]]. ---- Edit that module to change the default values of "yes", "no", etc. -- cfg.subjectns = 'subjectns' ---- This parameter sets a demonstration namespace: -- cfg.demospace = 'demospace' ---- This parameter sets a specific page to compare: cfg.demopage = 'page' -------------------------------------------------------------------------------- -- Table configuration -- -- These configuration items allow customisation of the "table" function, -- -- used to generate a table of possible parameters in the module -- -- documentation. -- -------------------------------------------------------------------------------- ---- The header for the namespace column in the wikitable containing the list of ---- possible subject-space parameters. -- cfg.wikitableNamespaceHeader = 'Namespace' ---- The header for the wikitable containing the list of possible subject-space ---- parameters. -- cfg.wikitableAliasesHeader = 'Aliases' -------------------------------------------------------------------------------- -- End of configuration data -- -------------------------------------------------------------------------------- return cfg -- Don't edit this line. 1o6ozz56i8q0xgyl6xa41n2v7kelhli Module:Namespace detect/data 828 907 2046 2045 2020-09-29T19:15:45Z Chrisb 1 1 revision imported 2045 Scribunto text/plain -------------------------------------------------------------------------------- -- Namespace detect data -- -- This module holds data for [[Module:Namespace detect]] to be loaded per -- -- page, rather than per #invoke, for performance reasons. -- -------------------------------------------------------------------------------- local cfg = require('Module:Namespace detect/config') local function addKey(t, key, defaultKey) if key ~= defaultKey then t[#t + 1] = key end end -- Get a table of parameters to query for each default parameter name. -- This allows wikis to customise parameter names in the cfg table while -- ensuring that default parameter names will always work. The cfg table -- values can be added as a string, or as an array of strings. local defaultKeys = { 'main', 'talk', 'other', 'subjectns', 'demospace', 'demopage' } local argKeys = {} for i, defaultKey in ipairs(defaultKeys) do argKeys[defaultKey] = {defaultKey} end for defaultKey, t in pairs(argKeys) do local cfgValue = cfg[defaultKey] local cfgValueType = type(cfgValue) if cfgValueType == 'string' then addKey(t, cfgValue, defaultKey) elseif cfgValueType == 'table' then for i, key in ipairs(cfgValue) do addKey(t, key, defaultKey) end end cfg[defaultKey] = nil -- Free the cfg value as we don't need it any more. end local function getParamMappings() --[[ -- Returns a table of how parameter names map to namespace names. The keys -- are the actual namespace names, in lower case, and the values are the -- possible parameter names for that namespace, also in lower case. The -- table entries are structured like this: -- { -- [''] = {'main'}, -- ['wikipedia'] = {'wikipedia', 'project', 'wp'}, -- ... -- } --]] local mappings = {} local mainNsName = mw.site.subjectNamespaces[0].name mainNsName = mw.ustring.lower(mainNsName) mappings[mainNsName] = mw.clone(argKeys.main) mappings['talk'] = mw.clone(argKeys.talk) for nsid, ns in pairs(mw.site.subjectNamespaces) do if nsid ~= 0 then -- Exclude main namespace. local nsname = mw.ustring.lower(ns.name) local canonicalName = mw.ustring.lower(ns.canonicalName) mappings[nsname] = {nsname} if canonicalName ~= nsname then table.insert(mappings[nsname], canonicalName) end for _, alias in ipairs(ns.aliases) do table.insert(mappings[nsname], mw.ustring.lower(alias)) end end end return mappings end return { argKeys = argKeys, cfg = cfg, mappings = getParamMappings() } ojp6d3pc8mql5nufaqdg576c9so3479 Module:Navbar 828 1310 2852 2851 2020-09-29T19:18:19Z Chrisb 1 1 revision imported 2851 Scribunto text/plain local p = {} local getArgs local ul function p.addItem (mini, full, link, descrip, args, url) local l if url then l = {'[', '', ']'} else l = {'[[', '|', ']]'} end ul:tag('li') :addClass('nv-'..full) :wikitext(l[1] .. link .. l[2]) :tag(args.mini and 'abbr' or 'span') :attr('title', descrip..' this template') :cssText(args.fontstyle) :wikitext(args.mini and mini or full) :done() :wikitext(l[3]) end function p.brackets (position, c, args, div) if args.brackets then div :tag('span') :css('margin-'..position, '-0.125em') :cssText(args.fontstyle) :wikitext(c) end end function p._navbar(args) local show = {true, true, true, false, false, false} local titleArg = 1 if args.collapsible then titleArg = 2 if not args.plain then args.mini = 1 end if args.fontcolor then args.fontstyle = 'color:' .. args.fontcolor .. ';' end args.style = 'float:left; text-align:left' end if args.template then titleArg = 'template' show = {true, false, false, false, false, false} local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6, talk = 2, edit = 3, hist = 4, move = 5, watch = 6} for k,v in ipairs(require ('Module:TableTools').compressSparseArray(args)) do local num = index[v] if num then show[num] = true end end end if args.noedit then show[3] = false end local titleText = args[titleArg] or (':' .. mw.getCurrentFrame():getParent():getTitle()) local title = mw.title.new(mw.text.trim(titleText), 'Template') if not title then error('Invalid title ' .. titleText) end local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or '' local div = mw.html.create():tag('div') div :addClass('plainlinks') :addClass('hlist') :addClass('navbar') :cssText(args.style) if args.mini then div:addClass('mini') end if not (args.mini or args.plain) then div :tag('span') :css('word-spacing', 0) :cssText(args.fontstyle) :wikitext(args.text or 'This box:') :wikitext(' ') end p.brackets('right', '&#91; ', args, div) ul = div:tag('ul') if show[1] then p.addItem('v', 'view', title.fullText, 'View', args) end if show[2] then p.addItem('t', 'talk', talkpage, 'Discuss', args) end if show[3] then p.addItem('e', 'edit', title:fullUrl('action=edit'), 'Edit', args, true) end if show[4] then p.addItem('h', 'hist', title:fullUrl('action=history'), 'History of', args, true) end if show[5] then local move = mw.title.new ('Special:Movepage') p.addItem('m', 'move', move:fullUrl('target='..title.fullText), 'Move', args, true) end if show[6] then p.addItem('w', 'watch', title:fullUrl('action=watch'), 'Watch', args, true) end p.brackets('left', ' &#93;', args, div) if args.collapsible then div :done() :tag('div') :css('font-size', '114%') :css('margin', args.mini and '0 4em' or '0 7em') :cssText(args.fontstyle) :wikitext(args[1]) end return tostring(div:done()) end function p.navbar(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return p._navbar(getArgs(frame)) end return p 0kto9e56pycr6rz0vadnqvghkpm06x9 Module:Navbox 828 1474 3252 3251 2020-10-11T01:36:02Z Chrisb 1 1 revision imported 3251 Scribunto text/plain -- -- This module implements {{Navbox}} -- local p = {} local navbar = require('Module:Navbar')._navbar local getArgs -- lazily initialized local args local border local listnums local ODD_EVEN_MARKER = '\127_ODDEVEN_\127' local RESTART_MARKER = '\127_ODDEVEN0_\127' local REGEX_MARKER = '\127_ODDEVEN(%d?)_\127' local function striped(wikitext) -- Return wikitext with markers replaced for odd/even striping. -- Child (subgroup) navboxes are flagged with a category that is removed -- by parent navboxes. The result is that the category shows all pages -- where a child navbox is not contained in a parent navbox. local orphanCat = '[[Category:Navbox orphans]]' if border == 'subgroup' and args.orphan ~= 'yes' then -- No change; striping occurs in outermost navbox. return wikitext .. orphanCat end local first, second = 'odd', 'even' if args.evenodd then if args.evenodd == 'swap' then first, second = second, first else first = args.evenodd second = first end end local changer if first == second then changer = first else local index = 0 changer = function (code) if code == '0' then -- Current occurrence is for a group before a nested table. -- Set it to first as a valid although pointless class. -- The next occurrence will be the first row after a title -- in a subgroup and will also be first. index = 0 return first end index = index + 1 return index % 2 == 1 and first or second end end local regex = orphanCat:gsub('([%[%]])', '%%%1') return (wikitext:gsub(regex, ''):gsub(REGEX_MARKER, changer)) -- () omits gsub count end local function processItem(item, nowrapitems) if item:sub(1, 2) == '{|' then -- Applying nowrap to lines in a table does not make sense. -- Add newlines to compensate for trim of x in |parm=x in a template. return '\n' .. item ..'\n' end if nowrapitems == 'yes' then local lines = {} for line in (item .. '\n'):gmatch('([^\n]*)\n') do local prefix, content = line:match('^([*:;#]+)%s*(.*)') if prefix and not content:match('^<span class="nowrap">') then line = prefix .. '<span class="nowrap">' .. content .. '</span>' end table.insert(lines, line) end item = table.concat(lines, '\n') end if item:match('^[*:;#]') then return '\n' .. item ..'\n' end return item end local function renderNavBar(titleCell) if args.navbar ~= 'off' and args.navbar ~= 'plain' and not (not args.name and mw.getCurrentFrame():getParent():getTitle():gsub('/sandbox$', '') == 'Template:Navbox') then titleCell:wikitext(navbar{ args.name, mini = 1, fontstyle = (args.basestyle or '') .. ';' .. (args.titlestyle or '') .. ';background:none transparent;border:none;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none; padding:0;' }) end end -- -- Title row -- local function renderTitleRow(tbl) if not args.title then return end local titleRow = tbl:tag('tr') if args.titlegroup then titleRow :tag('th') :attr('scope', 'row') :addClass('navbox-group') :addClass(args.titlegroupclass) :cssText(args.basestyle) :cssText(args.groupstyle) :cssText(args.titlegroupstyle) :wikitext(args.titlegroup) end local titleCell = titleRow:tag('th'):attr('scope', 'col') if args.titlegroup then titleCell :css('border-left', '2px solid #fdfdfd') :css('width', '100%') end local titleColspan = 2 if args.imageleft then titleColspan = titleColspan + 1 end if args.image then titleColspan = titleColspan + 1 end if args.titlegroup then titleColspan = titleColspan - 1 end titleCell :cssText(args.basestyle) :cssText(args.titlestyle) :addClass('navbox-title') :attr('colspan', titleColspan) renderNavBar(titleCell) titleCell :tag('div') -- id for aria-labelledby attribute :attr('id', mw.uri.anchorEncode(args.title)) :addClass(args.titleclass) :css('font-size', '114%') :css('margin', '0 4em') :wikitext(processItem(args.title)) end -- -- Above/Below rows -- local function getAboveBelowColspan() local ret = 2 if args.imageleft then ret = ret + 1 end if args.image then ret = ret + 1 end return ret end local function renderAboveRow(tbl) if not args.above then return end tbl:tag('tr') :tag('td') :addClass('navbox-abovebelow') :addClass(args.aboveclass) :cssText(args.basestyle) :cssText(args.abovestyle) :attr('colspan', getAboveBelowColspan()) :tag('div') -- id for aria-labelledby attribute, if no title :attr('id', args.title and nil or mw.uri.anchorEncode(args.above)) :wikitext(processItem(args.above, args.nowrapitems)) end local function renderBelowRow(tbl) if not args.below then return end tbl:tag('tr') :tag('td') :addClass('navbox-abovebelow') :addClass(args.belowclass) :cssText(args.basestyle) :cssText(args.belowstyle) :attr('colspan', getAboveBelowColspan()) :tag('div') :wikitext(processItem(args.below, args.nowrapitems)) end -- -- List rows -- local function renderListRow(tbl, index, listnum) local row = tbl:tag('tr') if index == 1 and args.imageleft then row :tag('td') :addClass('noviewer') :addClass('navbox-image') :addClass(args.imageclass) :css('width', '1px') -- Minimize width :css('padding', '0px 2px 0px 0px') :cssText(args.imageleftstyle) :attr('rowspan', #listnums) :tag('div') :wikitext(processItem(args.imageleft)) end if args['group' .. listnum] then local groupCell = row:tag('th') -- id for aria-labelledby attribute, if lone group with no title or above if listnum == 1 and not (args.title or args.above or args.group2) then groupCell :attr('id', mw.uri.anchorEncode(args.group1)) end groupCell :attr('scope', 'row') :addClass('navbox-group') :addClass(args.groupclass) :cssText(args.basestyle) :css('width', args.groupwidth or '1%') -- If groupwidth not specified, minimize width groupCell :cssText(args.groupstyle) :cssText(args['group' .. listnum .. 'style']) :wikitext(args['group' .. listnum]) end local listCell = row:tag('td') if args['group' .. listnum] then listCell :css('text-align', 'left') :css('border-left-width', '2px') :css('border-left-style', 'solid') else listCell:attr('colspan', 2) end if not args.groupwidth then listCell:css('width', '100%') end local rowstyle -- usually nil so cssText(rowstyle) usually adds nothing if index % 2 == 1 then rowstyle = args.oddstyle else rowstyle = args.evenstyle end local listText = args['list' .. listnum] local oddEven = ODD_EVEN_MARKER if listText:sub(1, 12) == '</div><table' then -- Assume list text is for a subgroup navbox so no automatic striping for this row. oddEven = listText:find('<th[^>]*"navbox%-title"') and RESTART_MARKER or 'odd' end listCell :css('padding', '0px') :cssText(args.liststyle) :cssText(rowstyle) :cssText(args['list' .. listnum .. 'style']) :addClass('navbox-list') :addClass('navbox-' .. oddEven) :addClass(args.listclass) :addClass(args['list' .. listnum .. 'class']) :tag('div') :css('padding', (index == 1 and args.list1padding) or args.listpadding or '0em 0.25em') :wikitext(processItem(listText, args.nowrapitems)) if index == 1 and args.image then row :tag('td') :addClass('noviewer') :addClass('navbox-image') :addClass(args.imageclass) :css('width', '1px') -- Minimize width :css('padding', '0px 0px 0px 2px') :cssText(args.imagestyle) :attr('rowspan', #listnums) :tag('div') :wikitext(processItem(args.image)) end end -- -- Tracking categories -- local function needsHorizontalLists() if border == 'subgroup' or args.tracking == 'no' then return false end local listClasses = { ['plainlist'] = true, ['hlist'] = true, ['hlist hnum'] = true, ['hlist hwrap'] = true, ['hlist vcard'] = true, ['vcard hlist'] = true, ['hlist vevent'] = true, } return not (listClasses[args.listclass] or listClasses[args.bodyclass]) end local function hasBackgroundColors() for _, key in ipairs({'titlestyle', 'groupstyle', 'basestyle', 'abovestyle', 'belowstyle'}) do if tostring(args[key]):find('background', 1, true) then return true end end end local function hasBorders() for _, key in ipairs({'groupstyle', 'basestyle', 'abovestyle', 'belowstyle'}) do if tostring(args[key]):find('border', 1, true) then return true end end end local function isIllegible() local styleratio = require('Module:Color contrast')._styleratio for key, style in pairs(args) do if tostring(key):match("style$") then if styleratio{mw.text.unstripNoWiki(style)} < 4.5 then return true end end end return false end local function getTrackingCategories() local cats = {} if needsHorizontalLists() then table.insert(cats, 'Navigational boxes without horizontal lists') end if hasBackgroundColors() then table.insert(cats, 'Navboxes using background colours') end if isIllegible() then table.insert(cats, 'Potentially illegible navboxes') end if hasBorders() then table.insert(cats, 'Navboxes using borders') end return cats end local function renderTrackingCategories(builder) local title = mw.title.getCurrentTitle() if title.namespace ~= 10 then return end -- not in template space local subpage = title.subpageText if subpage == 'doc' or subpage == 'sandbox' or subpage == 'testcases' then return end for _, cat in ipairs(getTrackingCategories()) do builder:wikitext('[[Category:' .. cat .. ']]') end end -- -- Main navbox tables -- local function renderMainTable() local tbl = mw.html.create('table') :addClass('nowraplinks') :addClass(args.bodyclass) if args.title and (args.state ~= 'plain' and args.state ~= 'off') then if args.state == 'collapsed' then args.state = 'mw-collapsed' end tbl :addClass('mw-collapsible') :addClass(args.state or 'autocollapse') end tbl:css('border-spacing', 0) if border == 'subgroup' or border == 'none' then tbl :addClass('navbox-subgroup') :cssText(args.bodystyle) :cssText(args.style) else -- regular navbox - bodystyle and style will be applied to the wrapper table tbl :addClass('navbox-inner') :css('background', 'transparent') :css('color', 'inherit') end tbl:cssText(args.innerstyle) renderTitleRow(tbl) renderAboveRow(tbl) for i, listnum in ipairs(listnums) do renderListRow(tbl, i, listnum) end renderBelowRow(tbl) return tbl end function p._navbox(navboxArgs) args = navboxArgs listnums = {} for k, _ in pairs(args) do if type(k) == 'string' then local listnum = k:match('^list(%d+)$') if listnum then table.insert(listnums, tonumber(listnum)) end end end table.sort(listnums) border = mw.text.trim(args.border or args[1] or '') if border == 'child' then border = 'subgroup' end -- render the main body of the navbox local tbl = renderMainTable() -- render the appropriate wrapper around the navbox, depending on the border param local res = mw.html.create() if border == 'none' then local nav = res:tag('div') :attr('role', 'navigation') :node(tbl) -- aria-labelledby title, otherwise above, otherwise lone group if args.title or args.above or (args.group1 and not args.group2) then nav:attr('aria-labelledby', mw.uri.anchorEncode(args.title or args.above or args.group1)) else nav:attr('aria-label', 'Navbox') end elseif border == 'subgroup' then -- We assume that this navbox is being rendered in a list cell of a parent navbox, and is -- therefore inside a div with padding:0em 0.25em. We start with a </div> to avoid the -- padding being applied, and at the end add a <div> to balance out the parent's </div> res :wikitext('</div>') :node(tbl) :wikitext('<div>') else local nav = res:tag('div') :attr('role', 'navigation') :addClass('navbox') :addClass(args.navboxclass) :cssText(args.bodystyle) :cssText(args.style) :css('padding', '3px') :node(tbl) -- aria-labelledby title, otherwise above, otherwise lone group if args.title or args.above or (args.group1 and not args.group2) then nav:attr('aria-labelledby', mw.uri.anchorEncode(args.title or args.above or args.group1)) else nav:attr('aria-label', 'Navbox') end end if (args.nocat or 'false'):lower() == 'false' then renderTrackingCategories(res) end return striped(tostring(res)) end function p.navbox(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end args = getArgs(frame, {wrappers = {'Template:Navbox'}}) -- Read the arguments in the order they'll be output in, to make references number in the right order. local _ _ = args.title _ = args.above for i = 1, 20 do _ = args["group" .. tostring(i)] _ = args["list" .. tostring(i)] end _ = args.below return p._navbox(args) end return p bc958emdhcifoov0yk148od75bgl1ef Module:No globals 828 870 1972 1971 2020-09-29T19:15:35Z Chrisb 1 1 revision imported 1971 Scribunto text/plain local mt = getmetatable(_G) or {} function mt.__index (t, k) if k ~= 'arg' then error('Tried to read nil global ' .. tostring(k), 2) end return nil end function mt.__newindex(t, k, v) if k ~= 'arg' then error('Tried to write global ' .. tostring(k), 2) end rawset(t, k, v) end setmetatable(_G, mt) gggsv54pq7f94l3up48hr91qtxnskdm Module:No globals/doc 828 895 2022 2021 2020-09-29T19:15:41Z Chrisb 1 1 revision imported 2021 wikitext text/x-wiki {{high-use|13,053,000+|all-pages = yes}} {{used in system}} {{module rating|protected}} <!-- Template categories go at the bottom of this page. --> This module causes an error if any nil [[global variable|global]] is read or if any global is written to, with the exception of <var>arg</var>. To use, add <syntaxhighlight lang="lua" inline>require('Module:No globals')</syntaxhighlight> to the top of the module using it. The <var>arg</var> variable is excluded because it is necessary for Scribunto's [[mw:Extension:Scribunto/Lua reference manual#require|require]] function to work properly. (See the Scribunto source code [[phab:diffusion/ELUA/browse/master/includes/engines/LuaCommon/lualib/package.lua;1fad4da13706f4dbdd0477a834675b9d09757bf6|here]].) == See also == * [[Module:Log globals]] – adds all nil global reads/writes to the lua log <includeonly>{{Sandbox other|| <!-- Template categories go here. --> [[Category:Lua metamodules]] }}</includeonly> ao3gft5mjdo3qod5axzzwy3mctw71gv Module:Ns has subpages 828 1627 4902 4901 2020-10-11T05:39:05Z Chrisb 1 1 revision imported 4901 Scribunto text/plain -- This module implements [[Template:Ns has subpages]]. -- While the template is fairly simple, this information is made available to -- Lua directly, so using a module means that we don't have to update the -- template as new namespaces are added. local p = {} function p._main(ns, frame) -- Get the current namespace if we were not passed one. if not ns then ns = mw.title.getCurrentTitle().namespace end -- Look up the namespace table from mw.site.namespaces. This should work -- for a majority of cases. local nsTable = mw.site.namespaces[ns] -- Try using string matching to get the namespace from page names. -- Do a quick and dirty bad title check to try and make sure we do the same -- thing as {{NAMESPACE}} in most cases. if not nsTable and type(ns) == 'string' and not ns:find('[<>|%[%]{}]') then local nsStripped = ns:gsub('^[_%s]*:', '') nsStripped = nsStripped:gsub(':.*$', '') nsTable = mw.site.namespaces[nsStripped] end -- If we still have no match then try the {{NAMESPACE}} parser function, -- which should catch the remainder of cases. Don't use a mw.title object, -- as this would increment the expensive function count for each new page -- tested. if not nsTable then frame = frame or mw.getCurrentFrame() local nsProcessed = frame:callParserFunction('NAMESPACE', ns) nsTable = nsProcessed and mw.site.namespaces[nsProcessed] end return nsTable and nsTable.hasSubpages end function p.main(frame) local ns = frame:getParent().args[1] if ns then ns = ns:match('^%s*(.-)%s*$') -- trim whitespace ns = tonumber(ns) or ns end local hasSubpages = p._main(ns, frame) return hasSubpages and 'yes' or '' end return p qb0b1z2vff7kifnw21v205d791esbiz Module:Pagetype 828 1639 4926 4925 2020-10-11T05:50:37Z Chrisb 1 1 revision imported 4925 Scribunto text/plain -------------------------------------------------------------------------------- -- -- -- PAGETYPE -- -- -- -- This is a meta-module intended to replace {{pagetype}} and similar -- -- templates. It automatically detects namespaces, and allows for a -- -- great deal of customisation. It can easily be ported to other -- -- wikis by changing the values in the [[Module:Pagetype/config]]. -- -- -- -------------------------------------------------------------------------------- -- Load config. local cfg = mw.loadData('Module:Pagetype/config') -- Load required modules. local getArgs = require('Module:Arguments').getArgs local yesno = require('Module:Yesno') local nsDetectModule = require('Module:Namespace detect') local nsDetect = nsDetectModule._main local getParamMappings = nsDetectModule.getParamMappings local getPageObject = nsDetectModule.getPageObject local p = {} local function shallowCopy(t) -- Makes a shallow copy of a table. local ret = {} for k, v in pairs(t) do ret[k] = v end return ret end local function checkPagetypeInput(namespace, val) -- Checks to see whether we need the default value for the given namespace, -- and if so gets it from the pagetypes table. -- The yesno function returns true/false for "yes", "no", etc., and returns -- val for other input. local ret = yesno(val, val) if ret and type(ret) ~= 'string' then ret = cfg.pagetypes[namespace] end return ret end local function getPagetypeFromClass(class, param, aliasTable, default) -- Gets the pagetype from a class specified from the first positional -- parameter. param = yesno(param, param) if param ~= false then -- No check if specifically disallowed. for _, alias in ipairs(aliasTable) do if class == alias then if type(param) == 'string' then return param else return default end end end end end local function getNsDetectValue(args) -- Builds the arguments to pass to [[Module:Namespace detect]] and returns -- the result. -- Get the default values. local ndArgs = {} local defaultns = args[cfg.defaultns] if defaultns == cfg.defaultnsAll then ndArgs = shallowCopy(cfg.pagetypes) else local defaultnsArray if defaultns == cfg.defaultnsExtended then defaultnsArray = cfg.extendedNamespaces elseif defaultns == cfg.defaultnsNone then defaultnsArray = {} else defaultnsArray = cfg.defaultNamespaces end for _, namespace in ipairs(defaultnsArray) do ndArgs[namespace] = cfg.pagetypes[namespace] end end --[[ -- Add custom values passed in from the arguments. These overwrite the -- defaults. The possible argument names are fetched from -- Module:Namespace detect automatically in case new namespaces are -- added. Although we accept namespace aliases as parameters, we only pass -- the local namespace name as a parameter to Module:Namespace detect. -- This means that the "image" parameter can overwrite defaults for the -- File: namespace, which wouldn't work if we passed the parameters through -- separately. --]] local mappings = getParamMappings() for ns, paramAliases in pairs(mappings) do -- Copy the aliases table, as # doesn't work with tables returned from -- mw.loadData. paramAliases = shallowCopy(paramAliases) local paramName = paramAliases[1] -- Iterate backwards along the array so that any values for the local -- namespace names overwrite those for namespace aliases. for i = #paramAliases, 1, -1 do local paramAlias = paramAliases[i] local ndArg = checkPagetypeInput(paramAlias, args[paramAlias]) if ndArg == false then -- If any arguments are false, convert them to nil to protect -- against breakage by future changes to -- [[Module:Namespace detect]]. ndArgs[paramName] = nil elseif ndArg then ndArgs[paramName] = ndArg end end end -- Check for disambiguation-class and N/A-class pages in mainspace. if ndArgs.main then local class = args[1] if type(class) == 'string' then -- Put in lower case so e.g. "Dab" and "dab" will both match. class = mw.ustring.lower(class) end local dab = getPagetypeFromClass( class, args[cfg.dab], cfg.dabAliases, cfg.dabDefault ) if dab then ndArgs.main = dab else local na = getPagetypeFromClass( class, args[cfg.na], cfg.naAliases, cfg.naDefault ) if na then ndArgs.main = na end end end -- If there is no talk value specified, use the corresponding subject -- namespace for talk pages. if not ndArgs.talk then ndArgs.subjectns = true end -- Add the fallback value. This can also be customised, but it cannot be -- disabled. local other = args[cfg.other] -- We will ignore true/false/nil results from yesno here, but using it -- anyway for consistency. other = yesno(other, other) if type(other) == 'string' then ndArgs.other = other else ndArgs.other = cfg.otherDefault end -- Allow custom page values. ndArgs.page = args.page return nsDetect(ndArgs) end local function detectRedirects(args) local redirect = args[cfg.redirect] -- The yesno function returns true/false for "yes", "no", etc., and returns -- redirect for other input. redirect = yesno(redirect, redirect) if redirect == false then -- Detect redirects unless they have been explicitly disallowed with -- "redirect=no" or similar. return end local pageObject = getPageObject(args.page) -- If we are using subject namespaces elsewhere, do so here as well. if pageObject and not yesno(args.talk, true) and args[cfg.defaultns] ~= cfg.defaultnsAll then pageObject = getPageObject( pageObject.subjectNsText .. ':' .. pageObject.text ) end -- Allow custom values for redirects. if pageObject and pageObject.isRedirect then if type(redirect) == 'string' then return redirect else return cfg.redirectDefault end end end function p._main(args) local redirect = detectRedirects(args) local pagetype = "" if redirect then pagetype = redirect else pagetype = getNsDetectValue(args) end if yesno(args.plural, false) then if cfg.irregularPlurals[pagetype] then pagetype = cfg.irregularPlurals[pagetype] else pagetype = pagetype .. cfg.plural -- often 's' end end if yesno(args.caps, false) then pagetype = mw.ustring.upper(mw.ustring.sub(pagetype, 1, 1)) .. mw.ustring.sub(pagetype, 2) end return pagetype end function p.main(frame) local args = getArgs(frame) return p._main(args) end return p 3uutklb10j89clizor7gnyrlkhbqg0d Module:Pagetype/config 828 1640 4928 4927 2020-10-11T05:50:37Z Chrisb 1 1 revision imported 4927 Scribunto text/plain -------------------------------------------------------------------------------- -- Module:Pagetype configuration data -- -- This page holds localisation and configuration data for Module:Pagetype. -- -------------------------------------------------------------------------------- local cfg = {} -- Don't edit this line. -------------------------------------------------------------------------------- -- Start configuration data -- -------------------------------------------------------------------------------- -- This table holds the values to use for "main=true", "user=true", etc. Keys to -- this table should be namespace parameters that can be used with -- [[Module:Namespace detect]]. cfg.pagetypes = { ['main'] = 'article', ['user'] = 'user page', ['project'] = 'project page', ['wikipedia'] = 'project page', ['wp'] = 'project page', ['file'] = 'file', ['image'] = 'file', ['mediawiki'] = 'interface page', ['template'] = 'template', ['help'] = 'help page', ['category'] = 'category', ['portal'] = 'portal', ['book'] = 'book', ['draft'] = 'draft', ['education program'] = 'education program page', ['timedtext'] = 'Timed Text page', ['module'] = 'module', ['topic'] = 'topic', ['gadget'] = 'gadget', ['gadget definition'] = 'gadget definition', ['talk'] = 'talk page', ['special'] = 'special page', ['media'] = 'file', } -- This table holds the names of the namespaces to be looked up from -- cfg.pagetypes by default. cfg.defaultNamespaces = { 'main', 'file', 'template', 'category', 'module', 'book' } -- This table holds the names of the namespaces to be looked up from -- cfg.pagetypes if cfg.defaultnsExtended is set. cfg.extendedNamespaces = { 'main', 'user', 'project', 'file', 'mediawiki', 'template', 'category', 'help', 'portal', 'module', 'book', 'draft' } -- The parameter name to set which default namespace values to be looked up from -- cfg.pagetypes. cfg.defaultns = 'defaultns' -- The value of cfg.defaultns to set all namespaces, including talk. cfg.defaultnsAll = 'all' -- The value of cfg.defaultns to set the namespaces listed in -- cfg.extendedNamespaces cfg.defaultnsExtended = 'extended' -- The value of cfg.defaultns to set no default namespaces. cfg.defaultnsNone = 'none' -- The parameter name to use for disambiguation pages page. cfg.dab = 'dab' -- This table holds the different possible aliases for disambiguation-class -- pages. These should be lower-case. cfg.dabAliases = { 'disambiguation', 'disambig', 'disamb', 'dab' } -- The default value for disambiguation pages. cfg.dabDefault = 'page' -- The parameter name to use for N/A-class page. cfg.na = 'na' -- This table holds the different possible aliases for N/A-class pages. These -- should be lower-case. cfg.naAliases = {'na', 'n/a'} -- The default value for N/A-class pages. cfg.naDefault = 'page' -- The parameter name to use for redirects. cfg.redirect = 'redirect' -- The default value to use for redirects. cfg.redirectDefault = 'redirect' -- The parameter name for undefined namespaces. cfg.other = 'other' -- The value used if the module detects an undefined namespace. cfg.otherDefault = 'page' -- The usual suffix denoting a plural. cfg.plural = 's' -- This table holds plurals not formed by a simple suffix. cfg.irregularPlurals = { ["category"] = "categories" } -------------------------------------------------------------------------------- -- End configuration data -- -------------------------------------------------------------------------------- return cfg -- Don't edit this line tb6svg2he6570yy55mfxge7s1pk60ma Module:Parameter names example 828 1670 4988 4987 2020-10-11T05:50:45Z Chrisb 1 1 revision imported 4987 Scribunto text/plain -- This module implements {{parameter names example}}. local p = {} local function makeParam(s) local lb = '&#123;' local rb = '&#125;' return lb:rep(3) .. s .. rb:rep(3) end local function italicize(s) return "''" .. s .. "''" end local function plain(s) return s end function p._main(args, frame) -- Find how we want to format the arguments to the template. local formatFunc if args._display == 'italics' or args._display == 'italic' then formatFunc = italicize elseif args._display == 'plain' then formatFunc = plain else formatFunc = makeParam end -- Build the table of template arguments. local targs = {} for k, v in pairs(args) do if type(k) == 'number' then targs[v] = formatFunc(v) elseif not k:find('^_') then targs[k] = v end end targs['nocat'] = 'yes'; targs['categories'] = 'no'; targs['demo'] = 'yes'; -- Find the template name. local template if args._template then template = args._template else local currentTitle = mw.title.getCurrentTitle() if currentTitle.prefixedText:find('/sandbox$') then template = currentTitle.prefixedText else template = currentTitle.basePageTitle.prefixedText end end -- Call the template with the arguments. frame = frame or mw.getCurrentFrame() local success, result = pcall( frame.expandTemplate, frame, {title = template, args = targs} ) if success then return result else return '' end end function p.main(frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = 'Template:Parameter names example' }) return p._main(args, frame) end return p a7o5z39ztbr5ehhznd1pi588b5yaqou Module:Protection banner 828 889 2010 2009 2020-09-29T19:15:39Z Chrisb 1 1 revision imported 2009 Scribunto text/plain -- This module implements {{pp-meta}} and its daughter templates such as -- {{pp-dispute}}, {{pp-vandalism}} and {{pp-sock}}. -- Initialise necessary modules. require('Module:No globals') local makeFileLink = require('Module:File link')._main local effectiveProtectionLevel = require('Module:Effective protection level')._main local effectiveProtectionExpiry = require('Module:Effective protection expiry')._main local yesno = require('Module:Yesno') -- Lazily initialise modules and objects we don't always need. local getArgs, makeMessageBox, lang -- Set constants. local CONFIG_MODULE = 'Module:Protection banner/config' -------------------------------------------------------------------------------- -- Helper functions -------------------------------------------------------------------------------- local function makeCategoryLink(cat, sort) if cat then return string.format( '[[%s:%s|%s]]', mw.site.namespaces[14].name, cat, sort ) end end -- Validation function for the expiry and the protection date local function validateDate(dateString, dateType) if not lang then lang = mw.language.getContentLanguage() end local success, result = pcall(lang.formatDate, lang, 'U', dateString) if success then result = tonumber(result) if result then return result end end error(string.format( 'invalid %s: %s', dateType, tostring(dateString) ), 4) end local function makeFullUrl(page, query, display) return string.format( '[%s %s]', tostring(mw.uri.fullUrl(page, query)), display ) end -- Given a directed graph formatted as node -> table of direct successors, -- get a table of all nodes reachable from a given node (though always -- including the given node). local function getReachableNodes(graph, start) local toWalk, retval = {[start] = true}, {} while true do -- Can't use pairs() since we're adding and removing things as we're iterating local k = next(toWalk) -- This always gets the "first" key if k == nil then return retval end toWalk[k] = nil retval[k] = true for _,v in ipairs(graph[k]) do if not retval[v] then toWalk[v] = true end end end end -------------------------------------------------------------------------------- -- Protection class -------------------------------------------------------------------------------- local Protection = {} Protection.__index = Protection Protection.supportedActions = { edit = true, move = true, autoreview = true, upload = true } Protection.bannerConfigFields = { 'text', 'explanation', 'tooltip', 'alt', 'link', 'image' } function Protection.new(args, cfg, title) local obj = {} obj._cfg = cfg obj.title = title or mw.title.getCurrentTitle() -- Set action if not args.action then obj.action = 'edit' elseif Protection.supportedActions[args.action] then obj.action = args.action else error(string.format( 'invalid action: %s', tostring(args.action) ), 3) end -- Set level obj.level = args.demolevel or effectiveProtectionLevel(obj.action, obj.title) if not obj.level or (obj.action == 'move' and obj.level == 'autoconfirmed') then -- Users need to be autoconfirmed to move pages anyway, so treat -- semi-move-protected pages as unprotected. obj.level = '*' end -- Set expiry local effectiveExpiry = effectiveProtectionExpiry(obj.action, obj.title) if effectiveExpiry == 'infinity' then obj.expiry = 'indef' elseif effectiveExpiry ~= 'unknown' then obj.expiry = validateDate(effectiveExpiry, 'expiry date') end -- Set reason if args[1] then obj.reason = mw.ustring.lower(args[1]) if obj.reason:find('|') then error('reasons cannot contain the pipe character ("|")', 3) end end -- Set protection date if args.date then obj.protectionDate = validateDate(args.date, 'protection date') end -- Set banner config do obj.bannerConfig = {} local configTables = {} if cfg.banners[obj.action] then configTables[#configTables + 1] = cfg.banners[obj.action][obj.reason] end if cfg.defaultBanners[obj.action] then configTables[#configTables + 1] = cfg.defaultBanners[obj.action][obj.level] configTables[#configTables + 1] = cfg.defaultBanners[obj.action].default end configTables[#configTables + 1] = cfg.masterBanner for i, field in ipairs(Protection.bannerConfigFields) do for j, t in ipairs(configTables) do if t[field] then obj.bannerConfig[field] = t[field] break end end end end return setmetatable(obj, Protection) end function Protection:isUserScript() -- Whether the page is a user JavaScript or CSS page. local title = self.title return title.namespace == 2 and ( title.contentModel == 'javascript' or title.contentModel == 'css' ) end function Protection:isProtected() return self.level ~= '*' end function Protection:shouldShowLock() -- Whether we should output a banner/padlock return self:isProtected() and not self:isUserScript() end -- Whether this page needs a protection category. Protection.shouldHaveProtectionCategory = Protection.shouldShowLock function Protection:isTemporary() return type(self.expiry) == 'number' end function Protection:makeProtectionCategory() if not self:shouldHaveProtectionCategory() then return '' end local cfg = self._cfg local title = self.title -- Get the expiry key fragment. local expiryFragment if self.expiry == 'indef' then expiryFragment = self.expiry elseif type(self.expiry) == 'number' then expiryFragment = 'temp' end -- Get the namespace key fragment. local namespaceFragment = cfg.categoryNamespaceKeys[title.namespace] if not namespaceFragment and title.namespace % 2 == 1 then namespaceFragment = 'talk' end -- Define the order that key fragments are tested in. This is done with an -- array of tables containing the value to be tested, along with its -- position in the cfg.protectionCategories table. local order = { {val = expiryFragment, keypos = 1}, {val = namespaceFragment, keypos = 2}, {val = self.reason, keypos = 3}, {val = self.level, keypos = 4}, {val = self.action, keypos = 5} } --[[ -- The old protection templates used an ad-hoc protection category system, -- with some templates prioritising namespaces in their categories, and -- others prioritising the protection reason. To emulate this in this module -- we use the config table cfg.reasonsWithNamespacePriority to set the -- reasons for which namespaces have priority over protection reason. -- If we are dealing with one of those reasons, move the namespace table to -- the end of the order table, i.e. give it highest priority. If not, the -- reason should have highest priority, so move that to the end of the table -- instead. --]] table.insert(order, table.remove(order, self.reason and cfg.reasonsWithNamespacePriority[self.reason] and 2 or 3)) --[[ -- Define the attempt order. Inactive subtables (subtables with nil "value" -- fields) are moved to the end, where they will later be given the key -- "all". This is to cut down on the number of table lookups in -- cfg.protectionCategories, which grows exponentially with the number of -- non-nil keys. We keep track of the number of active subtables with the -- noActive parameter. --]] local noActive, attemptOrder do local active, inactive = {}, {} for i, t in ipairs(order) do if t.val then active[#active + 1] = t else inactive[#inactive + 1] = t end end noActive = #active attemptOrder = active for i, t in ipairs(inactive) do attemptOrder[#attemptOrder + 1] = t end end --[[ -- Check increasingly generic key combinations until we find a match. If a -- specific category exists for the combination of key fragments we are -- given, that match will be found first. If not, we keep trying different -- key fragment combinations until we match using the key -- "all-all-all-all-all". -- -- To generate the keys, we index the key subtables using a binary matrix -- with indexes i and j. j is only calculated up to the number of active -- subtables. For example, if there were three active subtables, the matrix -- would look like this, with 0 corresponding to the key fragment "all", and -- 1 corresponding to other key fragments. -- -- j 1 2 3 -- i -- 1 1 1 1 -- 2 0 1 1 -- 3 1 0 1 -- 4 0 0 1 -- 5 1 1 0 -- 6 0 1 0 -- 7 1 0 0 -- 8 0 0 0 -- -- Values of j higher than the number of active subtables are set -- to the string "all". -- -- A key for cfg.protectionCategories is constructed for each value of i. -- The position of the value in the key is determined by the keypos field in -- each subtable. --]] local cats = cfg.protectionCategories for i = 1, 2^noActive do local key = {} for j, t in ipairs(attemptOrder) do if j > noActive then key[t.keypos] = 'all' else local quotient = i / 2 ^ (j - 1) quotient = math.ceil(quotient) if quotient % 2 == 1 then key[t.keypos] = t.val else key[t.keypos] = 'all' end end end key = table.concat(key, '|') local attempt = cats[key] if attempt then return makeCategoryLink(attempt, title.text) end end return '' end function Protection:isIncorrect() local expiry = self.expiry return not self:shouldHaveProtectionCategory() or type(expiry) == 'number' and expiry < os.time() end function Protection:isTemplateProtectedNonTemplate() local action, namespace = self.action, self.title.namespace return self.level == 'templateeditor' and ( (action ~= 'edit' and action ~= 'move') or (namespace ~= 10 and namespace ~= 828) ) end function Protection:makeCategoryLinks() local msg = self._cfg.msg local ret = {self:makeProtectionCategory()} if self:isIncorrect() then ret[#ret + 1] = makeCategoryLink( msg['tracking-category-incorrect'], self.title.text ) end if self:isTemplateProtectedNonTemplate() then ret[#ret + 1] = makeCategoryLink( msg['tracking-category-template'], self.title.text ) end return table.concat(ret) end -------------------------------------------------------------------------------- -- Blurb class -------------------------------------------------------------------------------- local Blurb = {} Blurb.__index = Blurb Blurb.bannerTextFields = { text = true, explanation = true, tooltip = true, alt = true, link = true } function Blurb.new(protectionObj, args, cfg) return setmetatable({ _cfg = cfg, _protectionObj = protectionObj, _args = args }, Blurb) end -- Private methods -- function Blurb:_formatDate(num) -- Formats a Unix timestamp into dd Month, YYYY format. lang = lang or mw.language.getContentLanguage() local success, date = pcall( lang.formatDate, lang, self._cfg.msg['expiry-date-format'] or 'j F Y', '@' .. tostring(num) ) if success then return date end end function Blurb:_getExpandedMessage(msgKey) return self:_substituteParameters(self._cfg.msg[msgKey]) end function Blurb:_substituteParameters(msg) if not self._params then local parameterFuncs = {} parameterFuncs.CURRENTVERSION = self._makeCurrentVersionParameter parameterFuncs.EDITREQUEST = self._makeEditRequestParameter parameterFuncs.EXPIRY = self._makeExpiryParameter parameterFuncs.EXPLANATIONBLURB = self._makeExplanationBlurbParameter parameterFuncs.IMAGELINK = self._makeImageLinkParameter parameterFuncs.INTROBLURB = self._makeIntroBlurbParameter parameterFuncs.INTROFRAGMENT = self._makeIntroFragmentParameter parameterFuncs.PAGETYPE = self._makePagetypeParameter parameterFuncs.PROTECTIONBLURB = self._makeProtectionBlurbParameter parameterFuncs.PROTECTIONDATE = self._makeProtectionDateParameter parameterFuncs.PROTECTIONLEVEL = self._makeProtectionLevelParameter parameterFuncs.PROTECTIONLOG = self._makeProtectionLogParameter parameterFuncs.TALKPAGE = self._makeTalkPageParameter parameterFuncs.TOOLTIPBLURB = self._makeTooltipBlurbParameter parameterFuncs.TOOLTIPFRAGMENT = self._makeTooltipFragmentParameter parameterFuncs.VANDAL = self._makeVandalTemplateParameter self._params = setmetatable({}, { __index = function (t, k) local param if parameterFuncs[k] then param = parameterFuncs[k](self) end param = param or '' t[k] = param return param end }) end msg = msg:gsub('${(%u+)}', self._params) return msg end function Blurb:_makeCurrentVersionParameter() -- A link to the page history or the move log, depending on the kind of -- protection. local pagename = self._protectionObj.title.prefixedText if self._protectionObj.action == 'move' then -- We need the move log link. return makeFullUrl( 'Special:Log', {type = 'move', page = pagename}, self:_getExpandedMessage('current-version-move-display') ) else -- We need the history link. return makeFullUrl( pagename, {action = 'history'}, self:_getExpandedMessage('current-version-edit-display') ) end end function Blurb:_makeEditRequestParameter() local mEditRequest = require('Module:Submit an edit request') local action = self._protectionObj.action local level = self._protectionObj.level -- Get the edit request type. local requestType if action == 'edit' then if level == 'autoconfirmed' then requestType = 'semi' elseif level == 'extendedconfirmed' then requestType = 'extended' elseif level == 'templateeditor' then requestType = 'template' end end requestType = requestType or 'full' -- Get the display value. local display = self:_getExpandedMessage('edit-request-display') return mEditRequest._link{type = requestType, display = display} end function Blurb:_makeExpiryParameter() local expiry = self._protectionObj.expiry if type(expiry) == 'number' then return self:_formatDate(expiry) else return expiry end end function Blurb:_makeExplanationBlurbParameter() -- Cover special cases first. if self._protectionObj.title.namespace == 8 then -- MediaWiki namespace return self:_getExpandedMessage('explanation-blurb-nounprotect') end -- Get explanation blurb table keys local action = self._protectionObj.action local level = self._protectionObj.level local talkKey = self._protectionObj.title.isTalkPage and 'talk' or 'subject' -- Find the message in the explanation blurb table and substitute any -- parameters. local explanations = self._cfg.explanationBlurbs local msg if explanations[action][level] and explanations[action][level][talkKey] then msg = explanations[action][level][talkKey] elseif explanations[action][level] and explanations[action][level].default then msg = explanations[action][level].default elseif explanations[action].default and explanations[action].default[talkKey] then msg = explanations[action].default[talkKey] elseif explanations[action].default and explanations[action].default.default then msg = explanations[action].default.default else error(string.format( 'could not find explanation blurb for action "%s", level "%s" and talk key "%s"', action, level, talkKey ), 8) end return self:_substituteParameters(msg) end function Blurb:_makeImageLinkParameter() local imageLinks = self._cfg.imageLinks local action = self._protectionObj.action local level = self._protectionObj.level local msg if imageLinks[action][level] then msg = imageLinks[action][level] elseif imageLinks[action].default then msg = imageLinks[action].default else msg = imageLinks.edit.default end return self:_substituteParameters(msg) end function Blurb:_makeIntroBlurbParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('intro-blurb-expiry') else return self:_getExpandedMessage('intro-blurb-noexpiry') end end function Blurb:_makeIntroFragmentParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('intro-fragment-expiry') else return self:_getExpandedMessage('intro-fragment-noexpiry') end end function Blurb:_makePagetypeParameter() local pagetypes = self._cfg.pagetypes return pagetypes[self._protectionObj.title.namespace] or pagetypes.default or error('no default pagetype defined', 8) end function Blurb:_makeProtectionBlurbParameter() local protectionBlurbs = self._cfg.protectionBlurbs local action = self._protectionObj.action local level = self._protectionObj.level local msg if protectionBlurbs[action][level] then msg = protectionBlurbs[action][level] elseif protectionBlurbs[action].default then msg = protectionBlurbs[action].default elseif protectionBlurbs.edit.default then msg = protectionBlurbs.edit.default else error('no protection blurb defined for protectionBlurbs.edit.default', 8) end return self:_substituteParameters(msg) end function Blurb:_makeProtectionDateParameter() local protectionDate = self._protectionObj.protectionDate if type(protectionDate) == 'number' then return self:_formatDate(protectionDate) else return protectionDate end end function Blurb:_makeProtectionLevelParameter() local protectionLevels = self._cfg.protectionLevels local action = self._protectionObj.action local level = self._protectionObj.level local msg if protectionLevels[action][level] then msg = protectionLevels[action][level] elseif protectionLevels[action].default then msg = protectionLevels[action].default elseif protectionLevels.edit.default then msg = protectionLevels.edit.default else error('no protection level defined for protectionLevels.edit.default', 8) end return self:_substituteParameters(msg) end function Blurb:_makeProtectionLogParameter() local pagename = self._protectionObj.title.prefixedText if self._protectionObj.action == 'autoreview' then -- We need the pending changes log. return makeFullUrl( 'Special:Log', {type = 'stable', page = pagename}, self:_getExpandedMessage('pc-log-display') ) else -- We need the protection log. return makeFullUrl( 'Special:Log', {type = 'protect', page = pagename}, self:_getExpandedMessage('protection-log-display') ) end end function Blurb:_makeTalkPageParameter() return string.format( '[[%s:%s#%s|%s]]', mw.site.namespaces[self._protectionObj.title.namespace].talk.name, self._protectionObj.title.text, self._args.section or 'top', self:_getExpandedMessage('talk-page-link-display') ) end function Blurb:_makeTooltipBlurbParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('tooltip-blurb-expiry') else return self:_getExpandedMessage('tooltip-blurb-noexpiry') end end function Blurb:_makeTooltipFragmentParameter() if self._protectionObj:isTemporary() then return self:_getExpandedMessage('tooltip-fragment-expiry') else return self:_getExpandedMessage('tooltip-fragment-noexpiry') end end function Blurb:_makeVandalTemplateParameter() return require('Module:Vandal-m')._main{ self._args.user or self._protectionObj.title.baseText } end -- Public methods -- function Blurb:makeBannerText(key) -- Validate input. if not key or not Blurb.bannerTextFields[key] then error(string.format( '"%s" is not a valid banner config field', tostring(key) ), 2) end -- Generate the text. local msg = self._protectionObj.bannerConfig[key] if type(msg) == 'string' then return self:_substituteParameters(msg) elseif type(msg) == 'function' then msg = msg(self._protectionObj, self._args) if type(msg) ~= 'string' then error(string.format( 'bad output from banner config function with key "%s"' .. ' (expected string, got %s)', tostring(key), type(msg) ), 4) end return self:_substituteParameters(msg) end end -------------------------------------------------------------------------------- -- BannerTemplate class -------------------------------------------------------------------------------- local BannerTemplate = {} BannerTemplate.__index = BannerTemplate function BannerTemplate.new(protectionObj, cfg) local obj = {} obj._cfg = cfg -- Set the image filename. local imageFilename = protectionObj.bannerConfig.image if imageFilename then obj._imageFilename = imageFilename else -- If an image filename isn't specified explicitly in the banner config, -- generate it from the protection status and the namespace. local action = protectionObj.action local level = protectionObj.level local namespace = protectionObj.title.namespace local reason = protectionObj.reason -- Deal with special cases first. if ( namespace == 10 or namespace == 828 or reason and obj._cfg.indefImageReasons[reason] ) and action == 'edit' and level == 'sysop' and not protectionObj:isTemporary() then -- Fully protected modules and templates get the special red "indef" -- padlock. obj._imageFilename = obj._cfg.msg['image-filename-indef'] else -- Deal with regular protection types. local images = obj._cfg.images if images[action] then if images[action][level] then obj._imageFilename = images[action][level] elseif images[action].default then obj._imageFilename = images[action].default end end end end return setmetatable(obj, BannerTemplate) end function BannerTemplate:renderImage() local filename = self._imageFilename or self._cfg.msg['image-filename-default'] or 'Transparent.gif' return makeFileLink{ file = filename, size = (self.imageWidth or 20) .. 'px', alt = self._imageAlt, link = self._imageLink, caption = self.imageCaption } end -------------------------------------------------------------------------------- -- Banner class -------------------------------------------------------------------------------- local Banner = setmetatable({}, BannerTemplate) Banner.__index = Banner function Banner.new(protectionObj, blurbObj, cfg) local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb. obj.imageWidth = 40 obj.imageCaption = blurbObj:makeBannerText('alt') -- Large banners use the alt text for the tooltip. obj._reasonText = blurbObj:makeBannerText('text') obj._explanationText = blurbObj:makeBannerText('explanation') obj._page = protectionObj.title.prefixedText -- Only makes a difference in testing. return setmetatable(obj, Banner) end function Banner:__tostring() -- Renders the banner. makeMessageBox = makeMessageBox or require('Module:Message box').main local reasonText = self._reasonText or error('no reason text set', 2) local explanationText = self._explanationText local mbargs = { page = self._page, type = 'protection', image = self:renderImage(), text = string.format( "'''%s'''%s", reasonText, explanationText and '<br />' .. explanationText or '' ) } return makeMessageBox('mbox', mbargs) end -------------------------------------------------------------------------------- -- Padlock class -------------------------------------------------------------------------------- local Padlock = setmetatable({}, BannerTemplate) Padlock.__index = Padlock function Padlock.new(protectionObj, blurbObj, cfg) local obj = BannerTemplate.new(protectionObj, cfg) -- This doesn't need the blurb. obj.imageWidth = 20 obj.imageCaption = blurbObj:makeBannerText('tooltip') obj._imageAlt = blurbObj:makeBannerText('alt') obj._imageLink = blurbObj:makeBannerText('link') obj._indicatorName = cfg.padlockIndicatorNames[protectionObj.action] or cfg.padlockIndicatorNames.default or 'pp-default' return setmetatable(obj, Padlock) end function Padlock:__tostring() local frame = mw.getCurrentFrame() -- The nowiki tag helps prevent whitespace at the top of articles. return frame:extensionTag{name = 'nowiki'} .. frame:extensionTag{ name = 'indicator', args = {name = self._indicatorName}, content = self:renderImage() } end -------------------------------------------------------------------------------- -- Exports -------------------------------------------------------------------------------- local p = {} function p._exportClasses() -- This is used for testing purposes. return { Protection = Protection, Blurb = Blurb, BannerTemplate = BannerTemplate, Banner = Banner, Padlock = Padlock, } end function p._main(args, cfg, title) args = args or {} cfg = cfg or require(CONFIG_MODULE) local protectionObj = Protection.new(args, cfg, title) local ret = {} -- If a page's edit protection is equally or more restrictive than its -- protection from some other action, then don't bother displaying anything -- for the other action (except categories). if protectionObj.action == 'edit' or args.demolevel or not getReachableNodes( cfg.hierarchy, protectionObj.level )[effectiveProtectionLevel('edit', protectionObj.title)] then -- Initialise the blurb object local blurbObj = Blurb.new(protectionObj, args, cfg) -- Render the banner if protectionObj:shouldShowLock() then ret[#ret + 1] = tostring( (yesno(args.small) and Padlock or Banner) .new(protectionObj, blurbObj, cfg) ) end end -- Render the categories if yesno(args.category) ~= false then ret[#ret + 1] = protectionObj:makeCategoryLinks() end return table.concat(ret) end function p.main(frame, cfg) cfg = cfg or require(CONFIG_MODULE) -- Find default args, if any. local parent = frame.getParent and frame:getParent() local defaultArgs = parent and cfg.wrappers[parent:getTitle():gsub('/sandbox$', '')] -- Find user args, and use the parent frame if we are being called from a -- wrapper template. getArgs = getArgs or require('Module:Arguments').getArgs local userArgs = getArgs(frame, { parentOnly = defaultArgs, frameOnly = not defaultArgs }) -- Build the args table. User-specified args overwrite default args. local args = {} for k, v in pairs(defaultArgs or {}) do args[k] = v end for k, v in pairs(userArgs) do args[k] = v end return p._main(args, cfg) end return p pwlommmk9wzkviwu5fu6f8b29n12m1l Module:Protection banner/config 828 890 2012 2011 2020-09-29T19:15:40Z Chrisb 1 1 revision imported 2011 Scribunto text/plain -- This module provides configuration data for [[Module:Protection banner]]. return { -------------------------------------------------------------------------------- -- -- BANNER DATA -- -------------------------------------------------------------------------------- --[[ -- Banner data consists of six fields: -- * text - the main protection text that appears at the top of protection -- banners. -- * explanation - the text that appears below the main protection text, used -- to explain the details of the protection. -- * tooltip - the tooltip text you see when you move the mouse over a small -- padlock icon. -- * link - the page that the small padlock icon links to. -- * alt - the alt text for the small padlock icon. This is also used as tooltip -- text for the large protection banners. -- * image - the padlock image used in both protection banners and small padlock -- icons. -- -- The module checks in three separate tables to find a value for each field. -- First it checks the banners table, which has values specific to the reason -- for the page being protected. Then the module checks the defaultBanners -- table, which has values specific to each protection level. Finally, the -- module checks the masterBanner table, which holds data for protection -- templates to use if no data has been found in the previous two tables. -- -- The values in the banner data can take parameters. These are specified -- using ${TEXTLIKETHIS} (a dollar sign preceding a parameter name -- enclosed in curly braces). -- -- Available parameters: -- -- ${CURRENTVERSION} - a link to the page history or the move log, with the -- display message "current-version-edit-display" or -- "current-version-move-display". -- -- ${EDITREQUEST} - a link to create an edit request for the current page. -- -- ${EXPLANATIONBLURB} - an explanation blurb, e.g. "Please discuss any changes -- on the talk page; you may submit a request to ask an administrator to make -- an edit if it is minor or supported by consensus." -- -- ${IMAGELINK} - a link to set the image to, depending on the protection -- action and protection level. -- -- ${INTROBLURB} - the PROTECTIONBLURB parameter, plus the expiry if an expiry -- is set. E.g. "Editing of this page by new or unregistered users is currently -- disabled until dd Month YYYY." -- -- ${INTROFRAGMENT} - the same as ${INTROBLURB}, but without final punctuation -- so that it can be used in run-on sentences. -- -- ${PAGETYPE} - the type of the page, e.g. "article" or "template". -- Defined in the cfg.pagetypes table. -- -- ${PROTECTIONBLURB} - a blurb explaining the protection level of the page, e.g. -- "Editing of this page by new or unregistered users is currently disabled" -- -- ${PROTECTIONDATE} - the protection date, if it has been supplied to the -- template. -- -- ${PROTECTIONLEVEL} - the protection level, e.g. "fully protected" or -- "semi-protected". -- -- ${PROTECTIONLOG} - a link to the protection log or the pending changes log, -- depending on the protection action. -- -- ${TALKPAGE} - a link to the talk page. If a section is specified, links -- straight to that talk page section. -- -- ${TOOLTIPBLURB} - uses the PAGETYPE, PROTECTIONTYPE and EXPIRY parameters to -- create a blurb like "This template is semi-protected", or "This article is -- move-protected until DD Month YYYY". -- -- ${VANDAL} - links for the specified username (or the root page name) -- using Module:Vandal-m. -- -- Functions -- -- For advanced users, it is possible to use Lua functions instead of strings -- in the banner config tables. Using functions gives flexibility that is not -- possible just by using parameters. Functions take two arguments, the -- protection object and the template arguments, and they must output a string. -- -- For example: -- -- text = function (protectionObj, args) -- if protectionObj.level == 'autoconfirmed' then -- return 'foo' -- else -- return 'bar' -- end -- end -- -- Some protection object properties and methods that may be useful: -- protectionObj.action - the protection action -- protectionObj.level - the protection level -- protectionObj.reason - the protection reason -- protectionObj.expiry - the expiry. Nil if unset, the string "indef" if set -- to indefinite, and the protection time in unix time if temporary. -- protectionObj.protectionDate - the protection date in unix time, or nil if -- unspecified. -- protectionObj.bannerConfig - the banner config found by the module. Beware -- of editing the config field used by the function, as it could create an -- infinite loop. -- protectionObj:isProtected - returns a boolean showing whether the page is -- protected. -- protectionObj:isTemporary - returns a boolean showing whether the expiry is -- temporary. -- protectionObj:isIncorrect - returns a boolean showing whether the protection -- template is incorrect. --]] -- The master banner data, used if no values have been found in banners or -- defaultBanners. masterBanner = { text = '${INTROBLURB}', explanation = '${EXPLANATIONBLURB}', tooltip = '${TOOLTIPBLURB}', link = '${IMAGELINK}', alt = 'Page ${PROTECTIONLEVEL}' }, -- The default banner data. This holds banner data for different protection -- levels. -- *required* - this table needs edit, move, autoreview and upload subtables. defaultBanners = { edit = {}, move = {}, autoreview = { default = { alt = 'Page protected with pending changes', tooltip = 'All edits by unregistered and new users are subject to review prior to becoming visible to unregistered users', image = 'Pending-protection-shackle.svg' } }, upload = {} }, -- The banner data. This holds banner data for different protection reasons. -- In fact, the reasons specified in this table control which reasons are -- valid inputs to the first positional parameter. -- -- There is also a non-standard "description" field that can be used for items -- in this table. This is a description of the protection reason for use in the -- module documentation. -- -- *required* - this table needs edit, move, autoreview and upload subtables. banners = { edit = { blp = { description = 'For pages protected to promote compliance with the' .. ' [[Wikipedia:Biographies of living persons' .. '|biographies of living persons]] policy', text = '${INTROFRAGMENT} to promote compliance with' .. ' [[Wikipedia:Biographies of living persons' .. "|Wikipedia's&nbsp;policy on&nbsp;the&nbsp;biographies" .. ' of&nbsp;living&nbsp;people]].', tooltip = '${TOOLTIPFRAGMENT} to promote compliance with the policy on' .. ' biographies of living persons', }, dmca = { description = 'For pages protected by the Wikimedia Foundation' .. ' due to [[Digital Millennium Copyright Act]] takedown requests', explanation = function (protectionObj, args) local ret = 'Pursuant to a rights owner notice under the Digital' .. ' Millennium Copyright Act (DMCA) regarding some content' .. ' in this article, the Wikimedia Foundation acted under' .. ' applicable law and took down and restricted the content' .. ' in question.' if args.notice then ret = ret .. ' A copy of the received notice can be found here: ' .. args.notice .. '.' end ret = ret .. ' For more information, including websites discussing' .. ' how to file a counter-notice, please see' .. " [[Wikipedia:Office actions]] and the article's ${TALKPAGE}." .. "'''Do not remove this template from the article until the" .. " restrictions are withdrawn'''." return ret end, image = 'Office-protection-shackle.svg', }, dispute = { description = 'For pages protected due to editing disputes', text = function (protectionObj, args) -- Find the value of "disputes". local display = 'disputes' local disputes if args.section then disputes = string.format( '[[%s:%s#%s|%s]]', mw.site.namespaces[protectionObj.title.namespace].talk.name, protectionObj.title.text, args.section, display ) else disputes = display end -- Make the blurb, depending on the expiry. local msg if type(protectionObj.expiry) == 'number' then msg = '${INTROFRAGMENT} or until editing %s have been resolved.' else msg = '${INTROFRAGMENT} until editing %s have been resolved.' end return string.format(msg, disputes) end, explanation = "This protection is '''not''' an endorsement of the" .. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}', tooltip = '${TOOLTIPFRAGMENT} due to editing disputes', }, ecp = { description = 'For articles in topic areas authorized by' .. ' [[Wikipedia:Arbitration Committee|ArbCom]] or' .. ' meets the criteria for community use', tooltip = 'This ${PAGETYPE} is extended-confirmed protected', alt = 'Extended-protected ${PAGETYPE}', }, mainpage = { description = 'For pages protected for being displayed on the [[Main Page]]', text = 'This file is currently' .. ' [[Wikipedia:This page is protected|protected]] from' .. ' editing because it is currently or will soon be displayed' .. ' on the [[Main Page]].', explanation = 'Images on the Main Page are protected due to their high' .. ' visibility. Please discuss any necessary changes on the ${TALKPAGE}.' .. '<br /><span style="font-size:90%;">' .. "'''Administrators:''' Once this image is definitely off the Main Page," .. ' please unprotect this file, or reduce to semi-protection,' .. ' as appropriate.</span>', }, office = { description = 'For pages protected by the Wikimedia Foundation', text = function (protectionObj, args) local ret = 'This ${PAGETYPE} is currently under the' .. ' scrutiny of the' .. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]' .. ' and is protected.' if protectionObj.protectionDate then ret = ret .. ' It has been protected since ${PROTECTIONDATE}.' end return ret end, explanation = "If you can edit this page, please discuss all changes and" .. " additions on the ${TALKPAGE} first. '''Do not remove protection from this" .. " page unless you are authorized by the Wikimedia Foundation to do" .. " so.'''", image = 'Office-protection-shackle.svg', }, reset = { description = 'For pages protected by the Wikimedia Foundation and' .. ' "reset" to a bare-bones version', text = 'This ${PAGETYPE} is currently under the' .. ' scrutiny of the' .. ' [[Wikipedia:Office actions|Wikimedia Foundation Office]]' .. ' and is protected.', explanation = function (protectionObj, args) local ret = '' if protectionObj.protectionDate then ret = ret .. 'On ${PROTECTIONDATE} this ${PAGETYPE} was' else ret = ret .. 'This ${PAGETYPE} has been' end ret = ret .. ' reduced to a' .. ' simplified, "bare bones" version so that it may be completely' .. ' rewritten to ensure it meets the policies of' .. ' [[WP:NPOV|Neutral Point of View]] and [[WP:V|Verifiability]].' .. ' Standard Wikipedia policies will apply to its rewriting—which' .. ' will eventually be open to all editors—and will be strictly' .. ' enforced. The ${PAGETYPE} has been ${PROTECTIONLEVEL} while' .. ' it is being rebuilt.\n\n' .. 'Any insertion of material directly from' .. ' pre-protection revisions of the ${PAGETYPE} will be removed, as' .. ' will any material added to the ${PAGETYPE} that is not properly' .. ' sourced. The associated talk page(s) were also cleared on the' .. " same date.\n\n" .. "If you can edit this page, please discuss all changes and" .. " additions on the ${TALKPAGE} first. '''Do not override" .. " this action, and do not remove protection from this page," .. " unless you are authorized by the Wikimedia Foundation" .. " to do so. No editor may remove this notice.'''" return ret end, image = 'Office-protection-shackle.svg', }, sock = { description = 'For pages protected due to' .. ' [[Wikipedia:Sock puppetry|sock puppetry]]', text = '${INTROFRAGMENT} to prevent [[Wikipedia:Sock puppetry|sock puppets]] of' .. ' [[Wikipedia:Blocking policy|blocked]] or' .. ' [[Wikipedia:Banning policy|banned users]]' .. ' from editing it.', tooltip = '${TOOLTIPFRAGMENT} to prevent sock puppets of blocked or banned users from' .. ' editing it', }, template = { description = 'For [[Wikipedia:High-risk templates|high-risk]]' .. ' templates and Lua modules', text = 'This is a permanently [[Help:Protection|protected]] ${PAGETYPE},' .. ' as it is [[Wikipedia:High-risk templates|high-risk]].', explanation = 'Please discuss any changes on the ${TALKPAGE}; you may' .. ' ${EDITREQUEST} to ask an' .. ' [[Wikipedia:Administrators|administrator]] or' .. ' [[Wikipedia:Template editor|template editor]] to make an edit if' .. ' it is [[Help:Minor edit#When to mark an edit as a minor edit' .. '|uncontroversial]] or supported by' .. ' [[Wikipedia:Consensus|consensus]]. You can also' .. ' [[Wikipedia:Requests for page protection|request]] that the page be' .. ' unprotected.', tooltip = 'This high-risk ${PAGETYPE} is permanently ${PROTECTIONLEVEL}' .. ' to prevent vandalism', alt = 'Permanently protected ${PAGETYPE}', }, usertalk = { description = 'For pages protected against disruptive edits by a' .. ' particular user', text = '${INTROFRAGMENT} to prevent ${VANDAL} from using it to make disruptive edits,' .. ' such as abusing the' .. ' &#123;&#123;[[Template:unblock|unblock]]&#125;&#125; template.', explanation = 'If you cannot edit this user talk page and you need to' .. ' make a change or leave a message, you can' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for edits to a protected page' .. '|request an edit]],' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]],' .. ' [[Special:Userlogin|log in]],' .. ' or [[Special:UserLogin/signup|create an account]].', }, vandalism = { description = 'For pages protected against' .. ' [[Wikipedia:Vandalism|vandalism]]', text = '${INTROFRAGMENT} due to [[Wikipedia:Vandalism|vandalism]].', explanation = function (protectionObj, args) local ret = '' if protectionObj.level == 'sysop' then ret = ret .. "This protection is '''not''' an endorsement of the" .. ' ${CURRENTVERSION}. ' end return ret .. '${EXPLANATIONBLURB}' end, tooltip = '${TOOLTIPFRAGMENT} due to vandalism', } }, move = { dispute = { description = 'For pages protected against page moves due to' .. ' disputes over the page title', explanation = "This protection is '''not''' an endorsement of the" .. ' ${CURRENTVERSION}. ${EXPLANATIONBLURB}', image = 'Move-protection-shackle.svg' }, vandalism = { description = 'For pages protected against' .. ' [[Wikipedia:Vandalism#Page-move vandalism' .. ' |page-move vandalism]]' } }, autoreview = {}, upload = {} }, -------------------------------------------------------------------------------- -- -- GENERAL DATA TABLES -- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -- Protection blurbs -------------------------------------------------------------------------------- -- This table produces the protection blurbs available with the -- ${PROTECTIONBLURB} parameter. It is sorted by protection action and -- protection level, and is checked by the module in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. protectionBlurbs = { edit = { default = 'This ${PAGETYPE} is currently [[Help:Protection|' .. 'protected]] from editing', autoconfirmed = 'Editing of this ${PAGETYPE} by [[Wikipedia:User access' .. ' levels#New users|new]] or [[Wikipedia:User access levels#Unregistered' .. ' users|unregistered]] users is currently [[Help:Protection|disabled]]', extendedconfirmed = 'This ${PAGETYPE} is currently under extended confirmed protection', }, move = { default = 'This ${PAGETYPE} is currently [[Help:Protection|protected]]' .. ' from [[Help:Moving a page|page moves]]' }, autoreview = { default = 'All edits made to this ${PAGETYPE} by' .. ' [[Wikipedia:User access levels#New users|new]] or' .. ' [[Wikipedia:User access levels#Unregistered users|unregistered]]' .. ' users are currently' .. ' [[Wikipedia:Pending changes|subject to review]]' }, upload = { default = 'Uploading new versions of this ${PAGETYPE} is currently disabled' } }, -------------------------------------------------------------------------------- -- Explanation blurbs -------------------------------------------------------------------------------- -- This table produces the explanation blurbs available with the -- ${EXPLANATIONBLURB} parameter. It is sorted by protection action, -- protection level, and whether the page is a talk page or not. If the page is -- a talk page it will have a talk key of "talk"; otherwise it will have a talk -- key of "subject". The table is checked in the following order: -- 1. page's protection action, page's protection level, page's talk key -- 2. page's protection action, page's protection level, default talk key -- 3. page's protection action, default protection level, page's talk key -- 4. page's protection action, default protection level, default talk key -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. explanationBlurbs = { edit = { autoconfirmed = { subject = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details. If you' .. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can' .. ' ${EDITREQUEST}, discuss changes on the ${TALKPAGE},' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]], [[Special:Userlogin|log in]], or' .. ' [[Special:UserLogin/signup|create an account]].', default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details. If you' .. ' cannot edit this ${PAGETYPE} and you wish to make a change, you can' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]], [[Special:Userlogin|log in]], or' .. ' [[Special:UserLogin/signup|create an account]].', }, extendedconfirmed = { default = 'Extended confirmed protection prevents edits from all unregistered editors' .. ' and registered users with fewer than 30 days tenure and 500 edits.' .. ' The [[Wikipedia:Protection policy#extended|policy on community use]]' .. ' specifies that extended confirmed protection can be applied to combat' .. ' disruption, if semi-protection has proven to be ineffective.' .. ' Extended confirmed protection may also be applied to enforce' .. ' [[Wikipedia:Arbitration Committee|arbitration sanctions]].' .. ' Please discuss any changes on the ${TALKPAGE}; you may' .. ' ${EDITREQUEST} to ask for uncontroversial changes supported by' .. ' [[Wikipedia:Consensus|consensus]].' }, default = { subject = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' Please discuss any changes on the ${TALKPAGE}; you' .. ' may ${EDITREQUEST} to ask an' .. ' [[Wikipedia:Administrators|administrator]] to make an edit if it' .. ' is [[Help:Minor edit#When to mark an edit as a minor edit' .. '|uncontroversial]] or supported by [[Wikipedia:Consensus' .. '|consensus]]. You may also [[Wikipedia:Requests for' .. ' page protection#Current requests for reduction in protection level' .. '|request]] that this page be unprotected.', default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' You may [[Wikipedia:Requests for page' .. ' protection#Current requests for edits to a protected page|request an' .. ' edit]] to this page, or [[Wikipedia:Requests for' .. ' page protection#Current requests for reduction in protection level' .. '|ask]] for it to be unprotected.' } }, move = { default = { subject = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but cannot be moved' .. ' until unprotected. Please discuss any suggested moves on the' .. ' ${TALKPAGE} or at [[Wikipedia:Requested moves]]. You can also' .. ' [[Wikipedia:Requests for page protection|request]] that the page be' .. ' unprotected.', default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but cannot be moved' .. ' until unprotected. Please discuss any suggested moves at' .. ' [[Wikipedia:Requested moves]]. You can also' .. ' [[Wikipedia:Requests for page protection|request]] that the page be' .. ' unprotected.' } }, autoreview = { default = { default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' Edits to this ${PAGETYPE} by new and unregistered users' .. ' will not be visible to readers until they are accepted by' .. ' a reviewer. To avoid the need for your edits to be' .. ' reviewed, you may' .. ' [[Wikipedia:Requests for page protection' .. '#Current requests for reduction in protection level' .. '|request unprotection]], [[Special:Userlogin|log in]], or' .. ' [[Special:UserLogin/signup|create an account]].' }, }, upload = { default = { default = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' The page may still be edited but new versions of the file' .. ' cannot be uploaded until it is unprotected. You can' .. ' request that a new version be uploaded by using a' .. ' [[Wikipedia:Edit requests|protected edit request]], or you' .. ' can [[Wikipedia:Requests for page protection|request]]' .. ' that the file be unprotected.' } } }, -------------------------------------------------------------------------------- -- Protection levels -------------------------------------------------------------------------------- -- This table provides the data for the ${PROTECTIONLEVEL} parameter, which -- produces a short label for different protection levels. It is sorted by -- protection action and protection level, and is checked in the following -- order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. protectionLevels = { edit = { default = 'protected', templateeditor = 'template-protected', extendedconfirmed = 'extended-protected', autoconfirmed = 'semi-protected', }, move = { default = 'move-protected' }, autoreview = { }, upload = { default = 'upload-protected' } }, -------------------------------------------------------------------------------- -- Images -------------------------------------------------------------------------------- -- This table lists different padlock images for each protection action and -- protection level. It is used if an image is not specified in any of the -- banner data tables, and if the page does not satisfy the conditions for using -- the ['image-filename-indef'] image. It is checked in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level images = { edit = { default = 'Full-protection-shackle.svg', templateeditor = 'Template-protection-shackle.svg', extendedconfirmed = 'Extended-protection-shackle.svg', autoconfirmed = 'Semi-protection-shackle.svg' }, move = { default = 'Move-protection-shackle.svg', }, autoreview = { default = 'Pending-protection-shackle.svg' }, upload = { default = 'Upload-protection-shackle.svg' } }, -- Pages with a reason specified in this table will show the special "indef" -- padlock, defined in the 'image-filename-indef' message, if no expiry is set. indefImageReasons = { template = true }, -------------------------------------------------------------------------------- -- Image links -------------------------------------------------------------------------------- -- This table provides the data for the ${IMAGELINK} parameter, which gets -- the image link for small padlock icons based on the page's protection action -- and protection level. It is checked in the following order: -- 1. page's protection action, page's protection level -- 2. page's protection action, default protection level -- 3. "edit" protection action, default protection level -- -- It is possible to use banner parameters inside this table. -- *required* - this table needs edit, move, autoreview and upload subtables. imageLinks = { edit = { default = 'Wikipedia:Protection policy#full', templateeditor = 'Wikipedia:Protection policy#template', extendedconfirmed = 'Wikipedia:Protection policy#extended', autoconfirmed = 'Wikipedia:Protection policy#semi' }, move = { default = 'Wikipedia:Protection policy#move' }, autoreview = { default = 'Wikipedia:Protection policy#pending' }, upload = { default = 'Wikipedia:Protection policy#upload' } }, -------------------------------------------------------------------------------- -- Padlock indicator names -------------------------------------------------------------------------------- -- This table provides the "name" attribute for the <indicator> extension tag -- with which small padlock icons are generated. All indicator tags on a page -- are displayed in alphabetical order based on this attribute, and with -- indicator tags with duplicate names, the last tag on the page wins. -- The attribute is chosen based on the protection action; table keys must be a -- protection action name or the string "default". padlockIndicatorNames = { autoreview = 'pp-autoreview', default = 'pp-default' }, -------------------------------------------------------------------------------- -- Protection categories -------------------------------------------------------------------------------- --[[ -- The protection categories are stored in the protectionCategories table. -- Keys to this table are made up of the following strings: -- -- 1. the expiry date -- 2. the namespace -- 3. the protection reason (e.g. "dispute" or "vandalism") -- 4. the protection level (e.g. "sysop" or "autoconfirmed") -- 5. the action (e.g. "edit" or "move") -- -- When the module looks up a category in the table, first it will will check to -- see a key exists that corresponds to all five parameters. For example, a -- user page semi-protected from vandalism for two weeks would have the key -- "temp-user-vandalism-autoconfirmed-edit". If no match is found, the module -- changes the first part of the key to "all" and checks the table again. It -- keeps checking increasingly generic key combinations until it finds the -- field, or until it reaches the key "all-all-all-all-all". -- -- The module uses a binary matrix to determine the order in which to search. -- This is best demonstrated by a table. In this table, the "0" values -- represent "all", and the "1" values represent the original data (e.g. -- "indef" or "file" or "vandalism"). -- -- expiry namespace reason level action -- order -- 1 1 1 1 1 1 -- 2 0 1 1 1 1 -- 3 1 0 1 1 1 -- 4 0 0 1 1 1 -- 5 1 1 0 1 1 -- 6 0 1 0 1 1 -- 7 1 0 0 1 1 -- 8 0 0 0 1 1 -- 9 1 1 1 0 1 -- 10 0 1 1 0 1 -- 11 1 0 1 0 1 -- 12 0 0 1 0 1 -- 13 1 1 0 0 1 -- 14 0 1 0 0 1 -- 15 1 0 0 0 1 -- 16 0 0 0 0 1 -- 17 1 1 1 1 0 -- 18 0 1 1 1 0 -- 19 1 0 1 1 0 -- 20 0 0 1 1 0 -- 21 1 1 0 1 0 -- 22 0 1 0 1 0 -- 23 1 0 0 1 0 -- 24 0 0 0 1 0 -- 25 1 1 1 0 0 -- 26 0 1 1 0 0 -- 27 1 0 1 0 0 -- 28 0 0 1 0 0 -- 29 1 1 0 0 0 -- 30 0 1 0 0 0 -- 31 1 0 0 0 0 -- 32 0 0 0 0 0 -- -- In this scheme the action has the highest priority, as it is the last -- to change, and the expiry has the least priority, as it changes the most. -- The priorities of the expiry, the protection level and the action are -- fixed, but the priorities of the reason and the namespace can be swapped -- through the use of the cfg.bannerDataNamespaceHasPriority table. --]] -- If the reason specified to the template is listed in this table, -- namespace data will take priority over reason data in the protectionCategories -- table. reasonsWithNamespacePriority = { vandalism = true, }, -- The string to use as a namespace key for the protectionCategories table for each -- namespace number. categoryNamespaceKeys = { [ 2] = 'user', [ 3] = 'user', [ 4] = 'project', [ 6] = 'file', [ 8] = 'mediawiki', [ 10] = 'template', [ 12] = 'project', [ 14] = 'category', [100] = 'portal', [828] = 'module', }, protectionCategories = { ['all|all|all|all|all'] = 'Wikipedia fully protected pages', ['all|all|office|all|all'] = 'Wikipedia Office-protected pages', ['all|all|reset|all|all'] = 'Wikipedia Office-protected pages', ['all|all|dmca|all|all'] = 'Wikipedia Office-protected pages', ['all|all|mainpage|all|all'] = 'Wikipedia fully-protected main page files', ['all|all|all|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages', ['all|all|ecp|extendedconfirmed|all'] = 'Wikipedia extended-confirmed-protected pages', ['all|template|all|all|edit'] = 'Wikipedia fully protected templates', ['all|all|all|autoconfirmed|edit'] = 'Wikipedia semi-protected pages', ['indef|all|all|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected pages', ['all|all|blp|autoconfirmed|edit'] = 'Wikipedia indefinitely semi-protected biographies of living people', ['temp|all|blp|autoconfirmed|edit'] = 'Wikipedia temporarily semi-protected biographies of living people', ['all|all|dispute|autoconfirmed|edit'] = 'Wikipedia pages semi-protected due to dispute', ['all|all|sock|autoconfirmed|edit'] = 'Wikipedia pages semi-protected from banned users', ['all|all|vandalism|autoconfirmed|edit'] = 'Wikipedia pages semi-protected against vandalism', ['all|category|all|autoconfirmed|edit'] = 'Wikipedia semi-protected categories', ['all|file|all|autoconfirmed|edit'] = 'Wikipedia semi-protected files', ['all|portal|all|autoconfirmed|edit'] = 'Wikipedia semi-protected portals', ['all|project|all|autoconfirmed|edit'] = 'Wikipedia semi-protected project pages', ['all|talk|all|autoconfirmed|edit'] = 'Wikipedia semi-protected talk pages', ['all|template|all|autoconfirmed|edit'] = 'Wikipedia semi-protected templates', ['all|user|all|autoconfirmed|edit'] = 'Wikipedia semi-protected user and user talk pages', ['all|template|all|templateeditor|edit'] = 'Wikipedia template-protected templates', ['all|template|all|templateeditor|move'] = 'Wikipedia template-protected templates', -- move-protected ['all|all|blp|sysop|edit'] = 'Wikipedia indefinitely protected biographies of living people', ['temp|all|blp|sysop|edit'] = 'Wikipedia temporarily protected biographies of living people', ['all|all|dispute|sysop|edit'] = 'Wikipedia pages protected due to dispute', ['all|all|sock|sysop|edit'] = 'Wikipedia pages protected from banned users', ['all|all|vandalism|sysop|edit'] = 'Wikipedia pages protected against vandalism', ['all|category|all|sysop|edit'] = 'Wikipedia fully protected categories', ['all|file|all|sysop|edit'] = 'Wikipedia fully-protected files', ['all|project|all|sysop|edit'] = 'Wikipedia fully-protected project pages', ['all|talk|all|sysop|edit'] = 'Wikipedia fully-protected talk pages', ['all|template|all|extendedconfirmed|edit'] = 'Wikipedia extended-confirmed-protected templates', ['all|template|all|sysop|edit'] = 'Wikipedia fully protected templates', ['all|user|all|sysop|edit'] = 'Wikipedia fully protected user and user talk pages', ['all|module|all|all|edit'] = 'Wikipedia fully-protected modules', ['all|module|all|templateeditor|edit'] = 'Wikipedia template-protected modules', ['all|module|all|autoconfirmed|edit'] = 'Wikipedia semi-protected modules', ['all|all|all|sysop|move'] = 'Wikipedia move-protected pages', ['indef|all|all|sysop|move'] = 'Wikipedia indefinitely move-protected pages', ['all|all|dispute|sysop|move'] = 'Wikipedia pages move-protected due to dispute', ['all|all|vandalism|sysop|move'] = 'Wikipedia pages move-protected due to vandalism', ['all|portal|all|sysop|move'] = 'Wikipedia move-protected portals', ['all|portal|all|sysop|move'] = 'Wikipedia move-protected portals', ['all|project|all|sysop|move'] = 'Wikipedia move-protected project pages', ['all|talk|all|sysop|move'] = 'Wikipedia move-protected talk pages', ['all|template|all|sysop|move'] = 'Wikipedia move-protected templates', ['all|user|all|sysop|move'] = 'Wikipedia move-protected user and user talk pages', ['all|all|all|autoconfirmed|autoreview'] = 'Wikipedia pending changes protected pages', ['all|file|all|all|upload'] = 'Wikipedia upload-protected files', }, -------------------------------------------------------------------------------- -- Expiry category config -------------------------------------------------------------------------------- -- This table configures the expiry category behaviour for each protection -- action. -- * If set to true, setting that action will always categorise the page if -- an expiry parameter is not set. -- * If set to false, setting that action will never categorise the page. -- * If set to nil, the module will categorise the page if: -- 1) an expiry parameter is not set, and -- 2) a reason is provided, and -- 3) the specified reason is not blacklisted in the reasonsWithoutExpiryCheck -- table. expiryCheckActions = { edit = nil, move = false, autoreview = true, upload = false }, reasonsWithoutExpiryCheck = { blp = true, template = true, }, -------------------------------------------------------------------------------- -- Pagetypes -------------------------------------------------------------------------------- -- This table produces the page types available with the ${PAGETYPE} parameter. -- Keys are namespace numbers, or the string "default" for the default value. pagetypes = { [0] = 'article', [6] = 'file', [10] = 'template', [14] = 'category', [828] = 'module', default = 'page' }, -------------------------------------------------------------------------------- -- Strings marking indefinite protection -------------------------------------------------------------------------------- -- This table contains values passed to the expiry parameter that mean the page -- is protected indefinitely. indefStrings = { ['indef'] = true, ['indefinite'] = true, ['indefinitely'] = true, ['infinite'] = true, }, -------------------------------------------------------------------------------- -- Group hierarchy -------------------------------------------------------------------------------- -- This table maps each group to all groups that have a superset of the original -- group's page editing permissions. hierarchy = { sysop = {}, reviewer = {'sysop'}, filemover = {'sysop'}, templateeditor = {'sysop'}, extendedconfirmed = {'sysop'}, autoconfirmed = {'reviewer', 'filemover', 'templateeditor', 'extendedconfirmed'}, user = {'autoconfirmed'}, ['*'] = {'user'} }, -------------------------------------------------------------------------------- -- Wrapper templates and their default arguments -------------------------------------------------------------------------------- -- This table contains wrapper templates used with the module, and their -- default arguments. Templates specified in this table should contain the -- following invocation, and no other template content: -- -- {{#invoke:Protection banner|main}} -- -- If other content is desired, it can be added between -- <noinclude>...</noinclude> tags. -- -- When a user calls one of these wrapper templates, they will use the -- default arguments automatically. However, users can override any of the -- arguments. wrappers = { ['Template:Pp'] = {}, ['Template:Pp-extended'] = {'ecp'}, ['Template:Pp-blp'] = {'blp'}, -- we don't need Template:Pp-create ['Template:Pp-dispute'] = {'dispute'}, ['Template:Pp-main-page'] = {'mainpage'}, ['Template:Pp-move'] = {action = 'move'}, ['Template:Pp-move-dispute'] = {'dispute', action = 'move'}, -- we don't need Template:Pp-move-indef ['Template:Pp-move-vandalism'] = {'vandalism', action = 'move'}, ['Template:Pp-office'] = {'office'}, ['Template:Pp-office-dmca'] = {'dmca'}, ['Template:Pp-pc'] = {action = 'autoreview', small = true}, ['Template:Pp-pc1'] = {action = 'autoreview', small = true}, ['Template:Pp-reset'] = {'reset'}, ['Template:Pp-semi-indef'] = {small = true}, ['Template:Pp-sock'] = {'sock'}, ['Template:Pp-template'] = {'template', small = true}, ['Template:Pp-upload'] = {action = 'upload'}, ['Template:Pp-usertalk'] = {'usertalk'}, ['Template:Pp-vandalism'] = {'vandalism'}, }, -------------------------------------------------------------------------------- -- -- MESSAGES -- -------------------------------------------------------------------------------- msg = { -------------------------------------------------------------------------------- -- Intro blurb and intro fragment -------------------------------------------------------------------------------- -- These messages specify what is produced by the ${INTROBLURB} and -- ${INTROFRAGMENT} parameters. If the protection is temporary they use the -- intro-blurb-expiry or intro-fragment-expiry, and if not they use -- intro-blurb-noexpiry or intro-fragment-noexpiry. -- It is possible to use banner parameters in these messages. ['intro-blurb-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY}.', ['intro-blurb-noexpiry'] = '${PROTECTIONBLURB}.', ['intro-fragment-expiry'] = '${PROTECTIONBLURB} until ${EXPIRY},', ['intro-fragment-noexpiry'] = '${PROTECTIONBLURB}', -------------------------------------------------------------------------------- -- Tooltip blurb -------------------------------------------------------------------------------- -- These messages specify what is produced by the ${TOOLTIPBLURB} parameter. -- If the protection is temporary the tooltip-blurb-expiry message is used, and -- if not the tooltip-blurb-noexpiry message is used. -- It is possible to use banner parameters in these messages. ['tooltip-blurb-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY}.', ['tooltip-blurb-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}.', ['tooltip-fragment-expiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL} until ${EXPIRY},', ['tooltip-fragment-noexpiry'] = 'This ${PAGETYPE} is ${PROTECTIONLEVEL}', -------------------------------------------------------------------------------- -- Special explanation blurb -------------------------------------------------------------------------------- -- An explanation blurb for pages that cannot be unprotected, e.g. for pages -- in the MediaWiki namespace. -- It is possible to use banner parameters in this message. ['explanation-blurb-nounprotect'] = 'See the [[Wikipedia:Protection policy|' .. 'protection policy]] and ${PROTECTIONLOG} for more details.' .. ' Please discuss any changes on the ${TALKPAGE}; you' .. ' may ${EDITREQUEST} to ask an' .. ' [[Wikipedia:Administrators|administrator]] to make an edit if it' .. ' is [[Help:Minor edit#When to mark an edit as a minor edit' .. '|uncontroversial]] or supported by [[Wikipedia:Consensus' .. '|consensus]].', -------------------------------------------------------------------------------- -- Protection log display values -------------------------------------------------------------------------------- -- These messages determine the display values for the protection log link -- or the pending changes log link produced by the ${PROTECTIONLOG} parameter. -- It is possible to use banner parameters in these messages. ['protection-log-display'] = 'protection log', ['pc-log-display'] = 'pending changes log', -------------------------------------------------------------------------------- -- Current version display values -------------------------------------------------------------------------------- -- These messages determine the display values for the page history link -- or the move log link produced by the ${CURRENTVERSION} parameter. -- It is possible to use banner parameters in these messages. ['current-version-move-display'] = 'current title', ['current-version-edit-display'] = 'current version', -------------------------------------------------------------------------------- -- Talk page -------------------------------------------------------------------------------- -- This message determines the display value of the talk page link produced -- with the ${TALKPAGE} parameter. -- It is possible to use banner parameters in this message. ['talk-page-link-display'] = 'talk page', -------------------------------------------------------------------------------- -- Edit requests -------------------------------------------------------------------------------- -- This message determines the display value of the edit request link produced -- with the ${EDITREQUEST} parameter. -- It is possible to use banner parameters in this message. ['edit-request-display'] = 'submit an edit request', -------------------------------------------------------------------------------- -- Expiry date format -------------------------------------------------------------------------------- -- This is the format for the blurb expiry date. It should be valid input for -- the first parameter of the #time parser function. ['expiry-date-format'] = 'F j, Y "at" H:i e', -------------------------------------------------------------------------------- -- Tracking categories -------------------------------------------------------------------------------- -- These messages determine which tracking categories the module outputs. ['tracking-category-incorrect'] = 'Wikipedia pages with incorrect protection templates', ['tracking-category-template'] = 'Wikipedia template-protected pages other than templates and modules', -------------------------------------------------------------------------------- -- Images -------------------------------------------------------------------------------- -- These are images that are not defined by their protection action and protection level. ['image-filename-indef'] = 'Full-protection-shackle.svg', ['image-filename-default'] = 'Transparent.gif', -------------------------------------------------------------------------------- -- End messages -------------------------------------------------------------------------------- } -------------------------------------------------------------------------------- -- End configuration -------------------------------------------------------------------------------- } 5ltdht3qen29flk1vw801ukkdsv9cxq Module:Section link 828 1319 2870 2869 2020-09-29T19:18:22Z Chrisb 1 1 revision imported 2869 Scribunto text/plain -- This module implements {{section link}}. require('Module:No globals'); local checkType = require('libraryUtil').checkType local p = {} local function makeSectionLink(page, section, display) display = display or section page = page or '' -- MediaWiki doesn't allow these in `page`, so only need to do for `section` if type(section) == 'string' then section = string.gsub(section, "{", "&#x7B;") section = string.gsub(section, "}", "&#x7D;") end return string.format('[[%s#%s|%s]]', page, section, display) end local function normalizeTitle(title) title = mw.ustring.gsub(mw.ustring.gsub(title, "'", ""), '"', '') title = mw.ustring.gsub(title, "%b<>", "") return mw.title.new(title).prefixedText end function p._main(page, sections, options, title) -- Validate input. checkType('_main', 1, page, 'string', true) checkType('_main', 3, options, 'table', true) if sections == nil then sections = {} elseif type(sections) == 'string' then sections = {sections} elseif type(sections) ~= 'table' then error(string.format( "type error in argument #2 to '_main' " .. "(string, table or nil expected, got %s)", type(sections) ), 2) end options = options or {} title = title or mw.title.getCurrentTitle() -- Deal with blank page names elegantly if page and not page:find('%S') then page = nil options.nopage = true end -- Make the link(s). local isShowingPage = not options.nopage if #sections <= 1 then local linkPage = page or '' local section = sections[1] or 'Notes' local display = '§&nbsp;' .. section if isShowingPage then page = page or title.prefixedText if options.display and options.display ~= '' then if normalizeTitle(options.display) == normalizeTitle(page) then display = options.display .. ' ' .. display else error(string.format( 'Display title "%s" was ignored since it is ' .. "not equivalent to the page's actual title", options.display ), 0) end else display = page .. ' ' .. display end end return makeSectionLink(linkPage, section, display) else -- Multiple sections. First, make a list of the links to display. local ret = {} for i, section in ipairs(sections) do ret[i] = makeSectionLink(page, section) end -- Assemble the list of links into a string with mw.text.listToText. -- We use the default separator for mw.text.listToText, but a custom -- conjunction. There is also a special case conjunction if we only -- have two links. local conjunction if #sections == 2 then conjunction = '&#8203; and ' else conjunction = ', and ' end ret = mw.text.listToText(ret, nil, conjunction) -- Add the intro text. local intro = '§§&nbsp;' if isShowingPage then intro = (page or title.prefixedText) .. ' ' .. intro end ret = intro .. ret return ret end end function p.main(frame) local yesno = require('Module:Yesno') local args = require('Module:Arguments').getArgs(frame, { wrappers = 'Template:Section link', valueFunc = function (key, value) value = value:match('^%s*(.-)%s*$') -- Trim whitespace -- Allow blank first parameters, as the wikitext template does this. if value ~= '' or key == 1 then return value end end }) for k, v in pairs(args) do -- replace underscores in the positional parameter values if 'number' == type(k) then if not yesno (args['keep-underscores']) then -- unless |keep-underscores=yes args[k] = mw.uri.decode (v, 'WIKI'); -- percent-decode; replace underscores with space characters else args[k] = mw.uri.decode (v, 'PATH'); -- percent-decode; retain underscores end end end -- Sort the arguments. local page local sections, options = {}, {} for k, v in pairs(args) do if k == 1 then -- Doing this in the loop because of a bug in [[Module:Arguments]] -- when using pairs with deleted arguments. page = mw.text.decode(v, true) elseif type(k) == 'number' then sections[k] = v else options[k] = v end end options.nopage = yesno (options.nopage); -- make boolean -- Extract section from page, if present if page then local p, s = page:match('^(.-)#(.*)$') if p then page, sections[1] = p, s end end -- Compress the sections array. local function compressArray(t) local nums, ret = {}, {} for num in pairs(t) do nums[#nums + 1] = num end table.sort(nums) for i, num in ipairs(nums) do ret[i] = t[num] end return ret end sections = compressArray(sections) return p._main(page, sections, options) end return p d7vs0d653q4eub1uslni5ah7cayid6t Module:Sidebar 828 1475 3254 3253 2020-10-11T01:36:03Z Chrisb 1 1 revision imported 3253 Scribunto text/plain -- -- This module implements {{Sidebar}} -- require('Module:No globals') local p = {} local getArgs = require('Module:Arguments').getArgs local navbar = require('Module:Navbar')._navbar local function trimAndAddAutomaticNewline(s) -- For compatibility with the original {{sidebar with collapsible lists}} -- implementation, which passed some parameters through {{#if}} to trim -- their whitespace. This also triggered the automatic newline behavior. -- ([[meta:Help:Newlines and spaces#Automatic newline]]) s = mw.ustring.gsub(s, "^%s*(.-)%s*$", "%1") if mw.ustring.find(s, '^[#*:;]') or mw.ustring.find(s, '^{|') then return '\n' .. s else return s end end local function hasSubgroup(s) if mw.ustring.find(s, 'vertical%-navbox%-subgroup') then return true else return false end end function p.sidebar(frame, args) if not args then args = getArgs(frame) end local root = mw.html.create() local child = args.child and mw.text.trim(args.child) == 'yes' root = root:tag('table') if not child then root :addClass('vertical-navbox') :addClass(args.wraplinks ~= 'true' and 'nowraplinks' or nil) :addClass(args.bodyclass or args.class) :css('float', args.float or 'right') :css('clear', (args.float == 'none' and 'both') or args.float or 'right') :css('width', args.width or '22.0em') :css('margin', args.float == 'left' and '0 1.0em 1.0em 0' or '0 0 1.0em 1.0em') :css('background', '#f8f9fa') :css('border', '1px solid #aaa') :css('padding', '0.2em') :css('border-spacing', '0.4em 0') :css('text-align', 'center') :css('line-height', '1.4em') :css('font-size', '88%') :cssText(args.bodystyle or args.style) if args.outertitle then root :tag('caption') :addClass(args.outertitleclass) :css('padding-bottom', '0.2em') :css('font-size', '125%') :css('line-height', '1.2em') :css('font-weight', 'bold') :cssText(args.outertitlestyle) :wikitext(args.outertitle) end if args.topimage then local imageCell = root:tag('tr'):tag('td') imageCell :addClass(args.topimageclass) :css('padding', '0.4em 0') :cssText(args.topimagestyle) :wikitext(args.topimage) if args.topcaption then imageCell :tag('div') :css('padding-top', '0.2em') :css('line-height', '1.2em') :cssText(args.topcaptionstyle) :wikitext(args.topcaption) end end if args.pretitle then root :tag('tr') :tag('td') :addClass(args.pretitleclass) :cssText(args.basestyle) :css('padding-top', args.topimage and '0.2em' or '0.4em') :css('line-height', '1.2em') :cssText(args.pretitlestyle) :wikitext(args.pretitle) end else root :addClass('vertical-navbox-subgroup') :css('width', '100%') :css('margin', '0px') :css('border-spacing', '0px') :addClass(args.bodyclass or args.class) :cssText(args.bodystyle or args.style) end if args.title then if child then root :wikitext(args.title) else root :tag('tr') :tag('th') :addClass(args.titleclass) :cssText(args.basestyle) :css('padding', '0.2em 0.4em 0.2em') :css('padding-top', args.pretitle and 0) :css('font-size', '145%') :css('line-height', '1.2em') :cssText(args.titlestyle) :wikitext(args.title) end end if args.image then local imageCell = root:tag('tr'):tag('td') imageCell :addClass(args.imageclass) :css('padding', '0.2em 0 0.4em') :cssText(args.imagestyle) :wikitext(args.image) if args.caption then imageCell :tag('div') :css('padding-top', '0.2em') :css('line-height', '1.2em') :cssText(args.captionstyle) :wikitext(args.caption) end end if args.above then root :tag('tr') :tag('td') :addClass(args.aboveclass) :css('padding', '0.3em 0.4em 0.3em') :css('font-weight', 'bold') :cssText(args.abovestyle) :newline() -- newline required for bullet-points to work :wikitext(args.above) end local rowNums = {} for k, v in pairs(args) do k = '' .. k local num = k:match('^heading(%d+)$') or k:match('^content(%d+)$') if num then table.insert(rowNums, tonumber(num)) end end table.sort(rowNums) -- remove duplicates from the list (e.g. 3 will be duplicated if both heading3 and content3 are specified) for i = #rowNums, 1, -1 do if rowNums[i] == rowNums[i - 1] then table.remove(rowNums, i) end end for i, num in ipairs(rowNums) do local heading = args['heading' .. num] if heading then root :tag('tr') :tag('th') :addClass(args.headingclass) :css('padding', '0.1em') :cssText(args.basestyle) :cssText(args.headingstyle) :cssText(args['heading' .. num .. 'style']) :newline() :wikitext(heading) end local content = args['content' .. num] if content then root :tag('tr') :tag('td') :addClass(args.contentclass) :css('padding', hasSubgroup(content) and '0.1em 0 0.2em' or '0 0.1em 0.4em') :cssText(args.contentstyle) :cssText(args['content' .. num .. 'style']) :newline() :wikitext(content) :done() :newline() -- Without a linebreak after the </td>, a nested list like "* {{hlist| ...}}" doesn't parse correctly. end end if args.below then root :tag('tr') :tag('td') :addClass(args.belowclass) :css('padding', '0.3em 0.4em 0.3em') :css('font-weight', 'bold') :cssText(args.belowstyle) :newline() :wikitext(args.below) end if not child then local navbarArg = args.navbar or args.tnavbar if navbarArg ~= 'none' and navbarArg ~= 'off' and (args.name or frame:getParent():getTitle():gsub('/sandbox$', '') ~= 'Template:Sidebar') then root :tag('tr') :tag('td') :css('text-align', 'right') :css('font-size', '115%') :cssText(args.navbarstyle or args.tnavbarstyle) :wikitext(navbar{ args.name, mini = 1, fontstyle = args.navbarfontstyle or args.tnavbarfontstyle }) end end return tostring(root) .. (child and '[[Category:Pages using sidebar with the child parameter]]' or '') end function p.collapsible(frame) local args = getArgs(frame) args.abovestyle = 'border-top: 1px solid #aaa; border-bottom: 1px solid #aaa;' .. (args.abovestyle or '') args.belowstyle = 'border-top: 1px solid #aaa; border-bottom: 1px solid #aaa;' .. (args.belowstyle or '') args.navbarstyle = 'padding-top: 0.6em;' .. (args.navbarstyle or args.tnavbarstyle or '') if not args.name and frame:getParent():getTitle():gsub('/sandbox$', '') == 'Template:Sidebar with collapsible lists' then args.navbar = 'none' end local contentArgs = {} for k, v in pairs(args) do local num = string.match(k, '^list(%d+)$') if num then local expand = args.expanded and (args.expanded == 'all' or args.expanded == args['list' .. num .. 'name']) local row = mw.html.create('div') row :addClass('NavFrame') :addClass((not expand) and 'collapsed' or nil) :css('border', 'none') :css('padding', 0) :cssText(args.listframestyle) :cssText(args['list' .. num .. 'framestyle']) :tag('div') :addClass('NavHead') :addClass(args.listtitleclass) :css('font-size', '105%') :css('background', 'transparent') :css('text-align', 'left') :cssText(args.basestyle) :cssText(args.listtitlestyle) :cssText(args['list' .. num .. 'titlestyle']) :wikitext(trimAndAddAutomaticNewline(args['list' .. num .. 'title'] or 'List')) :done() :tag('div') :addClass('NavContent') :addClass(args.listclass) :addClass(args['list' .. num .. 'class']) :css('font-size', '105%') :css('padding', '0.2em 0 0.4em') :css('text-align', 'center') :cssText(args.liststyle) :cssText(args['list' .. num .. 'style']) :wikitext(trimAndAddAutomaticNewline(args['list' .. num])) contentArgs['content' .. num] = tostring(row) end end for k, v in pairs(contentArgs) do args[k] = v end return p.sidebar(frame, args) end return p 49l7i3rurqbt0h4mb4td0vid04vpumc Module:String 828 891 2014 2013 2020-09-29T19:15:40Z Chrisb 1 1 revision imported 2013 Scribunto text/plain --[[ This module is intended to provide access to basic string functions. Most of the functions provided here can be invoked with named parameters, unnamed parameters, or a mixture. If named parameters are used, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. Depending on the intended use, it may be advantageous to either preserve or remove such whitespace. Global options ignore_errors: If set to 'true' or 1, any error condition will result in an empty string being returned rather than an error message. error_category: If an error occurs, specifies the name of a category to include with the error message. The default category is [Category:Errors reported by Module String]. no_category: If set to 'true' or 1, no category will be added if an error is generated. Unit tests for this module are available at Module:String/tests. ]] local str = {} --[[ len This function returns the length of the target string. Usage: {{#invoke:String|len|target_string|}} OR {{#invoke:String|len|s=target_string}} Parameters s: The string whose length to report If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. ]] function str.len( frame ) local new_args = str._getParameters( frame.args, {'s'} ) local s = new_args['s'] or '' return mw.ustring.len( s ) end --[[ sub This function returns a substring of the target string at specified indices. Usage: {{#invoke:String|sub|target_string|start_index|end_index}} OR {{#invoke:String|sub|s=target_string|i=start_index|j=end_index}} Parameters s: The string to return a subset of i: The fist index of the substring to return, defaults to 1. j: The last index of the string to return, defaults to the last character. The first character of the string is assigned an index of 1. If either i or j is a negative value, it is interpreted the same as selecting a character by counting from the end of the string. Hence, a value of -1 is the same as selecting the last character of the string. If the requested indices are out of range for the given string, an error is reported. ]] function str.sub( frame ) local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } ) local s = new_args['s'] or '' local i = tonumber( new_args['i'] ) or 1 local j = tonumber( new_args['j'] ) or -1 local len = mw.ustring.len( s ) -- Convert negatives for range checking if i < 0 then i = len + i + 1 end if j < 0 then j = len + j + 1 end if i > len or j > len or i < 1 or j < 1 then return str._error( 'String subset index out of range' ) end if j < i then return str._error( 'String subset indices out of order' ) end return mw.ustring.sub( s, i, j ) end --[[ This function implements that features of {{str sub old}} and is kept in order to maintain these older templates. ]] function str.sublength( frame ) local i = tonumber( frame.args.i ) or 0 local len = tonumber( frame.args.len ) return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) ) end --[[ _match This function returns a substring from the source string that matches a specified pattern. It is exported for use in other modules Usage: strmatch = require("Module:String")._match sresult = strmatch( s, pattern, start, match, plain, nomatch ) Parameters s: The string to search pattern: The pattern or string to find within the string start: The index within the source string to start the search. The first character of the string has index 1. Defaults to 1. match: In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1. plain: A flag indicating that the pattern should be understood as plain text. Defaults to false. nomatch: If no match is found, output the "nomatch" value rather than an error. For information on constructing Lua patterns, a form of [regular expression], see: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- This sub-routine is exported for use in other modules function str._match( s, pattern, start, match_index, plain_flag, nomatch ) if s == '' then return str._error( 'Target string is empty' ) end if pattern == '' then return str._error( 'Pattern string is empty' ) end start = tonumber(start) or 1 if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then return str._error( 'Requested start is out of range' ) end if match_index == 0 then return str._error( 'Match index is out of range' ) end if plain_flag then pattern = str._escapePattern( pattern ) end local result if match_index == 1 then -- Find first match is simple case result = mw.ustring.match( s, pattern, start ) else if start > 1 then s = mw.ustring.sub( s, start ) end local iterator = mw.ustring.gmatch(s, pattern) if match_index > 0 then -- Forward search for w in iterator do match_index = match_index - 1 if match_index == 0 then result = w break end end else -- Reverse search local result_table = {} local count = 1 for w in iterator do result_table[count] = w count = count + 1 end result = result_table[ count + match_index ] end end if result == nil then if nomatch == nil then return str._error( 'Match not found' ) else return nomatch end else return result end end --[[ match This function returns a substring from the source string that matches a specified pattern. Usage: {{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}} OR {{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index |match=match_number|plain=plain_flag|nomatch=nomatch_output}} Parameters s: The string to search pattern: The pattern or string to find within the string start: The index within the source string to start the search. The first character of the string has index 1. Defaults to 1. match: In some cases it may be possible to make multiple matches on a single string. This specifies which match to return, where the first match is match= 1. If a negative number is specified then a match is returned counting from the last match. Hence match = -1 is the same as requesting the last match. Defaults to 1. plain: A flag indicating that the pattern should be understood as plain text. Defaults to false. nomatch: If no match is found, output the "nomatch" value rather than an error. If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from each string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. If the match_number or start_index are out of range for the string being queried, then this function generates an error. An error is also generated if no match is found. If one adds the parameter ignore_errors=true, then the error will be suppressed and an empty string will be returned on any failure. For information on constructing Lua patterns, a form of [regular expression], see: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] -- This is the entry point for #invoke:String|match function str.match( frame ) local new_args = str._getParameters( frame.args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} ) local s = new_args['s'] or '' local start = tonumber( new_args['start'] ) or 1 local plain_flag = str._getBoolean( new_args['plain'] or false ) local pattern = new_args['pattern'] or '' local match_index = math.floor( tonumber(new_args['match']) or 1 ) local nomatch = new_args['nomatch'] return str._match( s, pattern, start, match_index, plain_flag, nomatch ) end --[[ pos This function returns a single character from the target string at position pos. Usage: {{#invoke:String|pos|target_string|index_value}} OR {{#invoke:String|pos|target=target_string|pos=index_value}} Parameters target: The string to search pos: The index for the character to return If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the target string. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. The first character has an index value of 1. If one requests a negative value, this function will select a character by counting backwards from the end of the string. In other words pos = -1 is the same as asking for the last character. A requested value of zero, or a value greater than the length of the string returns an error. ]] function str.pos( frame ) local new_args = str._getParameters( frame.args, {'target', 'pos'} ) local target_str = new_args['target'] or '' local pos = tonumber( new_args['pos'] ) or 0 if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then return str._error( 'String index out of range' ) end return mw.ustring.sub( target_str, pos, pos ) end --[[ str_find This function duplicates the behavior of {{str_find}}, including all of its quirks. This is provided in order to support existing templates, but is NOT RECOMMENDED for new code and templates. New code is recommended to use the "find" function instead. Returns the first index in "source" that is a match to "target". Indexing is 1-based, and the function returns -1 if the "target" string is not present in "source". Important Note: If the "target" string is empty / missing, this function returns a value of "1", which is generally unexpected behavior, and must be accounted for separatetly. ]] function str.str_find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target'} ) local source_str = new_args['source'] or '' local target_str = new_args['target'] or '' if target_str == '' then return 1 end local start = mw.ustring.find( source_str, target_str, 1, true ) if start == nil then start = -1 end return start end --[[ find This function allows one to search for a target string or pattern within another string. Usage: {{#invoke:String|find|source_str|target_string|start_index|plain_flag}} OR {{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}} Parameters source: The string to search target: The string or pattern to find within source start: The index within the source string to start the search, defaults to 1 plain: Boolean flag indicating that target should be understood as plain text and not as a Lua style regular expression, defaults to true If invoked using named parameters, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. In some circumstances this is desirable, in other cases one may want to preserve the whitespace. This function returns the first index >= "start" where "target" can be found within "source". Indices are 1-based. If "target" is not found, then this function returns 0. If either "source" or "target" are missing / empty, this function also returns 0. This function should be safe for UTF-8 strings. ]] function str.find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } ) local source_str = new_args['source'] or '' local pattern = new_args['target'] or '' local start_pos = tonumber(new_args['start']) or 1 local plain = new_args['plain'] or true if source_str == '' or pattern == '' then return 0 end plain = str._getBoolean( plain ) local start = mw.ustring.find( source_str, pattern, start_pos, plain ) if start == nil then start = 0 end return start end --[[ replace This function allows one to replace a target string or pattern within another string. Usage: {{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}} OR {{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string| count=replacement_count|plain=plain_flag}} Parameters source: The string to search pattern: The string or pattern to find within source replace: The replacement text count: The number of occurences to replace, defaults to all. plain: Boolean flag indicating that pattern should be understood as plain text and not as a Lua style regular expression, defaults to true ]] function str.replace( frame ) local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } ) local source_str = new_args['source'] or '' local pattern = new_args['pattern'] or '' local replace = new_args['replace'] or '' local count = tonumber( new_args['count'] ) local plain = new_args['plain'] or true if source_str == '' or pattern == '' then return source_str end plain = str._getBoolean( plain ) if plain then pattern = str._escapePattern( pattern ) replace = mw.ustring.gsub( replace, "%%", "%%%%" ) --Only need to escape replacement sequences. end local result if count ~= nil then result = mw.ustring.gsub( source_str, pattern, replace, count ) else result = mw.ustring.gsub( source_str, pattern, replace ) end return result end --[[ simple function to pipe string.rep to templates. ]] function str.rep( frame ) local repetitions = tonumber( frame.args[2] ) if not repetitions then return str._error( 'function rep expects a number as second parameter, received "' .. ( frame.args[2] or '' ) .. '"' ) end return string.rep( frame.args[1] or '', repetitions ) end --[[ escapePattern This function escapes special characters from a Lua string pattern. See [1] for details on how patterns work. [1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns Usage: {{#invoke:String|escapePattern|pattern_string}} Parameters pattern_string: The pattern string to escape. ]] function str.escapePattern( frame ) local pattern_str = frame.args[1] if not pattern_str then return str._error( 'No pattern string specified' ) end local result = str._escapePattern( pattern_str ) return result end --[[ count This function counts the number of occurrences of one string in another. ]] function str.count(frame) local args = str._getParameters(frame.args, {'source', 'pattern', 'plain'}) local source = args.source or '' local pattern = args.pattern or '' local plain = str._getBoolean(args.plain or true) if plain then pattern = str._escapePattern(pattern) end local _, count = mw.ustring.gsub(source, pattern, '') return count end --[[ endswith This function determines whether a string ends with another string. ]] function str.endswith(frame) local args = str._getParameters(frame.args, {'source', 'pattern'}) local source = args.source or '' local pattern = args.pattern or '' if pattern == '' then -- All strings end with the empty string. return "yes" end if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then return "yes" else return "" end end --[[ join Join all non empty arguments together; the first argument is the separator. Usage: {{#invoke:String|join|sep|one|two|three}} ]] function str.join(frame) local args = {} local sep for _, v in ipairs( frame.args ) do if sep then if v ~= '' then table.insert(args, v) end else sep = v end end return table.concat( args, sep or '' ) end --[[ Helper function that populates the argument list given that user may need to use a mix of named and unnamed parameters. This is relevant because named parameters are not identical to unnamed parameters due to string trimming, and when dealing with strings we sometimes want to either preserve or remove that whitespace depending on the application. ]] function str._getParameters( frame_args, arg_list ) local new_args = {} local index = 1 local value for _, arg in ipairs( arg_list ) do value = frame_args[arg] if value == nil then value = frame_args[index] index = index + 1 end new_args[arg] = value end return new_args end --[[ Helper function to handle error messages. ]] function str._error( error_str ) local frame = mw.getCurrentFrame() local error_category = frame.args.error_category or 'Errors reported by Module String' local ignore_errors = frame.args.ignore_errors or false local no_category = frame.args.no_category or false if str._getBoolean(ignore_errors) then return '' end local error_str = '<strong class="error">String Module Error: ' .. error_str .. '</strong>' if error_category ~= '' and not str._getBoolean( no_category ) then error_str = '[[Category:' .. error_category .. ']]' .. error_str end return error_str end --[[ Helper Function to interpret boolean strings ]] function str._getBoolean( boolean_str ) local boolean_value if type( boolean_str ) == 'string' then boolean_str = boolean_str:lower() if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0' or boolean_str == '' then boolean_value = false else boolean_value = true end elseif type( boolean_str ) == 'boolean' then boolean_value = boolean_str else error( 'No boolean value found' ) end return boolean_value end --[[ Helper function that escapes all pattern characters so that they will be treated as plain text. ]] function str._escapePattern( pattern_str ) return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" ) end return str cufmbepw7ml3gut4lchtqrhtj5r63cp Module:TableTools 828 908 2048 2047 2020-09-29T19:15:45Z Chrisb 1 1 revision imported 2047 Scribunto text/plain --[[ ------------------------------------------------------------------------------------ -- TableTools -- -- -- -- This module includes a number of functions for dealing with Lua tables. -- -- It is a meta-module, meant to be called from other Lua modules, and should -- -- not be called directly from #invoke. -- ------------------------------------------------------------------------------------ --]] local libraryUtil = require('libraryUtil') local p = {} -- Define often-used variables and functions. local floor = math.floor local infinity = math.huge local checkType = libraryUtil.checkType local checkTypeMulti = libraryUtil.checkTypeMulti --[[ ------------------------------------------------------------------------------------ -- isPositiveInteger -- -- This function returns true if the given value is a positive integer, and false -- if not. Although it doesn't operate on tables, it is included here as it is -- useful for determining whether a given table key is in the array part or the -- hash part of a table. ------------------------------------------------------------------------------------ --]] function p.isPositiveInteger(v) return type(v) == 'number' and v >= 1 and floor(v) == v and v < infinity end --[[ ------------------------------------------------------------------------------------ -- isNan -- -- This function returns true if the given number is a NaN value, and false -- if not. Although it doesn't operate on tables, it is included here as it is -- useful for determining whether a value can be a valid table key. Lua will -- generate an error if a NaN is used as a table key. ------------------------------------------------------------------------------------ --]] function p.isNan(v) return type(v) == 'number' and tostring(v) == '-nan' end --[[ ------------------------------------------------------------------------------------ -- shallowClone -- -- This returns a clone of a table. The value returned is a new table, but all -- subtables and functions are shared. Metamethods are respected, but the returned -- table will have no metatable of its own. ------------------------------------------------------------------------------------ --]] function p.shallowClone(t) local ret = {} for k, v in pairs(t) do ret[k] = v end return ret end --[[ ------------------------------------------------------------------------------------ -- removeDuplicates -- -- This removes duplicate values from an array. Non-positive-integer keys are -- ignored. The earliest value is kept, and all subsequent duplicate values are -- removed, but otherwise the array order is unchanged. ------------------------------------------------------------------------------------ --]] function p.removeDuplicates(t) checkType('removeDuplicates', 1, t, 'table') local isNan = p.isNan local ret, exists = {}, {} for i, v in ipairs(t) do if isNan(v) then -- NaNs can't be table keys, and they are also unique, so we don't need to check existence. ret[#ret + 1] = v else if not exists[v] then ret[#ret + 1] = v exists[v] = true end end end return ret end --[[ ------------------------------------------------------------------------------------ -- numKeys -- -- This takes a table and returns an array containing the numbers of any numerical -- keys that have non-nil values, sorted in numerical order. ------------------------------------------------------------------------------------ --]] function p.numKeys(t) checkType('numKeys', 1, t, 'table') local isPositiveInteger = p.isPositiveInteger local nums = {} for k, v in pairs(t) do if isPositiveInteger(k) then nums[#nums + 1] = k end end table.sort(nums) return nums end --[[ ------------------------------------------------------------------------------------ -- affixNums -- -- This takes a table and returns an array containing the numbers of keys with the -- specified prefix and suffix. For example, for the table -- {a1 = 'foo', a3 = 'bar', a6 = 'baz'} and the prefix "a", affixNums will -- return {1, 3, 6}. ------------------------------------------------------------------------------------ --]] function p.affixNums(t, prefix, suffix) checkType('affixNums', 1, t, 'table') checkType('affixNums', 2, prefix, 'string', true) checkType('affixNums', 3, suffix, 'string', true) local function cleanPattern(s) -- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally. return s:gsub('([%(%)%%%.%[%]%*%+%-%?%^%$])', '%%%1') end prefix = prefix or '' suffix = suffix or '' prefix = cleanPattern(prefix) suffix = cleanPattern(suffix) local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$' local nums = {} for k, v in pairs(t) do if type(k) == 'string' then local num = mw.ustring.match(k, pattern) if num then nums[#nums + 1] = tonumber(num) end end end table.sort(nums) return nums end --[[ ------------------------------------------------------------------------------------ -- numData -- -- Given a table with keys like ("foo1", "bar1", "foo2", "baz2"), returns a table -- of subtables in the format -- { [1] = {foo = 'text', bar = 'text'}, [2] = {foo = 'text', baz = 'text'} } -- Keys that don't end with an integer are stored in a subtable named "other". -- The compress option compresses the table so that it can be iterated over with -- ipairs. ------------------------------------------------------------------------------------ --]] function p.numData(t, compress) checkType('numData', 1, t, 'table') checkType('numData', 2, compress, 'boolean', true) local ret = {} for k, v in pairs(t) do local prefix, num = mw.ustring.match(tostring(k), '^([^0-9]*)([1-9][0-9]*)$') if num then num = tonumber(num) local subtable = ret[num] or {} if prefix == '' then -- Positional parameters match the blank string; put them at the start of the subtable instead. prefix = 1 end subtable[prefix] = v ret[num] = subtable else local subtable = ret.other or {} subtable[k] = v ret.other = subtable end end if compress then local other = ret.other ret = p.compressSparseArray(ret) ret.other = other end return ret end --[[ ------------------------------------------------------------------------------------ -- compressSparseArray -- -- This takes an array with one or more nil values, and removes the nil values -- while preserving the order, so that the array can be safely traversed with -- ipairs. ------------------------------------------------------------------------------------ --]] function p.compressSparseArray(t) checkType('compressSparseArray', 1, t, 'table') local ret = {} local nums = p.numKeys(t) for _, num in ipairs(nums) do ret[#ret + 1] = t[num] end return ret end --[[ ------------------------------------------------------------------------------------ -- sparseIpairs -- -- This is an iterator for sparse arrays. It can be used like ipairs, but can -- handle nil values. ------------------------------------------------------------------------------------ --]] function p.sparseIpairs(t) checkType('sparseIpairs', 1, t, 'table') local nums = p.numKeys(t) local i = 0 local lim = #nums return function () i = i + 1 if i <= lim then local key = nums[i] return key, t[key] else return nil, nil end end end --[[ ------------------------------------------------------------------------------------ -- size -- -- This returns the size of a key/value pair table. It will also work on arrays, -- but for arrays it is more efficient to use the # operator. ------------------------------------------------------------------------------------ --]] function p.size(t) checkType('size', 1, t, 'table') local i = 0 for k in pairs(t) do i = i + 1 end return i end local function defaultKeySort(item1, item2) -- "number" < "string", so numbers will be sorted before strings. local type1, type2 = type(item1), type(item2) if type1 ~= type2 then return type1 < type2 else -- This will fail with table, boolean, function. return item1 < item2 end end --[[ Returns a list of the keys in a table, sorted using either a default comparison function or a custom keySort function. ]] function p.keysToList(t, keySort, checked) if not checked then checkType('keysToList', 1, t, 'table') checkTypeMulti('keysToList', 2, keySort, { 'function', 'boolean', 'nil' }) end local list = {} local index = 1 for key, value in pairs(t) do list[index] = key index = index + 1 end if keySort ~= false then keySort = type(keySort) == 'function' and keySort or defaultKeySort table.sort(list, keySort) end return list end --[[ Iterates through a table, with the keys sorted using the keysToList function. If there are only numerical keys, sparseIpairs is probably more efficient. ]] function p.sortedPairs(t, keySort) checkType('sortedPairs', 1, t, 'table') checkType('sortedPairs', 2, keySort, 'function', true) local list = p.keysToList(t, keySort, true) local i = 0 return function() i = i + 1 local key = list[i] if key ~= nil then return key, t[key] else return nil, nil end end end --[[ Returns true if all keys in the table are consecutive integers starting at 1. --]] function p.isArray(t) checkType("isArray", 1, t, "table") local i = 0 for k, v in pairs(t) do i = i + 1 if t[i] == nil then return false end end return true end -- { "a", "b", "c" } -> { a = 1, b = 2, c = 3 } function p.invert(array) checkType("invert", 1, array, "table") local map = {} for i, v in ipairs(array) do map[v] = i end return map end --[[ { "a", "b", "c" } -> { ["a"] = true, ["b"] = true, ["c"] = true } --]] function p.listToSet(t) checkType("listToSet", 1, t, "table") local set = {} for _, item in ipairs(t) do set[item] = true end return set end --[[ Recursive deep copy function. Preserves identities of subtables. ]] local function _deepCopy(orig, includeMetatable, already_seen) -- Stores copies of tables indexed by the original table. already_seen = already_seen or {} local copy = already_seen[orig] if copy ~= nil then return copy end if type(orig) == 'table' then copy = {} for orig_key, orig_value in pairs(orig) do copy[deepcopy(orig_key, includeMetatable, already_seen)] = deepcopy(orig_value, includeMetatable, already_seen) end already_seen[orig] = copy if includeMetatable then local mt = getmetatable(orig) if mt ~= nil then local mt_copy = deepcopy(mt, includeMetatable, already_seen) setmetatable(copy, mt_copy) already_seen[mt] = mt_copy end end else -- number, string, boolean, etc copy = orig end return copy end function p.deepCopy(orig, noMetatable, already_seen) checkType("deepCopy", 3, already_seen, "table", true) return _deepCopy(orig, not noMetatable, already_seen) end --[[ Concatenates all values in the table that are indexed by a number, in order. sparseConcat{ a, nil, c, d } => "acd" sparseConcat{ nil, b, c, d } => "bcd" ]] function p.sparseConcat(t, sep, i, j) local list = {} local list_i = 0 for _, v in p.sparseIpairs(t) do list_i = list_i + 1 list[list_i] = v end return table.concat(list, sep, i, j) end --[[ -- Finds the length of an array, or of a quasi-array with keys such -- as "data1", "data2", etc., using an exponential search algorithm. -- It is similar to the operator #, but may return -- a different value when there are gaps in the array portion of the table. -- Intended to be used on data loaded with mw.loadData. For other tables, use #. -- Note: #frame.args in frame object always be set to 0, regardless of -- the number of unnamed template parameters, so use this function for -- frame.args. --]] function p.length(t, prefix) -- requiring module inline so that [[Module:Exponential search]] -- which is only needed by this one function -- doesn't get millions of transclusions local expSearch = require("Module:Exponential search") checkType('length', 1, t, 'table') checkType('length', 2, prefix, 'string', true) return expSearch(function(i) local key if prefix then key = prefix .. tostring(i) else key = i end return t[key] ~= nil end) or 0 end function p.inArray(arr, valueToFind) checkType("inArray", 1, arr, "table") -- if valueToFind is nil, error? for _, v in ipairs(arr) do if v == valueToFind then return true end end return false end return p k8alxjj4kl038b9fpyfzl6qf0yqrdst Module:Tlg 828 909 2050 2049 2020-09-29T19:15:45Z Chrisb 1 1 revision imported 2049 Scribunto text/plain -- This implements Template:Tlg local getArgs = require('Module:Arguments').getArgs local p = {} -- Is a string non-empty? local function _ne(s) return s ~= nil and s ~= "" end local nw = mw.text.nowiki local function addTemplate(s) local i, _ = s:find(':', 1, true) if i == nil then return 'Template:' .. s end local ns = s:sub(1, i - 1) if ns == '' or mw.site.namespaces[ns] then return s else return 'Template:' .. s end end local function trimTemplate(s) local needle = 'template:' if s:sub(1, needle:len()):lower() == needle then return s:sub(needle:len() + 1) else return s end end local function linkTitle(args) if _ne(args.nolink) then return args['1'] end local titleObj local titlePart = '[[' if args['1'] then -- This handles :Page and other NS titleObj = mw.title.new(args['1'], 'Template') else titleObj = mw.title.getCurrentTitle() end titlePart = titlePart .. (titleObj ~= nil and titleObj.fullText or addTemplate(args['1'])) local textPart = args.alttext if not _ne(textPart) then if titleObj ~= nil then textPart = titleObj:inNamespace("Template") and args['1'] or titleObj.fullText else -- redlink textPart = args['1'] end end if _ne(args.subst) then -- HACK: the ns thing above is probably broken textPart = 'subst:' .. textPart end if _ne(args.brace) then textPart = nw('{{') .. textPart .. nw('}}') elseif _ne(args.braceinside) then textPart = nw('{') .. textPart .. nw('}') end titlePart = titlePart .. '|' .. textPart .. ']]' if _ne(args.braceinside) then titlePart = nw('{') .. titlePart .. nw('}') end return titlePart end function p.main(frame) local args = getArgs(frame, { trim = true, removeBlanks = false }) return p._main(args) end function p._main(args) local bold = _ne(args.bold) or _ne(args.boldlink) or _ne(args.boldname) local italic = _ne(args.italic) or _ne(args.italics) local dontBrace = _ne(args.brace) or _ne(args.braceinside) local code = _ne(args.code) or _ne(args.tt) -- Build the link part local titlePart = linkTitle(args) if bold then titlePart = "'''" .. titlePart .. "'''" end if _ne(args.nowrapname) then titlePart = '<span class="nowrap">' .. titlePart .. '</span>' end -- Build the arguments local textPart = "" for i = 2, 11 do local ii = tostring(i) local val = args[ii] if val ~= nil then val = mw.text.unstripNoWiki(val) else break end if _ne(args.nowiki) then val = nw(val) end if italic then val = '<span style="font-style:italic;">' .. val .. '</span>' end textPart = textPart .. '&#124;' .. val end if _ne(args['12']) then textPart = textPart .. '&#124;…' end -- final wrap local ret = titlePart .. textPart if not dontBrace then ret = nw('{{') .. ret .. nw('}}') end if _ne(args.a) then ret = nw('*') .. '&nbsp;' .. ret end if _ne(args.kbd) then ret = '<kbd>' .. ret .. '</kbd>' end if code then ret = '<code>' .. ret .. '</code>' elseif _ne(args.plaincode) then ret = '<code style="border:none;background:transparent;">' .. ret .. '</code>' end if _ne(args.nowrap) then ret = '<span class="nowrap">' .. ret .. '</span>' end --[[ Wrap as html?? local span = mw.html.create('span') span:wikitext(ret) --]] if _ne(args.debug) then ret = ret .. '\n<pre>' .. mw.text.encode(mw.dumpObject(args)) .. '</pre>' end return ret end return p 9v2mu819mr06chi30bhe3gas87d94qt Module:Transclusion count 828 892 3276 3275 2020-10-11T01:41:35Z Chrisb 1 1 revision imported 3275 Scribunto text/plain local p = {} function p.fetch(frame) local template = nil local return_value = nil -- Use demo parameter if it exists, otherswise use current template name local namespace = mw.title.getCurrentTitle().namespace if frame.args["demo"] and frame.args["demo"] ~= "" then template = frame.args["demo"] elseif namespace == 10 then -- Template namespace template = mw.title.getCurrentTitle().text elseif namespace == 828 then -- Module namespace template = (mw.site.namespaces[828].name .. ":" .. mw.title.getCurrentTitle().text) end -- If in template or module namespace, look up count in /data if template ~= nil then namespace = mw.title.new(template, "Template").namespace if namespace == 10 or namespace == 828 then template = mw.ustring.gsub(template, "/doc$", "") -- strip /doc from end local index = mw.ustring.sub(mw.title.new(template).text,1,1) local data = mw.loadData('Module:Transclusion_count/data/' .. (mw.ustring.find(index, "%a") and index or "other")) return_value = tonumber(data[mw.ustring.gsub(template, " ", "_")]) end end -- If database value doesn't exist, use value passed to template if return_value == nil and frame.args[1] ~= nil then local arg1=mw.ustring.match(frame.args[1], '[%d,]+') if arg1 and arg1 ~= '' then return_value = tonumber(frame:callParserFunction('formatnum', arg1, 'R')) end end return return_value end return p h9ky1fdc2argcyjstoy2n0i4o1hjaj9 Module:Transclusion count/data/A 828 1320 2872 2871 2020-09-29T19:18:22Z Chrisb 1 1 revision imported 2871 Scribunto text/plain return { ["A-Class"] = 5700, ["AARTalk"] = 8600, ["AFB_game_box_end"] = 2300, ["AFB_game_box_start"] = 2300, ["AFC_comment"] = 15000, ["AFC_status/age"] = 3700, ["AFC_status/backlog"] = 4200, ["AFC_submission"] = 44000, ["AFC_submission/comments"] = 25000, ["AFC_submission/declined"] = 25000, ["AFC_submission/declinedivbox"] = 25000, ["AFC_submission/draft"] = 17000, ["AFC_submission/helptools"] = 41000, ["AFC_submission/pending"] = 3700, ["AFC_submission/reject_reasons"] = 2500, ["AFC_submission/rejected"] = 2500, ["AFC_submission/tools"] = 3700, ["AFC_submission_category_header"] = 4600, ["AFC_submission_category_header/day"] = 4400, ["AFC_submission_category_header/td"] = 4400, ["AFD_help"] = 45000, ["AFI_film"] = 5400, ["AFL_Car"] = 2200, ["AFL_Col"] = 2100, ["AFL_Ess"] = 2100, ["AFL_Gee"] = 2200, ["AFL_Mel"] = 2400, ["AFL_Ric"] = 2200, ["AFL_StK"] = 2600, ["AFL_Tables"] = 11000, ["AFL_Year"] = 2400, ["ALG"] = 2100, ["AMARB"] = 4700, ["AML"] = 4800, ["AMQ"] = 4800, ["AM_station_data"] = 4600, ["ARG"] = 6100, ["ASCII_code"] = 28000, ["ASIN"] = 2200, ["ASN"] = 3400, ["ATP"] = 3500, ["AUS"] = 14000, ["AUT"] = 8100, ["AZE"] = 2000, ["A_note"] = 8300, ["A_or_an"] = 16000, ["Aan"] = 33000, ["Abbr"] = 667000, ["Abbrlink"] = 14000, ["Abot"] = 3000, ["About"] = 136000, ["Acad"] = 6200, ["Access_icon"] = 2300, ["According_to_whom"] = 3900, ["AchievementTable"] = 9700, ["Active_politician"] = 4200, ["AdSenseSummary"] = 3000, ["Adjacent_communities"] = 24000, ["Adjacent_stations"] = 10000, ["Adjacent_stations/styles.css"] = 10000, ["Admin"] = 12000, ["Administrator_note"] = 5800, ["Adminnote"] = 3200, ["Advert"] = 20000, ["Aet"] = 3000, ["AfC_age_category"] = 3700, ["AfC_date_category"] = 163000, ["AfD_categories_horizontal_shortnames"] = 3300, ["AfD_count_link"] = 3600, ["Afc_comment"] = 15000, ["Afd-merged-from"] = 6300, ["AfricaProject"] = 32000, ["Africa_topic"] = 5800, ["After_extra_time"] = 3000, ["Age"] = 31000, ["Age_in_days"] = 2700, ["Age_in_years,_months,_weeks_and_days"] = 2900, ["Age_in_years,_months_and_days"] = 14000, ["Age_in_years_and_days"] = 2700, ["Age_switch"] = 4800, ["Ahnentafel"] = 8300, ["Ahnentafel/styles.css"] = 8300, ["Air_Force_Historical_Research_Agency"] = 4300, ["Air_force"] = 5300, ["Air_force/core"] = 5300, ["Aircontent"] = 9100, ["Aircraft_specs"] = 11000, ["Aircraft_specs/convert"] = 11000, ["Aircraft_specs/eng"] = 11000, ["Aircraft_specs/length"] = 11000, ["Aircraft_specs/range"] = 11000, ["Aircraft_specs/speed"] = 11000, ["Airport-dest-list"] = 3500, ["Airport_codes"] = 15000, ["Airport_destination_list"] = 4800, ["Al"] = 54000, ["Album"] = 215000, ["Album_chart"] = 17000, ["Album_chart/chartnote"] = 24000, ["Album_cover_fur"] = 51000, ["Album_label_category"] = 2000, ["Album_label_category/core"] = 2000, ["Album_ratings"] = 88000, ["Album_reviews"] = 6500, ["Albumchart"] = 8400, ["Albums"] = 7800, ["Albums_category"] = 23000, ["Albums_category/core"] = 23000, ["Albums_category/type/default"] = 23000, ["Align"] = 128000, ["Aligned_table"] = 9400, ["AllIrelandByCountyCatNav"] = 2200, ["AllMovie_name"] = 5000, ["AllMovie_title"] = 25000, ["AllMusic"] = 79000, ["All_plot"] = 2200, ["Allcaps"] = 28000, ["Allcaps/styles.css"] = 28000, ["Allmovie"] = 3900, ["Allmovie_title"] = 2400, ["Allmusic"] = 75000, ["Allow_wrap"] = 34000, ["Ambox"] = 1360000, ["Ambox_globe"] = 26000, ["Ambox_globe_current_red"] = 24000, ["American_English"] = 9900, ["American_football_roster/Footer"] = 2400, ["American_football_roster/Header"] = 2400, ["American_football_roster/Player"] = 2400, ["Americanfootballbox"] = 2000, ["Amg_movie"] = 11000, ["Amg_name"] = 3300, ["Anchor"] = 76000, ["Angle_bracket"] = 2100, ["Anglican_navbox_titlestyle"] = 14000, ["Anglicise_rank"] = 512000, ["Animal_tasks"] = 12000, ["Ann"] = 9300, ["Annotated_link"] = 3800, ["Annual_readership"] = 19000, ["Anon_block"] = 4500, ["Anonblock"] = 43000, ["Antonym_of_(dis)establish"] = 4200, ["ArbCom_Arab-Israeli_enforcement"] = 2600, ["Arbitration_Committee_candidate/data"] = 38000, ["Archive"] = 134000, ["Archive-nav"] = 5500, ["Archive_bottom"] = 21000, ["Archive_box"] = 19000, ["Archive_list"] = 49000, ["Archive_navigation"] = 6400, ["Archive_top"] = 19000, ["Archivebottom"] = 3400, ["Archivebox"] = 2400, ["Archives"] = 40000, ["Archivetop"] = 3300, ["Army"] = 12000, ["Army/core"] = 12000, ["Art_UK_bio"] = 2200, ["Art_UK_bio/plural"] = 2200, ["Article"] = 2800, ["ArticleHistory"] = 31000, ["Article_alerts_box"] = 3200, ["Article_history"] = 42000, ["Articles_by_Quality"] = 2500, ["Articles_by_Quality/down"] = 2500, ["Articles_by_Quality/total"] = 2500, ["Articles_by_Quality/up"] = 2500, ["As_of"] = 66000, ["Asbox"] = 2350000, ["Asia_topic"] = 9100, ["Asof"] = 6300, ["Assessed-Class"] = 17000, ["Assignment"] = 4100, ["Assignment_milestones"] = 3500, ["AstDys"] = 2800, ["AthAbbr"] = 2200, ["Atnhead"] = 5900, ["Atop"] = 2500, ["Attached_KML"] = 12000, ["Audio"] = 15000, ["Audio_sample"] = 3300, ["AustralianFootball"] = 7000, ["Australian_party_style"] = 4900, ["Australian_politics/name"] = 3000, ["Australian_politics/party_colours"] = 5000, ["Austria_metadata_Wikidata"] = 2100, ["Austria_population_Wikidata"] = 2100, ["Aut"] = 8500, ["Authority_control"] = 1390000, ["Auto_archiving_notice"] = 9200, ["Auto_link"] = 71000, ["Autobiography"] = 3000, ["Automated_tools"] = 84000, ["Automated_tools/core"] = 84000, ["Automatic_archive_navigator"] = 99000, ["Automatic_taxobox"] = 45000, ["Award2"] = 2400, ["Awards"] = 2100, ["Awards_table"] = 3300, ["Awards_table/styles.css"] = 3300, ["Aye"] = 14000, ["Module:AFC_submission_catcheck"] = 326000, ["Module:A_or_an"] = 16000, ["Module:A_or_an/words"] = 16000, ["Module:About"] = 136000, ["Module:Adjacent_stations"] = 47000, ["Module:Adjacent_stations/i18n"] = 47000, ["Module:Age"] = 987000, ["Module:Ahnentafel"] = 8300, ["Module:Airport_destination_list"] = 4800, ["Module:Album_ratings"] = 88000, ["Module:Aligned_table"] = 9400, ["Module:Anchor"] = 76000, ["Module:Ancient_Egypt_era"] = 2800, ["Module:Ancient_Egypt_era/data"] = 2800, ["Module:Ancient_Egypt_kings"] = 2800, ["Module:Ancient_Egypt_kings/data"] = 2800, ["Module:Ancient_Olympiads"] = 2800, ["Module:Ancient_Olympiads/data"] = 2800, ["Module:Archive_list"] = 51000, ["Module:Arguments"] = 25500000, ["Module:Armenian"] = 2800, ["Module:Article_history"] = 42000, ["Module:Article_history/Category"] = 42000, ["Module:Article_history/config"] = 42000, ["Module:Asbox"] = 2350000, ["Module:Asbox_stubtree"] = 32000, ["Module:Attached_KML"] = 12000, ["Module:Australian_place_map"] = 15000, ["Module:Authority_control"] = 1390000, ["Module:Automated_taxobox"] = 45000, ["Module:Automatic_archive_navigator"] = 99000, ["Module:Automatic_archive_navigator/config"] = 99000, ["Module:Autotaxobox"] = 512000, } ac9gv6se7mps9c8i8lclr0akjh4uxs2 Module:Transclusion count/data/C 828 910 2052 2051 2020-09-29T19:15:45Z Chrisb 1 1 revision imported 2051 Scribunto text/plain return { ["C"] = 531000, ["C-Class"] = 61000, ["C-SPAN"] = 11000, ["C-cmn"] = 2300, ["C-pl"] = 53000, ["CAN"] = 19000, ["CANelec"] = 8700, ["CANelec/hold"] = 2900, ["CANelec/source"] = 5000, ["CANelec/top"] = 5100, ["CANelec/total"] = 5100, ["CAS"] = 3800, ["CBB_Standings_End"] = 11000, ["CBB_Standings_Entry"] = 11000, ["CBB_Standings_Start"] = 11000, ["CBB_Yearly_Record_End"] = 2500, ["CBB_Yearly_Record_Entry"] = 2600, ["CBB_Yearly_Record_Start"] = 2500, ["CBB_Yearly_Record_Subhead"] = 3400, ["CBB_Yearly_Record_Subtotal"] = 2400, ["CBB_roster/Footer"] = 5200, ["CBB_roster/Header"] = 5200, ["CBB_roster/Player"] = 5200, ["CBB_schedule_end"] = 7700, ["CBB_schedule_entry"] = 7700, ["CBB_schedule_start"] = 7700, ["CBB_yearly_record_end"] = 3400, ["CBB_yearly_record_end/legend"] = 3000, ["CBB_yearly_record_entry"] = 3400, ["CBB_yearly_record_start"] = 3300, ["CBB_yearly_record_subhead"] = 3500, ["CBB_yearly_record_subtotal"] = 3200, ["CBSB_Standings_End"] = 3000, ["CBSB_Standings_Entry"] = 3000, ["CBSB_Standings_Start"] = 3000, ["CBSB_link"] = 2600, ["CC0"] = 5700, ["CENTURY"] = 16000, ["CFB_Standings_End"] = 26000, ["CFB_Standings_Entry"] = 26000, ["CFB_Standings_Start"] = 26000, ["CFB_Yearly_Record_End"] = 5700, ["CFB_Yearly_Record_End/legend"] = 2000, ["CFB_Yearly_Record_Entry"] = 5700, ["CFB_Yearly_Record_Start"] = 5700, ["CFB_Yearly_Record_Subhead"] = 5700, ["CFB_Yearly_Record_Subtotal"] = 5600, ["CFB_schedule"] = 20000, ["CFB_schedule_entry"] = 14000, ["CFL_Year"] = 4800, ["CGF_year"] = 2300, ["CHE"] = 9200, ["CHI"] = 2500, ["CHL"] = 3300, ["CHN"] = 10000, ["COI"] = 14000, ["COIUL"] = 111000, ["COI_editnotice"] = 5300, ["COL"] = 4400, ["COLON"] = 13000, ["CRO"] = 3600, ["CSK"] = 2600, ["CSS_image_crop"] = 2900, ["CUB"] = 3300, ["CURRENTDATE"] = 3600, ["CURRENTMINUTE"] = 2800, ["CZE"] = 12000, ["Calendar"] = 2300, ["California's_Geographic_Names"] = 2700, ["California/color"] = 12000, ["Call_sign_disambiguation"] = 2800, ["Campaignbox"] = 20000, ["CanadaByProvinceCatNav"] = 9200, ["CanadaProvinceThe"] = 3800, ["Canadian_English"] = 3300, ["Canadian_Parliament_links"] = 4900, ["Canadian_election_result"] = 8700, ["Canadian_election_result/hold"] = 2900, ["Canadian_election_result/source"] = 5700, ["Canadian_election_result/top"] = 8100, ["Canadian_election_result/top/ElectionYearTest"] = 4200, ["Canadian_election_result/total"] = 6900, ["Canadian_party_colour"] = 12000, ["Canadian_party_colour/colour"] = 12000, ["Canadian_party_colour/colour/default"] = 12000, ["Canadian_party_colour/name"] = 9600, ["Canadian_party_colour/name/default"] = 4200, ["Cascite"] = 14000, ["Caselaw_source"] = 3800, ["Cast_listing"] = 5300, ["Cat"] = 220000, ["CatAutoTOC"] = 550000, ["CatAutoTOC/core"] = 549000, ["CatRel"] = 3800, ["CatTrack"] = 3100, ["Cat_class"] = 7000, ["Cat_in_use"] = 56000, ["Cat_main"] = 161000, ["Cat_more"] = 110000, ["Cat_more_if_exists"] = 33000, ["Cat_more_if_exists/core"] = 33000, ["Cat_see_also"] = 2900, ["Catalog_lookup_link"] = 467000, ["Category-Class"] = 13000, ["Category-inline"] = 6800, ["Category_TOC"] = 65000, ["Category_TOC/tracking"] = 65000, ["Category_U.S._State_elections_by_year"] = 6900, ["Category_U.S._State_elections_by_year/core"] = 6900, ["Category_class"] = 40000, ["Category_class/column"] = 40000, ["Category_class/second_row_column"] = 40000, ["Category_described_in_year"] = 5400, ["Category_diffuse"] = 8900, ["Category_disambiguation"] = 2100, ["Category_disambiguation/category_link"] = 2100, ["Category_explanation"] = 73000, ["Category_handler"] = 2960000, ["Category_ifexist"] = 4600, ["Category_importance"] = 12000, ["Category_importance/column"] = 12000, ["Category_importance/second_row_column"] = 12000, ["Category_link"] = 99000, ["Category_link_with_count"] = 4900, ["Category_ordered_by_date"] = 9200, ["Category_other"] = 777000, ["Category_pair"] = 4200, ["Category_pair/core"] = 4200, ["Category_redirect"] = 99000, ["Category_see_also"] = 37000, ["Category_see_also/Category_pair_check"] = 37000, ["Category_see_also_if_exists"] = 44000, ["Category_see_also_if_exists_2"] = 77000, ["Category_title"] = 2700, ["Catexp"] = 5500, ["CathEncy"] = 2400, ["Catholic"] = 4300, ["Catholic_Encyclopedia"] = 4900, ["Catmain"] = 22000, ["Catmore"] = 9100, ["Caution"] = 2100, ["Cbb_link"] = 6100, ["Cbignore"] = 22000, ["Cc-by-2.5"] = 5200, ["Cc-by-3.0"] = 12000, ["Cc-by-sa-2.5"] = 3600, ["Cc-by-sa-2.5,2.0,1.0"] = 3700, ["Cc-by-sa-3.0"] = 36000, ["Cc-by-sa-3.0,2.5,2.0,1.0"] = 3900, ["Cc-by-sa-3.0-migrated"] = 34000, ["Cc-by-sa-4.0"] = 14000, ["Cc-zero"] = 5700, ["CensusAU"] = 9300, ["Census_2016_AUS"] = 7400, ["Cent"] = 4700, ["Center"] = 560000, ["Centralized_discussion"] = 5000, ["Centralized_discussion/core"] = 5000, ["Centre"] = 2200, ["Century"] = 2000, ["Century_name_from_decade_or_year"] = 65000, ["Century_name_from_title_decade"] = 5500, ["Century_name_from_title_year"] = 5000, ["Certification_Cite/Title"] = 18000, ["Certification_Cite/URL"] = 20000, ["Certification_Cite_Ref"] = 18000, ["Certification_Table_Bottom"] = 19000, ["Certification_Table_Entry"] = 19000, ["Certification_Table_Entry/Foot"] = 18000, ["Certification_Table_Entry/Region"] = 19000, ["Certification_Table_Entry/Sales"] = 17000, ["Certification_Table_Entry/Sales/GermanPeriod"] = 2600, ["Certification_Table_Top"] = 19000, ["Cfb_link"] = 20000, ["Cfd_result"] = 2500, ["Cfdend"] = 3800, ["Chart"] = 4500, ["Chart/end"] = 4400, ["Chart/start"] = 4500, ["Check_completeness_of_transclusions"] = 3700, ["Check_talk"] = 20000, ["Check_talk_wp"] = 1300000, ["Check_winner_by_scores"] = 9800, ["CheckedSockpuppet"] = 7100, ["Checked_sockpuppet"] = 17000, ["Checkedsockpuppet"] = 5300, ["Checkip"] = 11000, ["Checkuser"] = 60000, ["Checkuserblock-account"] = 6300, ["Chem"] = 3800, ["Chem/atom"] = 3700, ["Chem/link"] = 3800, ["Chem_molar_mass"] = 15000, ["Chem_molar_mass/format"] = 15000, ["Chembox"] = 12000, ["Chembox_3DMet"] = 12000, ["Chembox_3DMet/format"] = 12000, ["Chembox_AllOtherNames"] = 11000, ["Chembox_AllOtherNames/format"] = 11000, ["Chembox_Appearance"] = 5100, ["Chembox_BoilingPt"] = 3500, ["Chembox_CASNo"] = 12000, ["Chembox_CASNo/format"] = 12000, ["Chembox_CalcTemperatures"] = 6100, ["Chembox_ChEBI"] = 12000, ["Chembox_ChEBI/format"] = 12000, ["Chembox_ChEMBL"] = 12000, ["Chembox_ChEMBL/format"] = 12000, ["Chembox_ChemSpiderID"] = 12000, ["Chembox_ChemSpiderID/format"] = 12000, ["Chembox_CompTox"] = 12000, ["Chembox_CompTox/format"] = 12000, ["Chembox_Density"] = 4400, ["Chembox_DrugBank"] = 12000, ["Chembox_DrugBank/format"] = 12000, ["Chembox_ECHA"] = 7000, ["Chembox_ECNumber"] = 12000, ["Chembox_ECNumber/format"] = 12000, ["Chembox_Elements"] = 12000, ["Chembox_Elements/molecular_formula"] = 16000, ["Chembox_Footer"] = 12000, ["Chembox_Footer/tracking"] = 12000, ["Chembox_Hazards"] = 11000, ["Chembox_IUPHAR_ligand"] = 12000, ["Chembox_IUPHAR_ligand/format"] = 12000, ["Chembox_Identifiers"] = 12000, ["Chembox_InChI"] = 11000, ["Chembox_InChI/format"] = 11000, ["Chembox_Indexlist"] = 12000, ["Chembox_Jmol"] = 12000, ["Chembox_Jmol/format"] = 12000, ["Chembox_KEGG"] = 12000, ["Chembox_KEGG/format"] = 12000, ["Chembox_MeltingPt"] = 5200, ["Chembox_Properties"] = 12000, ["Chembox_PubChem"] = 12000, ["Chembox_PubChem/format"] = 12000, ["Chembox_RTECS"] = 12000, ["Chembox_RTECS/format"] = 12000, ["Chembox_Related"] = 2600, ["Chembox_SMILES"] = 11000, ["Chembox_SMILES/format"] = 11000, ["Chembox_SolubilityInWater"] = 3400, ["Chembox_UNII"] = 12000, ["Chembox_UNII/format"] = 12000, ["Chembox_headerbar"] = 12000, ["Chembox_image"] = 12000, ["Chembox_image_cell"] = 11000, ["Chembox_image_sbs"] = 11000, ["Chembox_parametercheck"] = 12000, ["Chembox_templatePar/formatPreviewMessage"] = 12000, ["Chembox_verification"] = 7200, ["Chemicals"] = 8400, ["Chemistry"] = 3000, ["Chemspidercite"] = 11000, ["Chessgames_player"] = 2900, ["Chinese"] = 6900, ["Chinese_name"] = 16000, ["Chr"] = 8700, ["ChristianityWikiProject"] = 6800, ["Chrysomelidae-stub"] = 2100, ["Circa"] = 33000, ["Circular_reference"] = 3700, ["Citation"] = 299000, ["Citation/make_link"] = 4500, ["Citation_needed"] = 440000, ["Citation_needed_span"] = 2600, ["Citation_style"] = 4400, ["Cite"] = 6700, ["Cite_AV_media"] = 28000, ["Cite_AV_media_notes"] = 18000, ["Cite_Appletons'"] = 2300, ["Cite_Australian_Dictionary_of_Biography"] = 2500, ["Cite_Catholic_Encyclopedia"] = 7800, ["Cite_DCB"] = 2600, ["Cite_DNB"] = 16000, ["Cite_EB1911"] = 21000, ["Cite_GNIS"] = 2300, ["Cite_Jewish_Encyclopedia"] = 2500, ["Cite_NIE"] = 3600, ["Cite_NSW_Parliament"] = 3000, ["Cite_NSW_SHR"] = 2600, ["Cite_ODNB"] = 8500, ["Cite_Q"] = 43000, ["Cite_QHR"] = 2900, ["Cite_QPN"] = 3800, ["Cite_Russian_law"] = 7000, ["Cite_Sports-Reference"] = 53000, ["Cite_WoRMS"] = 3500, ["Cite_arXiv"] = 3700, ["Cite_article"] = 2700, ["Cite_av_media"] = 3400, ["Cite_bcgnis"] = 2600, ["Cite_book"] = 1250000, ["Cite_certification"] = 20000, ["Cite_cgndb"] = 2300, ["Cite_conference"] = 11000, ["Cite_court"] = 4300, ["Cite_document"] = 6600, ["Cite_encyclopedia"] = 121000, ["Cite_episode"] = 14000, ["Cite_gnis"] = 32000, ["Cite_interview"] = 5100, ["Cite_iucn"] = 30000, ["Cite_journal"] = 708000, ["Cite_magazine"] = 119000, ["Cite_map"] = 28000, ["Cite_news"] = 1140000, ["Cite_newspaper"] = 6900, ["Cite_newspaper_The_Times"] = 5600, ["Cite_paper"] = 3400, ["Cite_patent"] = 4000, ["Cite_patent/authors"] = 2700, ["Cite_patent/core"] = 4300, ["Cite_peakbagger"] = 3500, ["Cite_press_release"] = 46000, ["Cite_report"] = 21000, ["Cite_simbad"] = 3400, ["Cite_sports-reference"] = 57000, ["Cite_thesis"] = 15000, ["Cite_tweet"] = 14000, ["Cite_video"] = 11000, ["Cite_video_game"] = 2500, ["Cite_web"] = 3690000, ["Cite_wikisource"] = 4100, ["Cite_wikisource/make_link"] = 48000, ["Citeweb"] = 18000, ["Civil_navigation"] = 2400, ["Cl"] = 98000, ["Clade"] = 5100, ["Clade/styles.css"] = 5100, ["Clarify"] = 36000, ["Class"] = 8820000, ["Class/colour"] = 8880000, ["Class/icon"] = 8830000, ["Class_mask"] = 9010000, ["Class_mask/b"] = 289000, ["Classical"] = 7600, ["Classicon"] = 4300, ["Clc"] = 4000, ["Cleanup"] = 13000, ["Cleanup_reorganize"] = 2800, ["Cleanup_rewrite"] = 5300, ["Clear"] = 2460000, ["Clear-left"] = 18000, ["Clear_left"] = 30000, ["Clear_right"] = 2600, ["Clerk-Note"] = 7500, ["Clerknote"] = 5300, ["Clickable_button"] = 11000, ["Clickable_button_2"] = 713000, ["Clr"] = 3500, ["Cmbox"] = 326000, ["Cn"] = 73000, ["Coat_of_arms"] = 7800, ["Cob"] = 8600, ["Code"] = 36000, ["Col-1-of-2"] = 3100, ["Col-2"] = 145000, ["Col-2-of-2"] = 3000, ["Col-3"] = 12000, ["Col-4"] = 4200, ["Col-begin"] = 193000, ["Col-break"] = 189000, ["Col-end"] = 190000, ["Col-start"] = 17000, ["Colbegin"] = 49000, ["Colend"] = 58000, ["Collapse"] = 8600, ["Collapse_bottom"] = 44000, ["Collapse_top"] = 44000, ["Collapsebottom"] = 3600, ["Collapsetop"] = 3600, ["Collapsible_list"] = 43000, ["Collapsible_option"] = 120000, ["Colledge"] = 3100, ["College"] = 6400, ["CollegePrimaryHeader"] = 3600, ["CollegePrimaryStyle"] = 78000, ["College_Athlete_Recruit_End"] = 2200, ["College_Athlete_Recruit_Entry"] = 2300, ["College_Athlete_Recruit_Start"] = 2200, ["College_athlete_recruit_end"] = 3200, ["College_athlete_recruit_entry"] = 3300, ["College_athlete_recruit_start"] = 3300, ["College_color_list"] = 3500, ["Colon"] = 16000, ["Color"] = 399000, ["Color_box"] = 57000, ["Colorbox"] = 2400, ["Colorbull"] = 4500, ["Colored_link"] = 26000, ["Colors"] = 17000, ["Colour"] = 10000, ["Coloured_link"] = 4200, ["Column-count"] = 17000, ["Column-width"] = 940000, ["Columns-list"] = 85000, ["Columns/styles.css"] = 3300, ["Comedy"] = 3300, ["Comic_Book_DB"] = 3700, ["Comicbookdb"] = 3600, ["Comics-replaceability"] = 2900, ["Comics_infobox_sec"] = 11000, ["Comics_infobox_sec/creator_nat"] = 3000, ["Comics_infobox_sec/formcat"] = 3000, ["Comics_infobox_sec/genre"] = 3700, ["Comics_infobox_sec/genrecat"] = 3400, ["Comicsproj"] = 30000, ["Comicsyrimage"] = 2100, ["Comma_separated_entries"] = 307000, ["Comment"] = 3700, ["Committed_identity"] = 2700, ["Committed_identity/styles.css"] = 2700, ["Commons"] = 65000, ["Commons-inline"] = 12000, ["Commons_cat"] = 50000, ["Commons_category"] = 787000, ["Commons_category-inline"] = 110000, ["Commons_category_inline"] = 6900, ["Commonscat"] = 76000, ["Commonscat-inline"] = 27000, ["Commonscat_inline"] = 3000, ["Commonscatinline"] = 6900, ["Compact_ToC"] = 6400, ["Compare"] = 7000, ["Composition_bar"] = 7700, ["ConfirmationOTRS"] = 3100, ["Confirmed"] = 12000, ["Confused"] = 2500, ["Confusing"] = 2400, ["CongBio"] = 9800, ["CongLinks"] = 4100, ["Connected_contributor"] = 14000, ["Connected_contributor_(paid)"] = 4600, ["Conservative_Party_(UK)/meta/color"] = 10000, ["Conservative_Party_(UK)/meta/shortname"] = 8900, ["Conservative_and_Unionist_Party_(UK)/meta/color"] = 11000, ["Constellation_navbox"] = 4400, ["Container"] = 8300, ["Container_cat"] = 6400, ["Container_category"] = 33000, ["Containercat"] = 2700, ["Contains_special_characters"] = 4100, ["Contains_special_characters/core"] = 4100, ["Content_category"] = 6500, ["Context"] = 3900, ["Continent2continental"] = 13000, ["Continent_adjective_to_noun"] = 2200, ["Controversial"] = 2900, ["Convert"] = 1040000, ["Convinfobox"] = 177000, ["Convinfobox/2"] = 12000, ["Convinfobox/3"] = 107000, ["Convinfobox/pri2"] = 54000, ["Convinfobox/prisec2"] = 2600, ["Convinfobox/prisec3"] = 21000, ["Convinfobox/sec2"] = 6900, ["Coord"] = 1230000, ["Coord_missing"] = 120000, ["Coord_missing/CheckCat"] = 118000, ["Coords"] = 6700, ["Copied"] = 14000, ["Copy_to_Wikimedia_Commons"] = 159000, ["Copyvios"] = 4200, ["Cospar"] = 2800, ["Cot"] = 8400, ["Count"] = 10000, ["Country2continent"] = 15000, ["CountryPrefixThe"] = 87000, ["Country_abbreviation"] = 101000, ["Country_alias"] = 14000, ["Country_at_games_navbox"] = 2100, ["Country_at_games_navbox/below"] = 2100, ["Country_data"] = 4900, ["Country_data_ALB"] = 5800, ["Country_data_ALG"] = 7400, ["Country_data_AND"] = 2200, ["Country_data_ANG"] = 3900, ["Country_data_ARG"] = 40000, ["Country_data_ARM"] = 5900, ["Country_data_AUS"] = 65000, ["Country_data_AUT"] = 37000, ["Country_data_AZE"] = 6900, ["Country_data_Afghanistan"] = 9500, ["Country_data_Alaska"] = 2100, ["Country_data_Albania"] = 15000, ["Country_data_Alberta"] = 3700, ["Country_data_Algeria"] = 19000, ["Country_data_American_Samoa"] = 2600, ["Country_data_Andorra"] = 6400, ["Country_data_Angola"] = 9700, ["Country_data_Anguilla"] = 2400, ["Country_data_Antigua_and_Barbuda"] = 5400, ["Country_data_Apulia"] = 7900, ["Country_data_Argentina"] = 65000, ["Country_data_Arizona"] = 2200, ["Country_data_Armenia"] = 16000, ["Country_data_Aruba"] = 3500, ["Country_data_Australia"] = 102000, ["Country_data_Austria"] = 59000, ["Country_data_Azerbaijan"] = 21000, ["Country_data_BAH"] = 3800, ["Country_data_BAN"] = 3400, ["Country_data_BAR"] = 2200, ["Country_data_BEL"] = 43000, ["Country_data_BHR"] = 3400, ["Country_data_BIH"] = 10000, ["Country_data_BLR"] = 21000, ["Country_data_BOL"] = 5600, ["Country_data_BOT"] = 2000, ["Country_data_BRA"] = 49000, ["Country_data_BUL"] = 21000, ["Country_data_Bahamas"] = 8700, ["Country_data_Bahrain"] = 8600, ["Country_data_Bangladesh"] = 14000, ["Country_data_Barbados"] = 7000, ["Country_data_Belarus"] = 33000, ["Country_data_Belgium"] = 68000, ["Country_data_Belize"] = 4500, ["Country_data_Benin"] = 6000, ["Country_data_Bermuda"] = 5100, ["Country_data_Bhutan"] = 4100, ["Country_data_Bolivia"] = 12000, ["Country_data_Bosnia_and_Herzegovina"] = 21000, ["Country_data_Botswana"] = 7200, ["Country_data_Brazil"] = 82000, ["Country_data_British_Columbia"] = 2500, ["Country_data_British_Virgin_Islands"] = 3300, ["Country_data_Brunei"] = 5300, ["Country_data_Bulgaria"] = 40000, ["Country_data_Burkina_Faso"] = 8500, ["Country_data_Burma"] = 2700, ["Country_data_Burundi"] = 4500, ["Country_data_CAN"] = 51000, ["Country_data_CHE"] = 3900, ["Country_data_CHI"] = 16000, ["Country_data_CHN"] = 35000, ["Country_data_CIV"] = 6200, ["Country_data_CMR"] = 6800, ["Country_data_COD"] = 2500, ["Country_data_COL"] = 21000, ["Country_data_CRC"] = 6000, ["Country_data_CRO"] = 28000, ["Country_data_CUB"] = 8000, ["Country_data_CYP"] = 7500, ["Country_data_CZE"] = 39000, ["Country_data_California"] = 6200, ["Country_data_Cambodia"] = 7700, ["Country_data_Cameroon"] = 14000, ["Country_data_Canada"] = 100000, ["Country_data_Cape_Verde"] = 4800, ["Country_data_Catalonia"] = 2300, ["Country_data_Cayman_Islands"] = 4100, ["Country_data_Central_African_Republic"] = 3900, ["Country_data_Chad"] = 4400, ["Country_data_Chile"] = 32000, ["Country_data_China"] = 65000, ["Country_data_Chinese_Taipei"] = 15000, ["Country_data_Colombia"] = 36000, ["Country_data_Colorado"] = 4700, ["Country_data_Comoros"] = 3500, ["Country_data_Confederate_States_of_America"] = 2900, ["Country_data_Connecticut"] = 2900, ["Country_data_Cook_Islands"] = 3200, ["Country_data_Costa_Rica"] = 14000, ["Country_data_Croatia"] = 44000, ["Country_data_Cuba"] = 17000, ["Country_data_Curaçao"] = 3500, ["Country_data_Cyprus"] = 17000, ["Country_data_Czech_Republic"] = 63000, ["Country_data_Czechoslovakia"] = 15000, ["Country_data_DEN"] = 28000, ["Country_data_DEU"] = 7500, ["Country_data_DNK"] = 2800, ["Country_data_DOM"] = 7100, ["Country_data_Democratic_Republic_of_the_Congo"] = 9000, ["Country_data_Denmark"] = 56000, ["Country_data_Djibouti"] = 3700, ["Country_data_Dominica"] = 3500, ["Country_data_Dominican_Republic"] = 14000, ["Country_data_ECU"] = 10000, ["Country_data_EGY"] = 11000, ["Country_data_ENG"] = 38000, ["Country_data_ESA"] = 2200, ["Country_data_ESP"] = 60000, ["Country_data_EST"] = 12000, ["Country_data_ETH"] = 3200, ["Country_data_EU"] = 3500, ["Country_data_East_Germany"] = 9600, ["Country_data_East_Timor"] = 4000, ["Country_data_Ecuador"] = 19000, ["Country_data_Egypt"] = 25000, ["Country_data_El_Salvador"] = 11000, ["Country_data_Empire_of_Japan"] = 3200, ["Country_data_England"] = 77000, ["Country_data_Equatorial_Guinea"] = 4300, ["Country_data_Eritrea"] = 4200, ["Country_data_Estonia"] = 26000, ["Country_data_Eswatini"] = 4000, ["Country_data_Ethiopia"] = 9700, ["Country_data_Europe"] = 2600, ["Country_data_European_Union"] = 6600, ["Country_data_FIJ"] = 3200, ["Country_data_FIN"] = 29000, ["Country_data_FRA"] = 81000, ["Country_data_FRG"] = 11000, ["Country_data_FR_Yugoslavia"] = 3500, ["Country_data_Faroe_Islands"] = 4500, ["Country_data_Federated_States_of_Micronesia"] = 2500, ["Country_data_Fiji"] = 8900, ["Country_data_Finland"] = 51000, ["Country_data_Florida"] = 6300, ["Country_data_France"] = 173000, ["Country_data_French_Polynesia"] = 3100, ["Country_data_GAB"] = 2200, ["Country_data_GBR"] = 45000, ["Country_data_GDR"] = 5500, ["Country_data_GEO"] = 10000, ["Country_data_GER"] = 67000, ["Country_data_GHA"] = 8200, ["Country_data_GRE"] = 21000, ["Country_data_GUA"] = 4800, ["Country_data_GUI"] = 2300, ["Country_data_GUY"] = 2500, ["Country_data_Gabon"] = 6400, ["Country_data_Gambia"] = 5200, ["Country_data_Georgia"] = 9300, ["Country_data_Georgia_(U.S._state)"] = 2500, ["Country_data_Georgia_(country)"] = 21000, ["Country_data_German_Empire"] = 4500, ["Country_data_Germany"] = 121000, ["Country_data_Ghana"] = 18000, ["Country_data_Gibraltar"] = 4000, ["Country_data_Great_Britain"] = 53000, ["Country_data_Greece"] = 45000, ["Country_data_Greenland"] = 2500, ["Country_data_Grenada"] = 4500, ["Country_data_Guadeloupe"] = 2200, ["Country_data_Guam"] = 4300, ["Country_data_Guatemala"] = 11000, ["Country_data_Guernsey"] = 2100, ["Country_data_Guinea"] = 6700, ["Country_data_Guinea-Bissau"] = 3900, ["Country_data_Guyana"] = 6900, ["Country_data_HAI"] = 3000, ["Country_data_HKG"] = 11000, ["Country_data_HON"] = 3900, ["Country_data_HUN"] = 30000, ["Country_data_Haiti"] = 7700, ["Country_data_Honduras"] = 9500, ["Country_data_Hong_Kong"] = 21000, ["Country_data_Hungary"] = 52000, ["Country_data_IDN"] = 4700, ["Country_data_INA"] = 8900, ["Country_data_IND"] = 26000, ["Country_data_IRE"] = 9700, ["Country_data_IRI"] = 4100, ["Country_data_IRL"] = 17000, ["Country_data_IRN"] = 5200, ["Country_data_IRQ"] = 3300, ["Country_data_ISL"] = 7700, ["Country_data_ISR"] = 18000, ["Country_data_ITA"] = 72000, ["Country_data_Iceland"] = 18000, ["Country_data_Illinois"] = 5000, ["Country_data_India"] = 86000, ["Country_data_Indiana"] = 2600, ["Country_data_Indonesia"] = 29000, ["Country_data_Iowa"] = 2900, ["Country_data_Iran"] = 88000, ["Country_data_Iraq"] = 11000, ["Country_data_Ireland"] = 28000, ["Country_data_Isle_of_Man"] = 2700, ["Country_data_Israel"] = 35000, ["Country_data_Italy"] = 115000, ["Country_data_Ivory_Coast"] = 13000, ["Country_data_JAM"] = 8200, ["Country_data_JOR"] = 3100, ["Country_data_JP"] = 7600, ["Country_data_JPN"] = 50000, ["Country_data_Jamaica"] = 16000, ["Country_data_Japan"] = 94000, ["Country_data_Jersey"] = 2300, ["Country_data_Jordan"] = 9200, ["Country_data_KAZ"] = 16000, ["Country_data_KEN"] = 6000, ["Country_data_KGZ"] = 3000, ["Country_data_KOR"] = 27000, ["Country_data_KSA"] = 4500, ["Country_data_KUW"] = 3300, ["Country_data_Kazakhstan"] = 25000, ["Country_data_Kenya"] = 15000, ["Country_data_Kingdom_of_Great_Britain"] = 3900, ["Country_data_Kingdom_of_Italy"] = 3300, ["Country_data_Kiribati"] = 2400, ["Country_data_Kosovo"] = 6500, ["Country_data_Kuwait"] = 8600, ["Country_data_Kyrgyzstan"] = 7600, ["Country_data_LAT"] = 12000, ["Country_data_LIB"] = 2500, ["Country_data_LIE"] = 2800, ["Country_data_LIT"] = 2900, ["Country_data_LTU"] = 10000, ["Country_data_LUX"] = 8900, ["Country_data_Laos"] = 6300, ["Country_data_Latvia"] = 25000, ["Country_data_Lebanon"] = 12000, ["Country_data_Lesotho"] = 4300, ["Country_data_Liberia"] = 5800, ["Country_data_Libya"] = 7200, ["Country_data_Liechtenstein"] = 6400, ["Country_data_Lithuania"] = 24000, ["Country_data_Luxembourg"] = 18000, ["Country_data_MAC"] = 2300, ["Country_data_MAR"] = 9400, ["Country_data_MAS"] = 9200, ["Country_data_MDA"] = 5900, ["Country_data_MEX"] = 27000, ["Country_data_MGL"] = 2100, ["Country_data_MKD"] = 5800, ["Country_data_MLI"] = 3200, ["Country_data_MLT"] = 5200, ["Country_data_MNE"] = 6500, ["Country_data_MON"] = 2900, ["Country_data_MRI"] = 2100, ["Country_data_MYA"] = 2900, ["Country_data_MYS"] = 3900, ["Country_data_Macau"] = 6300, ["Country_data_Macedonia"] = 5000, ["Country_data_Madagascar"] = 7500, ["Country_data_Malawi"] = 4500, ["Country_data_Malaysia"] = 30000, ["Country_data_Maldives"] = 5000, ["Country_data_Mali"] = 9200, ["Country_data_Malta"] = 13000, ["Country_data_Manitoba"] = 2500, ["Country_data_Marshall_Islands"] = 3000, ["Country_data_Martinique"] = 2400, ["Country_data_Maryland"] = 2900, ["Country_data_Massachusetts"] = 2600, ["Country_data_Mauritania"] = 4600, ["Country_data_Mauritius"] = 7100, ["Country_data_Mexico"] = 51000, ["Country_data_Michigan"] = 3700, ["Country_data_Minnesota"] = 3400, ["Country_data_Moldova"] = 14000, ["Country_data_Monaco"] = 8400, ["Country_data_Mongolia"] = 7600, ["Country_data_Montana"] = 2300, ["Country_data_Montenegro"] = 14000, ["Country_data_Montserrat"] = 2300, ["Country_data_Morocco"] = 21000, ["Country_data_Mozambique"] = 6000, ["Country_data_Myanmar"] = 11000, ["Country_data_NAM"] = 3200, ["Country_data_NED"] = 49000, ["Country_data_NEP"] = 2500, ["Country_data_NGA"] = 6500, ["Country_data_NGR"] = 7000, ["Country_data_NIR"] = 8300, ["Country_data_NLD"] = 5700, ["Country_data_NOR"] = 24000, ["Country_data_NZ"] = 2400, ["Country_data_NZL"] = 28000, ["Country_data_Namibia"] = 8500, ["Country_data_Nazi_Germany"] = 8500, ["Country_data_Nepal"] = 13000, ["Country_data_Netherlands"] = 87000, ["Country_data_Netherlands_Antilles"] = 2100, ["Country_data_New_Brunswick"] = 2600, ["Country_data_New_Caledonia"] = 3000, ["Country_data_New_Jersey"] = 4000, ["Country_data_New_South_Wales"] = 4900, ["Country_data_New_York"] = 3500, ["Country_data_New_York_(state)"] = 4800, ["Country_data_New_Zealand"] = 50000, ["Country_data_Newfoundland_and_Labrador"] = 2200, ["Country_data_Nicaragua"] = 8100, ["Country_data_Niger"] = 4600, ["Country_data_Nigeria"] = 26000, ["Country_data_North_Carolina"] = 3200, ["Country_data_North_Korea"] = 11000, ["Country_data_North_Macedonia"] = 12000, ["Country_data_Northern_Ireland"] = 12000, ["Country_data_Northern_Mariana_Islands"] = 2300, ["Country_data_Norway"] = 55000, ["Country_data_Nova_Scotia"] = 2200, ["Country_data_OMA"] = 2200, ["Country_data_Ohio"] = 4700, ["Country_data_Oman"] = 7400, ["Country_data_Ontario"] = 3400, ["Country_data_Ottoman_Empire"] = 2200, ["Country_data_PAK"] = 7300, ["Country_data_PAN"] = 6000, ["Country_data_PAR"] = 8900, ["Country_data_PER"] = 11000, ["Country_data_PHI"] = 10000, ["Country_data_PHL"] = 3000, ["Country_data_PNG"] = 2300, ["Country_data_POL"] = 41000, ["Country_data_POR"] = 25000, ["Country_data_PRC"] = 2800, ["Country_data_PRK"] = 4200, ["Country_data_PRT"] = 2600, ["Country_data_PUR"] = 7600, ["Country_data_Pakistan"] = 23000, ["Country_data_Palau"] = 2400, ["Country_data_Palestine"] = 5600, ["Country_data_Panama"] = 13000, ["Country_data_Papua_New_Guinea"] = 6900, ["Country_data_Paraguay"] = 16000, ["Country_data_Pennsylvania"] = 3100, ["Country_data_People's_Republic_of_China"] = 2800, ["Country_data_Peru"] = 25000, ["Country_data_Philippines"] = 30000, ["Country_data_Poland"] = 125000, ["Country_data_Portugal"] = 50000, ["Country_data_Prussia"] = 2200, ["Country_data_Puerto_Rico"] = 15000, ["Country_data_QAT"] = 6300, ["Country_data_Qatar"] = 14000, ["Country_data_Quebec"] = 3900, ["Country_data_ROC"] = 2200, ["Country_data_ROM"] = 12000, ["Country_data_ROU"] = 21000, ["Country_data_RSA"] = 27000, ["Country_data_RUS"] = 55000, ["Country_data_Republic_of_China"] = 5800, ["Country_data_Republic_of_Ireland"] = 19000, ["Country_data_Republic_of_the_Congo"] = 6200, ["Country_data_Romania"] = 53000, ["Country_data_Russia"] = 92000, ["Country_data_Russian_Empire"] = 3800, ["Country_data_Rwanda"] = 5400, ["Country_data_SAM"] = 2600, ["Country_data_SCG"] = 2800, ["Country_data_SCO"] = 21000, ["Country_data_SEN"] = 5900, ["Country_data_SER"] = 3100, ["Country_data_SGP"] = 2000, ["Country_data_SIN"] = 6700, ["Country_data_SLO"] = 16000, ["Country_data_SLV"] = 2900, ["Country_data_SMR"] = 2700, ["Country_data_SPA"] = 3300, ["Country_data_SRB"] = 22000, ["Country_data_SRI"] = 4400, ["Country_data_SUI"] = 35000, ["Country_data_SVK"] = 24000, ["Country_data_SVN"] = 5400, ["Country_data_SWE"] = 48000, ["Country_data_SWI"] = 4400, ["Country_data_SYR"] = 2900, ["Country_data_Saint_Kitts_and_Nevis"] = 4100, ["Country_data_Saint_Lucia"] = 4600, ["Country_data_Saint_Vincent_and_the_Grenadines"] = 4200, ["Country_data_Samoa"] = 6500, ["Country_data_San_Marino"] = 6900, ["Country_data_Saskatchewan"] = 3500, ["Country_data_Saudi_Arabia"] = 15000, ["Country_data_Scotland"] = 40000, ["Country_data_Senegal"] = 13000, ["Country_data_Serbia"] = 43000, ["Country_data_Serbia_and_Montenegro"] = 4300, ["Country_data_Seychelles"] = 4400, ["Country_data_Sierra_Leone"] = 5800, ["Country_data_Singapore"] = 22000, ["Country_data_Slovakia"] = 40000, ["Country_data_Slovenia"] = 32000, ["Country_data_Solomon_Islands"] = 4200, ["Country_data_Somalia"] = 4900, ["Country_data_South_Africa"] = 52000, ["Country_data_South_Carolina"] = 3100, ["Country_data_South_Korea"] = 50000, ["Country_data_South_Sudan"] = 2700, ["Country_data_Soviet_Union"] = 27000, ["Country_data_Spain"] = 103000, ["Country_data_Sri_Lanka"] = 16000, ["Country_data_Sudan"] = 6500, ["Country_data_Suriname"] = 5100, ["Country_data_Swaziland"] = 2000, ["Country_data_Sweden"] = 80000, ["Country_data_Switzerland"] = 63000, ["Country_data_Syria"] = 13000, ["Country_data_São_Tomé_and_Príncipe"] = 2700, ["Country_data_TAN"] = 2300, ["Country_data_TCH"] = 8900, ["Country_data_THA"] = 19000, ["Country_data_TJK"] = 2000, ["Country_data_TKM"] = 2500, ["Country_data_TPE"] = 13000, ["Country_data_TRI"] = 4500, ["Country_data_TUN"] = 8000, ["Country_data_TUR"] = 22000, ["Country_data_Taiwan"] = 9600, ["Country_data_Tajikistan"] = 7100, ["Country_data_Tanzania"] = 8800, ["Country_data_Texas"] = 5000, ["Country_data_Thailand"] = 35000, ["Country_data_Togo"] = 5400, ["Country_data_Tonga"] = 5500, ["Country_data_Trinidad_and_Tobago"] = 12000, ["Country_data_Tunisia"] = 16000, ["Country_data_Turkey"] = 55000, ["Country_data_Turkmenistan"] = 6400, ["Country_data_Turks_and_Caicos_Islands"] = 2600, ["Country_data_Tuvalu"] = 2500, ["Country_data_U.S._Virgin_Islands"] = 4400, ["Country_data_UAE"] = 7600, ["Country_data_UGA"] = 3200, ["Country_data_UK"] = 22000, ["Country_data_UKGBI"] = 2200, ["Country_data_UKR"] = 30000, ["Country_data_URS"] = 10000, ["Country_data_URU"] = 13000, ["Country_data_US"] = 4800, ["Country_data_USA"] = 120000, ["Country_data_USSR"] = 4200, ["Country_data_UZB"] = 9000, ["Country_data_Uganda"] = 9800, ["Country_data_Ukraine"] = 51000, ["Country_data_United_Arab_Emirates"] = 16000, ["Country_data_United_Kingdom"] = 75000, ["Country_data_United_Kingdom_of_Great_Britain_and_Ireland"] = 3400, ["Country_data_United_Nations"] = 3300, ["Country_data_United_States"] = 249000, ["Country_data_United_States_of_America"] = 5100, ["Country_data_Uruguay"] = 24000, ["Country_data_Uzbekistan"] = 16000, ["Country_data_VEN"] = 15000, ["Country_data_VIE"] = 5500, ["Country_data_Vanuatu"] = 4400, ["Country_data_Venezuela"] = 27000, ["Country_data_Vietnam"] = 17000, ["Country_data_Virginia"] = 2600, ["Country_data_WAL"] = 14000, ["Country_data_Wales"] = 27000, ["Country_data_Washington"] = 3100, ["Country_data_Washington,_D.C."] = 2100, ["Country_data_Washington_(state)"] = 3400, ["Country_data_West_Germany"] = 17000, ["Country_data_West_Indies"] = 2200, ["Country_data_Wisconsin"] = 5500, ["Country_data_YUG"] = 8100, ["Country_data_Yemen"] = 6500, ["Country_data_Yugoslavia"] = 14000, ["Country_data_ZAF"] = 4000, ["Country_data_ZAM"] = 2700, ["Country_data_ZIM"] = 7100, ["Country_data_Zambia"] = 7800, ["Country_data_Zimbabwe"] = 14000, ["Country_flagbio"] = 21000, ["Country_name"] = 8700, ["Country_showdata"] = 5300, ["Country_topics"] = 20000, ["County"] = 7200, ["County_(judet)_of_Romania"] = 3300, ["Course_assignment"] = 4300, ["Course_details"] = 4200, ["Cquote"] = 36000, ["Cr"] = 3800, ["Create_taxonomy"] = 2400, ["Create_taxonomy/link"] = 74000, ["Cricinfo"] = 17000, ["Cricketarchive"] = 2700, ["Crime_opentask"] = 28000, ["Cross"] = 19000, ["Ct"] = 9900, ["Curlie"] = 7100, ["Current_events_footer"] = 6000, ["Current_events_header"] = 7100, ["Currentdate"] = 20000, ["Cvt"] = 58000, ["Cycling_Archives"] = 5700, ["Cycling_archives"] = 3900, ["Cycling_team_link"] = 9900, ["Module:CFB_schedule"] = 20000, ["Module:CallAssert"] = 188000, ["Module:CanElecResTopTest"] = 4200, ["Module:CanadaByProvinceCatNav"] = 9200, ["Module:Cat_main"] = 161000, ["Module:Catalog_lookup_link"] = 467000, ["Module:Category_described_in_year"] = 5400, ["Module:Category_described_in_year/conf"] = 5400, ["Module:Category_handler"] = 4070000, ["Module:Category_handler/blacklist"] = 4070000, ["Module:Category_handler/config"] = 4070000, ["Module:Category_handler/data"] = 4070000, ["Module:Category_handler/shared"] = 4070000, ["Module:Category_see_also"] = 37000, ["Module:Check_for_clobbered_parameters"] = 164000, ["Module:Check_for_deprecated_parameters"] = 384000, ["Module:Check_for_unknown_parameters"] = 10900000, ["Module:Check_isxn"] = 461000, ["Module:Check_winner_by_scores"] = 9800, ["Module:Citation/CS1"] = 4590000, ["Module:Citation/CS1/COinS"] = 4590000, ["Module:Citation/CS1/Configuration"] = 4590000, ["Module:Citation/CS1/Date_validation"] = 4590000, ["Module:Citation/CS1/Identifiers"] = 4590000, ["Module:Citation/CS1/Suggestions"] = 28000, ["Module:Citation/CS1/Utilities"] = 4590000, ["Module:Citation/CS1/Whitelist"] = 4590000, ["Module:Citation/CS1/styles.css"] = 4710000, ["Module:Cite_Q"] = 43000, ["Module:Cite_iucn"] = 30000, ["Module:Clade"] = 5200, ["Module:Clickable_button_2"] = 713000, ["Module:Collapsible_list"] = 45000, ["Module:College_color"] = 106000, ["Module:College_color/data"] = 106000, ["Module:Color_contrast"] = 414000, ["Module:Color_contrast/colors"] = 416000, ["Module:Commons_link"] = 90000, ["Module:Complex_date"] = 13000, ["Module:Convert"] = 1070000, ["Module:Convert/data"] = 1070000, ["Module:Convert/helper"] = 5700, ["Module:Convert/text"] = 1070000, ["Module:Convert/wikidata"] = 2500, ["Module:Convert/wikidata/data"] = 2500, ["Module:ConvertNumeric"] = 22000, ["Module:Convert_character_width"] = 2800, ["Module:Convert_character_width/data"] = 2800, ["Module:Coordinates"] = 1240000, ["Module:Copied"] = 14000, ["Module:CountryAdjectiveDemonym"] = 31000, ["Module:CountryAdjectiveDemonym/Adjectives"] = 31000, ["Module:CountryAdjectiveDemonym/Demonyms"] = 31000, ["Module:CountryAdjectiveDemonym/The"] = 31000, ["Module:CountryData"] = 17000, ["Module:Country_adjective"] = 3300, ["Module:Country_alias"] = 45000, ["Module:Country_alias/data"] = 45000, } ehfid94qiwqwduf6pi2z3pmks0bjnf5 Module:Transclusion count/data/D 828 1641 4930 4929 2020-10-11T05:50:38Z Chrisb 1 1 revision imported 4929 Scribunto text/plain return { ["D&D"] = 3900, ["D&D_to-do"] = 5400, ["D-da"] = 3500, ["DANFS"] = 8800, ["DC-Comics-trademark-copyright"] = 2100, ["DDR"] = 2700, ["DEC"] = 7800, ["DECADE"] = 235000, ["DEN"] = 6000, ["DEU"] = 16000, ["DMC"] = 63000, ["DMCA"] = 1540000, ["DMCAT"] = 2100, ["DNB"] = 8500, ["DNB_portal"] = 3100, ["DNK"] = 7000, ["DNZB"] = 3300, ["DOI"] = 4900, ["DOWs"] = 2500, ["DPP"] = 78000, ["DPP/logo"] = 78000, ["DRV_links"] = 2900, ["DWT"] = 2000, ["DYKC"] = 6700, ["DYKF"] = 2100, ["DYK_blue"] = 3500, ["DYK_checklist"] = 4100, ["DYK_conditions"] = 42000, ["DYK_files"] = 2100, ["DYK_header"] = 8900, ["DYK_nompage_links"] = 53000, ["DYK_talk"] = 93000, ["DYK_talk/date"] = 93000, ["DYK_tools"] = 38000, ["DYKfile"] = 11000, ["DZA"] = 2400, ["Dab"] = 14000, ["Dablink"] = 3200, ["Dagger"] = 11000, ["Dashboard.wikiedu.org_assignment"] = 31000, ["Dashboard.wikiedu.org_course_header"] = 4000, ["Dashboard.wikiedu.org_course_header/edit-note"] = 4000, ["Dashboard.wikiedu.org_sandbox"] = 59000, ["Dashboard.wikiedu.org_student_editor"] = 45000, ["Dashboard.wikiedu.org_student_program_sandbox"] = 59000, ["Dashboard.wikiedu.org_talk_course_link"] = 47000, ["Dashboard.wikiedu.org_user_talk"] = 2200, ["Date"] = 46000, ["Date-mf"] = 30000, ["Date_table_sorting"] = 32000, ["Dated_maintenance_category"] = 1650000, ["Day+1"] = 6300, ["Day-1"] = 7700, ["Dbox"] = 3300, ["Dc"] = 2200, ["Dda"] = 3900, ["Dead_link"] = 257000, ["Death-date"] = 9100, ["Death-date_and_age"] = 8400, ["Death_date"] = 8800, ["Death_date_and_age"] = 300000, ["Death_year_and_age"] = 13000, ["Death_year_category_header"] = 2000, ["Decade_link"] = 29000, ["Decline"] = 2300, ["Declined"] = 3000, ["Decrease"] = 27000, ["Define"] = 4200, ["Deg2DMS"] = 3200, ["Deletion_review_log_header"] = 4600, ["Deletion_review_log_header/Core"] = 4600, ["Delink"] = 1480000, ["Delink_question_hyphen-minus"] = 255000, ["Delrevxfd"] = 3200, ["Democratic_Party_(US)/meta/color"] = 14000, ["Democratic_Party_(US)/meta/shading"] = 21000, ["Democratic_Party_(US)/meta/shortname"] = 12000, ["Democratic_Party_(United_States)/meta/color"] = 12000, ["Democratic_Party_(United_States)/meta/shortname"] = 11000, ["Demography"] = 2000, ["Deprecated_code"] = 3000, ["Description_missing"] = 9600, ["Designation/abbreviation"] = 7500, ["Designation/color"] = 74000, ["Designation/colour"] = 76000, ["Designation/colour2"] = 14000, ["Designation/divbox"] = 24000, ["Designation/text"] = 37000, ["Designation_list"] = 4600, ["Details"] = 6600, ["DetailsLink"] = 5100, ["Detect_singular"] = 533000, ["Deutsche_Bahn_station_codes"] = 2100, ["DfE_performance_tables"] = 4200, ["Diff"] = 27000, ["Diff2"] = 8500, ["Digits"] = 16000, ["Directories_box"] = 3500, ["Disamb"] = 2100, ["Disambig"] = 65000, ["Disambig-Class"] = 11000, ["DisambigProj"] = 12000, ["DisambigProject"] = 152000, ["Disambigproject"] = 5100, ["Disambiguation"] = 196000, ["Disambiguation/cat"] = 196000, ["Disambiguation_needed"] = 4600, ["Disambiguation_page_short_description"] = 317000, ["Discogs_artist"] = 9200, ["Discogs_master"] = 8400, ["Discogs_release"] = 2300, ["Discussion_bottom"] = 11000, ["Discussion_top"] = 11000, ["DisestcatCountry"] = 8400, ["DisestcatCountry/core"] = 8400, ["DisestcatCountryDecade"] = 2400, ["DisestcatUSstate"] = 4400, ["DisestcatUSstate/core"] = 4400, ["Disputed"] = 2100, ["Distinguish"] = 72000, ["Disused_Rail_Start"] = 3100, ["Disused_rail_start"] = 3700, ["Disused_style"] = 3800, ["Div_col"] = 315000, ["Div_col_end"] = 236000, ["Divbox"] = 221000, ["Divbox/styles.css"] = 246000, ["Dmbox"] = 409000, ["Dmbox/styles.css"] = 407000, ["Dmoz"] = 3000, ["Dn"] = 3700, ["Do_not_move_to_Commons"] = 13000, ["Doc"] = 3000, ["Documentation"] = 74000, ["Documentation_subpage"] = 81000, ["Dog_opentask"] = 3200, ["Doi"] = 21000, ["Doing"] = 3300, ["Don't_edit_this_line"] = 71000, ["Don't_edit_this_line_always_display"] = 328000, ["Don't_edit_this_line_extinct"] = 328000, ["Don't_edit_this_line_link_target"] = 328000, ["Don't_edit_this_line_link_text"] = 328000, ["Don't_edit_this_line_parent"] = 328000, ["Don't_edit_this_line_rank"] = 328000, ["Don't_edit_this_line_refs"] = 71000, ["Don't_edit_this_line_same_as"] = 328000, ["Done"] = 83000, ["Done-t"] = 2200, ["Doppelganger"] = 2700, ["Dot"] = 3000, ["Double-dagger"] = 9900, ["Dr"] = 3500, ["Dr-logno"] = 3500, ["Dr-make"] = 3500, ["Dr-yr"] = 3500, ["Draft_article"] = 2600, ["Draft_article_check"] = 2600, ["Draft_other"] = 115000, ["Draw"] = 2300, ["Draw_key"] = 15000, ["Draw_links"] = 7600, ["Drep"] = 3500, ["Drugbankcite"] = 4700, ["Drugbox"] = 7400, ["Drugs.com"] = 3300, ["Ds/editnotice"] = 2200, ["Ds/talk_notice"] = 4000, ["Ds/topics"] = 6200, ["Dsindex"] = 2200, ["Dts"] = 32000, ["Dubious"] = 7500, ["Duck"] = 2300, ["Dummytab"] = 3900, ["Duration"] = 35000, ["Dyktalk"] = 44000, ["Dynamic_IP"] = 5600, ["Dynamic_list"] = 7000, ["Module:DYK_checklist"] = 4100, ["Module:DYK_checklist/data"] = 4100, ["Module:DYK_nompage_links"] = 53000, ["Module:Data"] = 136000, ["Module:Date"] = 1110000, ["Module:DateI18n"] = 13000, ["Module:Date_table_sorting"] = 32000, ["Module:Delink"] = 1520000, ["Module:Demography"] = 2000, ["Module:Distinguish"] = 72000, ["Module:Documentation"] = 114000, ["Module:Documentation/config"] = 114000, ["Module:Duration"] = 226000, } ikapq1bef10jaq9yizdf4soo9wvnrkp Module:Transclusion count/data/I 828 1324 2880 2879 2020-09-29T19:18:25Z Chrisb 1 1 revision imported 2879 Scribunto text/plain return { ["IAAF_name"] = 2700, ["IAST"] = 5500, ["IBDB_name"] = 8400, ["ICD10"] = 4900, ["ICD9"] = 4700, ["IDN"] = 2900, ["IMDB_name"] = 2600, ["IMDB_title"] = 3300, ["IMDb_episode"] = 8000, ["IMDb_name"] = 137000, ["IMDb_title"] = 170000, ["IMO_Number"] = 3700, ["IMSLP"] = 7000, ["IMSLP2"] = 2200, ["IND"] = 6900, ["INR"] = 4900, ["INRConvert"] = 4600, ["INRConvert/CurrentRate"] = 4600, ["INRConvert/USD"] = 4600, ["INRConvert/out"] = 4600, ["INS"] = 2000, ["IOC_profile"] = 7800, ["IP"] = 2200, ["IPA"] = 91000, ["IPA-all"] = 2500, ["IPA-de"] = 5400, ["IPA-es"] = 7300, ["IPA-fr"] = 9400, ["IPA-it"] = 5300, ["IPA-nl"] = 2800, ["IPA-pl"] = 2600, ["IPA-pt"] = 3300, ["IPA-ru"] = 2300, ["IPA-sh"] = 2900, ["IPA-sl"] = 6600, ["IPA-th"] = 2400, ["IPA_audio_link"] = 8800, ["IPAc-cmn"] = 2300, ["IPAc-en"] = 40000, ["IPAc-pl"] = 53000, ["IPSummary"] = 71000, ["IP_summary"] = 71000, ["IPsock"] = 31000, ["IPtalk"] = 26000, ["IPuser"] = 6300, ["IPvandal"] = 13000, ["IRC"] = 10000, ["IRL"] = 5000, ["IRN"] = 3200, ["ISBN"] = 444000, ["ISBNT"] = 33000, ["ISO_15924/script-example-character"] = 2400, ["ISO_15924/wp-name"] = 2500, ["ISO_15924/wp-name/label"] = 2400, ["ISO_15924_code"] = 3000, ["ISO_3166_code"] = 123000, ["ISO_3166_name"] = 16000, ["ISO_639_name"] = 5300, ["ISP"] = 21000, ["ISP_test"] = 5600, ["ISR"] = 4000, ["ISSN"] = 10000, ["ISSN_link"] = 28000, ["ISTAT"] = 8100, ["ISU_figure_skater"] = 2300, ["ITA"] = 15000, ["ITF"] = 4700, ["ITF_profile"] = 6700, ["ITIS"] = 4100, ["ITN_talk"] = 6800, ["ITN_talk/date"] = 6800, ["IUCN_banner"] = 13000, ["I_sup"] = 3900, ["Iaaf_name"] = 8300, ["Ice_hockey"] = 21000, ["Ice_hockey_stats"] = 13000, ["Icehockeystats"] = 10000, ["Icon"] = 484000, ["If"] = 118000, ["If_between"] = 3500, ["If_both"] = 44000, ["If_either"] = 4700, ["If_empty"] = 2250000, ["If_first_display_both"] = 56000, ["If_in_page"] = 6800, ["If_last_display_both"] = 25000, ["If_preview"] = 54000, ["If_then_show"] = 206000, ["Ifempty"] = 3400, ["Ifexist_not_redirect"] = 400000, ["Ifnotempty"] = 13000, ["Ifnumber"] = 20000, ["Ifsubst"] = 66000, ["Ih"] = 7000, ["Ill"] = 46000, ["Illm"] = 5700, ["Image_frame"] = 2400, ["Image_label"] = 4400, ["Image_label_begin"] = 3600, ["Image_label_end"] = 3300, ["Image_label_small"] = 2600, ["Image_needed"] = 3500, ["Image_other"] = 333000, ["Image_requested"] = 171000, ["Image_requested/Category_helper"] = 168000, ["Imbox"] = 899000, ["Imdb_episode"] = 2500, ["Imdb_name"] = 7300, ["Imdb_title"] = 13000, ["Importance"] = 5070000, ["Importance/colour"] = 5100000, ["Importance_mask"] = 7810000, ["Improve_categories"] = 3800, ["In_class"] = 3800, ["In_lang"] = 328000, ["In_string"] = 44000, ["In_title"] = 12000, ["Inactive_WikiProject_banner"] = 165000, ["Inactive_userpage_blanked"] = 4100, ["Include-USGov"] = 30000, ["Incomplete_list"] = 18000, ["Increase"] = 34000, ["Incumbent_pope"] = 4200, ["Independent/meta/color"] = 5700, ["Independent_(US)/meta/color"] = 2700, ["Independent_(politician)/meta/color"] = 12000, ["Independent_(politician)/meta/shortname"] = 10000, ["Independent_politician/meta/color"] = 18000, ["Independent_politician/meta/shortname"] = 15000, ["IndexFungorum"] = 2600, ["Indian_English"] = 3500, ["Indian_National_Congress/meta/color"] = 3600, ["Indian_National_Congress/meta/shortname"] = 2700, ["Indian_Railways_color"] = 2400, ["Indian_Railways_style"] = 2400, ["Indian_Rupee"] = 8400, ["Indian_railway_code"] = 2500, ["Inflation"] = 13000, ["Inflation-fn"] = 4600, ["Inflation-year"] = 3300, ["Inflation/IN/startyear"] = 4600, ["Inflation/UK"] = 3300, ["Inflation/UK/dataset"] = 3300, ["Inflation/UK/startyear"] = 3300, ["Inflation/US"] = 8000, ["Inflation/US/dataset"] = 8000, ["Inflation/US/startyear"] = 8100, ["Inflation/fn"] = 4800, ["Inflation/year"] = 17000, ["Info"] = 7600, ["Infobox"] = 3430000, ["Infobox3cols"] = 257000, ["Infobox_AFL_biography"] = 14000, ["Infobox_Aircraft_Begin"] = 9100, ["Infobox_Aircraft_Type"] = 8200, ["Infobox_Athletics_Championships"] = 2300, ["Infobox_Australian_place"] = 15000, ["Infobox_CFL_biography"] = 6100, ["Infobox_CFL_biography/position"] = 6100, ["Infobox_Canada_electoral_district"] = 2300, ["Infobox_Chinese"] = 15000, ["Infobox_Chinese/Footer"] = 8900, ["Infobox_Chinese/Header"] = 8900, ["Infobox_Chinese/Korean"] = 14000, ["Infobox_Christian_leader"] = 15000, ["Infobox_Company"] = 2100, ["Infobox_Congressman"] = 3000, ["Infobox_Election"] = 3400, ["Infobox_Football_club_season"] = 2000, ["Infobox_French_commune"] = 37000, ["Infobox_GAA_player"] = 3400, ["Infobox_GB_station"] = 2200, ["Infobox_Gaelic_Athletic_Association_player"] = 4300, ["Infobox_German_location"] = 13000, ["Infobox_German_place"] = 13000, ["Infobox_Greek_Dimos"] = 2700, ["Infobox_Greek_place"] = 2700, ["Infobox_Indian_politician"] = 2400, ["Infobox_Italian_comune"] = 8100, ["Infobox_Korean_name"] = 13000, ["Infobox_Korean_name/categories"] = 13000, ["Infobox_MLB_yearly"] = 3000, ["Infobox_NCAA_team_season"] = 25000, ["Infobox_NFL_biography"] = 24000, ["Infobox_NFL_player"] = 12000, ["Infobox_NFL_season"] = 3300, ["Infobox_NFL_team_season"] = 3700, ["Infobox_NRHP"] = 70000, ["Infobox_NRHP/conv"] = 17000, ["Infobox_NRHP/locmapin2region"] = 64000, ["Infobox_Newspaper"] = 3100, ["Infobox_Officeholder"] = 12000, ["Infobox_Olympic_event"] = 6600, ["Infobox_Olympic_event/games_text"] = 6600, ["Infobox_Organization"] = 3600, ["Infobox_Paralympic_event"] = 2100, ["Infobox_Paralympic_event/games_text"] = 2100, ["Infobox_Person"] = 3000, ["Infobox_Politician"] = 5300, ["Infobox_Romania_place"] = 3200, ["Infobox_Romanian_subdivision"] = 3200, ["Infobox_Russian_district"] = 2000, ["Infobox_Russian_inhabited_locality"] = 3500, ["Infobox_SCOTUS_case"] = 3600, ["Infobox_SCOTUS_case/courts"] = 3600, ["Infobox_SSSI"] = 2000, ["Infobox_School"] = 4000, ["Infobox_Settlement"] = 6600, ["Infobox_Site_of_Special_Scientific_Interest"] = 2000, ["Infobox_Software"] = 2600, ["Infobox_State_Representative"] = 2900, ["Infobox_Swiss_municipality"] = 2800, ["Infobox_Swiss_town"] = 2800, ["Infobox_TV_channel"] = 2600, ["Infobox_U.S._county"] = 3000, ["Infobox_U.S._county/district"] = 3000, ["Infobox_UK_disused_station"] = 4900, ["Infobox_UK_place"] = 25000, ["Infobox_UK_place/NoDialCode"] = 7500, ["Infobox_UK_place/NoPostCode"] = 2900, ["Infobox_UK_place/dist"] = 2300, ["Infobox_UK_place/local"] = 25000, ["Infobox_UN_resolution"] = 2200, ["Infobox_University"] = 3600, ["Infobox_Wikipedia_user"] = 7400, ["Infobox_academic"] = 6900, ["Infobox_aircraft_begin"] = 14000, ["Infobox_aircraft_type"] = 12000, ["Infobox_airline"] = 4400, ["Infobox_airport"] = 15000, ["Infobox_airport/datatable"] = 15000, ["Infobox_album"] = 157000, ["Infobox_album/color"] = 178000, ["Infobox_album/link"] = 157000, ["Infobox_anatomy"] = 4400, ["Infobox_ancient_site"] = 3900, ["Infobox_animanga/Footer"] = 5600, ["Infobox_animanga/Header"] = 5600, ["Infobox_animanga/Print"] = 4300, ["Infobox_animanga/Video"] = 4100, ["Infobox_architect"] = 3000, ["Infobox_artist"] = 24000, ["Infobox_artist_discography"] = 5200, ["Infobox_artwork"] = 8900, ["Infobox_athlete"] = 4400, ["Infobox_attraction/status"] = 2800, ["Infobox_automobile"] = 7400, ["Infobox_award"] = 7800, ["Infobox_badminton_player"] = 2700, ["Infobox_baseball_biography"] = 25000, ["Infobox_baseball_biography/style"] = 25000, ["Infobox_basketball_biography"] = 18000, ["Infobox_basketball_biography/style"] = 18000, ["Infobox_basketball_club"] = 2700, ["Infobox_bilateral_relations"] = 3700, ["Infobox_body_of_water"] = 16000, ["Infobox_book"] = 46000, ["Infobox_boxer"] = 5100, ["Infobox_bridge"] = 5400, ["Infobox_building"] = 22000, ["Infobox_character"] = 7300, ["Infobox_chess_biography"] = 2700, ["Infobox_chess_player"] = 2400, ["Infobox_church"] = 12000, ["Infobox_church/denomination"] = 12000, ["Infobox_church/font_color"] = 12000, ["Infobox_civilian_attack"] = 3900, ["Infobox_college_coach"] = 10000, ["Infobox_college_sports_team_season"] = 30000, ["Infobox_college_sports_team_season/link"] = 30000, ["Infobox_college_sports_team_season/name"] = 30000, ["Infobox_college_sports_team_season/succession"] = 30000, ["Infobox_college_sports_team_season/team"] = 30000, ["Infobox_comic_book_title"] = 2800, ["Infobox_comics_character"] = 3800, ["Infobox_comics_creator"] = 3300, ["Infobox_company"] = 76000, ["Infobox_concert"] = 3500, ["Infobox_constituency"] = 4100, ["Infobox_country"] = 5200, ["Infobox_country/formernext"] = 4900, ["Infobox_country/imagetable"] = 4200, ["Infobox_country/multirow"] = 6700, ["Infobox_country/status_text"] = 2300, ["Infobox_country_at_games"] = 13000, ["Infobox_country_at_games/core"] = 13000, ["Infobox_court_case"] = 4100, ["Infobox_court_case/images"] = 4100, ["Infobox_cricketer"] = 27000, ["Infobox_cricketer/career"] = 27000, ["Infobox_cricketer/national_side"] = 7100, ["Infobox_criminal"] = 4300, ["Infobox_cultivar"] = 2200, ["Infobox_curler"] = 2200, ["Infobox_cycling_race_report"] = 4000, ["Infobox_cyclist"] = 15000, ["Infobox_dam"] = 3900, ["Infobox_designation_list"] = 6400, ["Infobox_designation_list/entry"] = 6400, ["Infobox_dim"] = 5500, ["Infobox_dim/core"] = 5500, ["Infobox_diocese"] = 3700, ["Infobox_drug"] = 8600, ["Infobox_drug/chemical_formula"] = 8600, ["Infobox_drug/formatATC"] = 8500, ["Infobox_drug/formatCASnumber"] = 8600, ["Infobox_drug/formatChEBI"] = 8600, ["Infobox_drug/formatChEMBL"] = 8600, ["Infobox_drug/formatChemDBNIAID"] = 8600, ["Infobox_drug/formatChemSpider"] = 8600, ["Infobox_drug/formatCompTox"] = 8600, ["Infobox_drug/formatDrugBank"] = 8600, ["Infobox_drug/formatIUPHARBPS"] = 8600, ["Infobox_drug/formatJmol"] = 8600, ["Infobox_drug/formatKEGG"] = 8600, ["Infobox_drug/formatPDBligand"] = 8100, ["Infobox_drug/formatPubChemCID"] = 8600, ["Infobox_drug/formatPubChemSID"] = 8600, ["Infobox_drug/formatUNII"] = 8600, ["Infobox_drug/legal_status"] = 8700, ["Infobox_drug/licence"] = 8700, ["Infobox_drug/maintenance_categories"] = 8600, ["Infobox_drug/pregnancy_category"] = 8600, ["Infobox_drug/title"] = 8600, ["Infobox_election"] = 21000, ["Infobox_election/row"] = 21000, ["Infobox_election/shortname"] = 20000, ["Infobox_enzyme"] = 5100, ["Infobox_ethnic_group"] = 6500, ["Infobox_event"] = 3500, ["Infobox_figure_skater"] = 3900, ["Infobox_film"] = 142000, ["Infobox_film_awards"] = 2200, ["Infobox_film_awards/link"] = 2200, ["Infobox_film_awards/style"] = 2200, ["Infobox_food"] = 6200, ["Infobox_football_biography"] = 180000, ["Infobox_football_club"] = 24000, ["Infobox_football_club_season"] = 16000, ["Infobox_football_league"] = 2300, ["Infobox_football_league_season"] = 16000, ["Infobox_football_match"] = 4800, ["Infobox_football_tournament_season"] = 6000, ["Infobox_former_subdivision"] = 2700, ["Infobox_game_score"] = 3100, ["Infobox_gene"] = 13000, ["Infobox_given_name"] = 3700, ["Infobox_golfer"] = 3800, ["Infobox_golfer/highest_ranking"] = 3800, ["Infobox_government_agency"] = 8500, ["Infobox_gridiron_football_person"] = 4200, ["Infobox_gridiron_football_person/position"] = 6100, ["Infobox_gymnast"] = 2700, ["Infobox_handball_biography"] = 4300, ["Infobox_historic_site"] = 8900, ["Infobox_horseraces"] = 2500, ["Infobox_hospital"] = 5700, ["Infobox_hospital/care_system"] = 5700, ["Infobox_hospital/lists"] = 5700, ["Infobox_ice_hockey_player"] = 18000, ["Infobox_international_football_competition"] = 4800, ["Infobox_islands"] = 7800, ["Infobox_islands/area"] = 8300, ["Infobox_islands/density"] = 8300, ["Infobox_islands/length"] = 7800, ["Infobox_journal"] = 9000, ["Infobox_journal/Abbreviation_search"] = 8900, ["Infobox_journal/Bluebook_check"] = 8700, ["Infobox_journal/Former_check"] = 8700, ["Infobox_journal/ISO_4_check"] = 8700, ["Infobox_journal/ISSN-eISSN"] = 8700, ["Infobox_journal/Indexing_search"] = 8700, ["Infobox_journal/MathSciNet_check"] = 8700, ["Infobox_journal/NLM_check"] = 8700, ["Infobox_journal/frequency"] = 7900, ["Infobox_judge"] = 3800, ["Infobox_lake"] = 5900, ["Infobox_language"] = 9000, ["Infobox_language/family-color"] = 10000, ["Infobox_language/genetic"] = 6200, ["Infobox_language/linguistlist"] = 9000, ["Infobox_language/ref"] = 6800, ["Infobox_legislature"] = 2700, ["Infobox_lighthouse"] = 2600, ["Infobox_locomotive"] = 4200, ["Infobox_magazine"] = 6600, ["Infobox_manner_of_address"] = 3100, ["Infobox_mapframe"] = 86000, ["Infobox_martial_artist"] = 5000, ["Infobox_martial_artist/record"] = 5000, ["Infobox_medal_templates"] = 369000, ["Infobox_medical_condition"] = 9600, ["Infobox_medical_condition_(new)"] = 8100, ["Infobox_military_award"] = 2200, ["Infobox_military_conflict"] = 18000, ["Infobox_military_installation"] = 8500, ["Infobox_military_person"] = 38000, ["Infobox_military_structure"] = 2500, ["Infobox_military_unit"] = 23000, ["Infobox_model"] = 2300, ["Infobox_monarch"] = 2300, ["Infobox_mountain"] = 25000, ["Infobox_mountain_range"] = 2300, ["Infobox_museum"] = 8600, ["Infobox_musical_artist"] = 113000, ["Infobox_musical_artist/color"] = 113000, ["Infobox_musical_artist/hCard_class"] = 289000, ["Infobox_musical_artist/tracking"] = 101000, ["Infobox_name"] = 6600, ["Infobox_name_module"] = 7300, ["Infobox_newspaper"] = 8700, ["Infobox_nobility"] = 3600, ["Infobox_noble"] = 6300, ["Infobox_officeholder"] = 166000, ["Infobox_officeholder/office"] = 170000, ["Infobox_official_post"] = 6200, ["Infobox_organization"] = 29000, ["Infobox_pageant_titleholder"] = 2800, ["Infobox_park"] = 6000, ["Infobox_person"] = 385000, ["Infobox_person/Wikidata"] = 2600, ["Infobox_person/height"] = 222000, ["Infobox_person/length"] = 6500, ["Infobox_person/weight"] = 70000, ["Infobox_philosopher"] = 2900, ["Infobox_planet"] = 4500, ["Infobox_play"] = 3000, ["Infobox_political_party"] = 11000, ["Infobox_politician"] = 2400, ["Infobox_power_station"] = 2600, ["Infobox_prepared_food"] = 4100, ["Infobox_professional_wrestler"] = 3700, ["Infobox_professional_wrestling_event"] = 2200, ["Infobox_protected_area"] = 12000, ["Infobox_protein_family"] = 2100, ["Infobox_publisher"] = 2200, ["Infobox_racehorse"] = 5100, ["Infobox_racing_driver"] = 2900, ["Infobox_radio_station"] = 22000, ["Infobox_rail"] = 2500, ["Infobox_rail_line"] = 6300, ["Infobox_rail_line/tracking"] = 6300, ["Infobox_rail_service"] = 2600, ["Infobox_reality_competition_season"] = 2200, ["Infobox_record_label"] = 3800, ["Infobox_recurring_event"] = 5500, ["Infobox_religious_biography"] = 3800, ["Infobox_religious_building"] = 9900, ["Infobox_religious_building/color"] = 14000, ["Infobox_river"] = 27000, ["Infobox_river/calcunit"] = 27000, ["Infobox_river/discharge"] = 27000, ["Infobox_river/row-style"] = 27000, ["Infobox_river/source"] = 27000, ["Infobox_road"] = 23000, ["Infobox_road/banner"] = 13000, ["Infobox_road/browselinks/USA"] = 14000, ["Infobox_road/hide/cities"] = 2100, ["Infobox_road/maint/USA"] = 13000, ["Infobox_road/meta/colors"] = 2200, ["Infobox_road/meta/errors"] = 23000, ["Infobox_road/meta/mask/category"] = 23000, ["Infobox_road/meta/mask/country"] = 24000, ["Infobox_road/meta/mask/subtype1"] = 13000, ["Infobox_road/meta/mask/subtype2"] = 12000, ["Infobox_road/name/USA"] = 13000, ["Infobox_road/name/USA/StateName"] = 6500, ["Infobox_road/shield/USA"] = 13000, ["Infobox_road/shieldmain/USA"] = 13000, ["Infobox_road_small"] = 2000, ["Infobox_rockunit"] = 6200, ["Infobox_royalty"] = 18000, ["Infobox_royalty/short_description"] = 18000, ["Infobox_rugby_biography"] = 13000, ["Infobox_rugby_biography/correct_date"] = 13000, ["Infobox_rugby_biography/depcheck"] = 6500, ["Infobox_rugby_league_biography"] = 8700, ["Infobox_rugby_league_biography/PLAYER"] = 8600, ["Infobox_rugby_team"] = 2600, ["Infobox_saint"] = 4300, ["Infobox_school"] = 38000, ["Infobox_school/short_description"] = 38000, ["Infobox_school_district"] = 3500, ["Infobox_scientist"] = 39000, ["Infobox_service_record"] = 2400, ["Infobox_settlement"] = 532000, ["Infobox_settlement/areadisp"] = 209000, ["Infobox_settlement/columns"] = 84000, ["Infobox_settlement/densdisp"] = 397000, ["Infobox_settlement/impus"] = 76000, ["Infobox_settlement/impus/mag"] = 2100, ["Infobox_settlement/lengthdisp"] = 154000, ["Infobox_settlement/link"] = 84000, ["Infobox_settlement/metric"] = 187000, ["Infobox_settlement/pref"] = 263000, ["Infobox_ship_begin"] = 36000, ["Infobox_ship_career"] = 33000, ["Infobox_ship_characteristics"] = 36000, ["Infobox_ship_class_overview"] = 3500, ["Infobox_ship_image"] = 36000, ["Infobox_shopping_mall"] = 3100, ["Infobox_skier"] = 2400, ["Infobox_soap_character"] = 3000, ["Infobox_software"] = 14000, ["Infobox_software/simple"] = 14000, ["Infobox_song"] = 68000, ["Infobox_song/color"] = 68000, ["Infobox_song/link"] = 68000, ["Infobox_spaceflight"] = 3100, ["Infobox_speed_skater"] = 2100, ["Infobox_sports_competition_event"] = 12000, ["Infobox_sports_competition_event/medalrow"] = 7900, ["Infobox_sports_league"] = 3300, ["Infobox_sports_season"] = 4100, ["Infobox_sportsperson"] = 96000, ["Infobox_stadium"] = 5500, ["Infobox_state_representative"] = 3600, ["Infobox_station"] = 41000, ["Infobox_street"] = 2500, ["Infobox_swimmer"] = 8700, ["Infobox_television"] = 50000, ["Infobox_television_channel"] = 5900, ["Infobox_television_episode"] = 11000, ["Infobox_television_season"] = 7400, ["Infobox_television_station"] = 3700, ["Infobox_tennis_biography"] = 7800, ["Infobox_tennis_tournament_event"] = 15000, ["Infobox_tennis_tournament_year"] = 7800, ["Infobox_tennis_tournament_year/color"] = 23000, ["Infobox_tennis_tournament_year/footer"] = 23000, ["Infobox_train"] = 2000, ["Infobox_tropical_cyclone"] = 2000, ["Infobox_union"] = 2200, ["Infobox_university"] = 26000, ["Infobox_user"] = 2400, ["Infobox_venue"] = 16000, ["Infobox_video_game"] = 25000, ["Infobox_volleyball_biography"] = 4800, ["Infobox_weapon"] = 6700, ["Infobox_website"] = 7300, ["Infobox_writer"] = 33000, ["Information"] = 136000, ["Inline"] = 2600, ["Input_link"] = 33000, ["Inputbox"] = 10000, ["Instagram"] = 5800, ["Interlanguage_link"] = 78000, ["Interlanguage_link_multi"] = 22000, ["Internet_Archive_author"] = 18000, ["Internet_Archive_film"] = 2300, ["Intitle"] = 7400, ["Ipsock"] = 13000, ["Iptalk"] = 22000, ["IranCensus2006"] = 63000, ["IranNCSGN"] = 3700, ["Iran_Census_2006"] = 63000, ["Irish_place_name"] = 2200, ["IsValidPageName"] = 102000, ["Is_article"] = 3900, ["Is_country_in_Central_America"] = 11000, ["Is_country_in_the_Caribbean"] = 11000, ["Is_empty"] = 4200, ["Is_interwiki_link"] = 2800, ["Is_italic_taxon"] = 327000, ["Isbn"] = 3900, ["Isfdb_name"] = 3800, ["Isfdb_title"] = 4100, ["Isnumeric"] = 166000, ["Iso2continent"] = 15000, ["Iso2country"] = 20000, ["Iso2country/article"] = 19000, ["Iso2country/data"] = 20000, ["Issubst"] = 77000, ["Isu_name"] = 2200, ["Italic_title"] = 919000, ["Italic_title_prefixed"] = 8200, ["Italics_after"] = 8200, ["Italics_colon"] = 2200, ["Italictitle"] = 5400, ["Ivm"] = 5700, ["Ivm/styles.css"] = 5700, ["Ivmbox"] = 106000, ["Ivory_messagebox"] = 106000, ["Module:I18n/complex_date"] = 13000, ["Module:IPA_symbol"] = 2800, ["Module:IPA_symbol/data"] = 2900, ["Module:IPAc-en"] = 40000, ["Module:IPAc-en/data"] = 40000, ["Module:IPAc-en/phonemes"] = 40000, ["Module:IPAc-en/pronunciation"] = 40000, ["Module:IPAddress"] = 23000, ["Module:ISO_3166"] = 584000, ["Module:ISO_3166/data/AT"] = 2400, ["Module:ISO_3166/data/BA"] = 3200, ["Module:ISO_3166/data/CA"] = 2500, ["Module:ISO_3166/data/DE"] = 14000, ["Module:ISO_3166/data/FR"] = 38000, ["Module:ISO_3166/data/GR"] = 2800, ["Module:ISO_3166/data/IN"] = 24000, ["Module:ISO_3166/data/National"] = 584000, ["Module:ISO_3166/data/RS"] = 3200, ["Module:ISO_3166/data/RU"] = 23000, ["Module:ISO_3166/data/US"] = 80000, ["Module:ISO_639_name"] = 12000, ["Module:ISOdate"] = 13000, ["Module:Icon"] = 484000, ["Module:Icon/data"] = 484000, ["Module:If_empty"] = 2250000, ["Module:If_in_page"] = 6800, ["Module:If_preview"] = 54000, ["Module:In_lang"] = 328000, ["Module:Infobox"] = 3600000, ["Module:Infobox/dates"] = 58000, ["Module:Infobox3cols"] = 270000, ["Module:InfoboxImage"] = 3780000, ["Module:Infobox_body_of_water_tracking"] = 16000, ["Module:Infobox_cyclist_tracking"] = 15000, ["Module:Infobox_gene"] = 13000, ["Module:Infobox_mapframe"] = 210000, ["Module:Infobox_military_conflict"] = 18000, ["Module:Infobox_military_conflict/styles.css"] = 18000, ["Module:Infobox_multi-lingual_name"] = 15000, ["Module:Infobox_multi-lingual_name/data"] = 15000, ["Module:Infobox_power_station"] = 2600, ["Module:Infobox_road"] = 23000, ["Module:Infobox_road/color"] = 24000, ["Module:Infobox_road/length"] = 24000, ["Module:Infobox_road/locations"] = 23000, ["Module:Infobox_road/map"] = 24000, ["Module:Infobox_road/meta/mask/country"] = 15000, ["Module:Infobox_television_disambiguation_check"] = 56000, ["Module:Infobox_television_season_disambiguation_check"] = 7400, ["Module:Infobox_television_season_name"] = 7400, ["Module:Internet_Archive"] = 18000, ["Module:IrelandByCountyCatNav"] = 2500, ["Module:Is_infobox_in_lead"] = 213000, ["Module:Italic_title"] = 963000, } lzebx1nm7tthj4e5hfbs6nuh23tx90r Module:Transclusion count/data/M 828 893 2018 2017 2020-09-29T19:15:40Z Chrisb 1 1 revision imported 2017 Scribunto text/plain return { ["MAR"] = 2500, ["MAS"] = 2200, ["MEX"] = 5600, ["MILHIST"] = 11000, ["MINUTE"] = 2300, ["MKD"] = 2200, ["MLB_Farm_System"] = 2100, ["MLB_Year"] = 12000, ["MLB_standings"] = 3600, ["MLBplayer"] = 3800, ["MMA_record_start"] = 3000, ["MMArecordbox"] = 3000, ["MMSI_Number"] = 2600, ["MONTHNAME"] = 649000, ["MONTHNUMBER"] = 652000, ["MS"] = 5800, ["MV"] = 9200, ["MYS"] = 3300, ["Main"] = 285000, ["Main_article"] = 26000, ["Main_other"] = 7880000, ["Main_page_image"] = 14000, ["Maintenance_category"] = 33000, ["Map_requested"] = 9800, ["Map_requested/Category_helper"] = 8600, ["Maplink"] = 13000, ["Marriage"] = 44000, ["Math"] = 6900, ["MathGenealogy"] = 6300, ["MathWorld"] = 2400, ["Maths_rating"] = 19000, ["Max"] = 595000, ["Mbox"] = 1460000, ["Mdash"] = 7200, ["MeSH_name"] = 6000, ["Medal"] = 94000, ["MedalBottom"] = 18000, ["MedalBronze"] = 46000, ["MedalCompetition"] = 73000, ["MedalCountry"] = 66000, ["MedalGold"] = 45000, ["MedalOlympic"] = 3600, ["MedalOlympics"] = 5600, ["MedalSilver"] = 45000, ["MedalSport"] = 66000, ["MedalTableTop"] = 18000, ["MedalTop"] = 4600, ["MedalWorldChampionships"] = 2200, ["MedalistTable"] = 12000, ["Medals_table"] = 11000, ["Media"] = 2500, ["Medical_resources"] = 6700, ["Merge_partner"] = 3300, ["Merged-from"] = 12000, ["Merged-to"] = 13000, ["Merged_to"] = 2100, ["MeshName"] = 5900, ["Metacritic_film"] = 4300, ["Metadata_Population_DE-BY"] = 2100, ["Metadata_Population_DE-RP"] = 2300, ["MetroLyrics_song"] = 21000, ["Mhof"] = 6200, ["Mid-Class"] = 15000, ["Mid-importance"] = 19000, ["Middot"] = 69000, ["Military_navigation"] = 72000, ["Min"] = 21000, ["Minor_planet_list_link"] = 4000, ["Minor_planets_navigator"] = 3100, ["Missing_information"] = 2500, ["Mlby"] = 12000, ["Mobile_IP"] = 9600, ["MobyGames"] = 6800, ["Moby_game"] = 5600, ["Mod"] = 13000, ["Module_other"] = 3200, ["Mojo_title"] = 8100, ["Molecular_formula_index"] = 2200, ["Monday"] = 2500, ["Mono"] = 14000, ["Mono/styles.css"] = 14000, ["MonthCategoryNav"] = 19000, ["MonthlyLinks"] = 2000, ["Monthly_clean-up_category"] = 13000, ["Monthly_clean-up_category/core"] = 13000, ["Monthly_clean-up_category/monthname"] = 14000, ["Monthly_clean-up_category/monthno"] = 14000, ["Monthly_clean-up_category/name_part"] = 14000, ["Monthly_clean-up_category/outer_core"] = 13000, ["Monthly_clean-up_category/to_add"] = 2200, ["Monthly_clean_up_category"] = 8500, ["Monthyear"] = 101000, ["Monthyear-1"] = 99000, ["More_citations_needed"] = 334000, ["More_citations_needed_section"] = 14000, ["More_footnotes"] = 44000, ["More_footnotes_needed"] = 46000, ["More_references"] = 3200, ["Moresources"] = 6100, ["Motorcycling"] = 3300, ["Motorsport_season"] = 4100, ["Mp"] = 4600, ["Mpl"] = 2300, ["MultiReplace"] = 201000, ["Multiple_image"] = 33000, ["Multiple_image/styles.css"] = 33000, ["Multiple_issues"] = 115000, ["Music"] = 6600, ["MusicBrainz_meta"] = 3800, ["Mvar"] = 4500, ["Mw_lang"] = 61000, ["My"] = 2300, ["My_sandbox"] = 3700, ["Myprefs"] = 6600, ["Module:MLB_standings"] = 3600, ["Module:MLB_standings/data"] = 3600, ["Module:Main"] = 285000, ["Module:Main_page_image"] = 2600, ["Module:Mapframe"] = 222000, ["Module:Math"] = 1810000, ["Module:Medals_table"] = 11000, ["Module:Message_box"] = 7820000, ["Module:Message_box/configuration"] = 7820000, ["Module:Military_navigation"] = 72000, ["Module:Minor_planet_list_link"] = 4000, ["Module:MultiReplace"] = 455000, ["Module:Multiple_image"] = 33000, ["Module:Mw_lang"] = 61000, } tgdtyj6j9ilirgp3hpqiyl4m0do8lcl Module:Transclusion count/data/N 828 896 2024 2023 2020-09-29T19:15:41Z Chrisb 1 1 revision imported 2023 Scribunto text/plain return { ["N"] = 6300, ["N/A"] = 16000, ["N/a"] = 38000, ["NA-Class"] = 14000, ["NASTRO_comment"] = 27000, ["NBA_Draft_template_list"] = 3100, ["NBA_Year"] = 5000, ["NBA_color"] = 4200, ["NBA_color_cell"] = 4100, ["NBA_color_cell2"] = 3300, ["NBA_player_statistics_legend"] = 3000, ["NBA_player_statistics_start"] = 2800, ["NBbox"] = 3700, ["NBbox/1"] = 3700, ["NCAA_color_cell"] = 5700, ["NCAA_secondary_color_cell"] = 3100, ["NED"] = 8600, ["NFLAltPrimaryColor"] = 2000, ["NFLAltPrimaryStyle"] = 5400, ["NFLAltSecondaryColor"] = 2800, ["NFLPrimaryColor"] = 2300, ["NFLPrimaryStyle"] = 26000, ["NFLSecondaryColor"] = 18000, ["NFL_Roster_navbox_template_list"] = 2300, ["NFL_Year"] = 20000, ["NFL_predraft"] = 3400, ["NFL_predraft/check"] = 3400, ["NFL_predraft/ftin"] = 3400, ["NFT"] = 4800, ["NFT_player"] = 27000, ["NGA"] = 2700, ["NHLE"] = 15000, ["NHLS_url"] = 2200, ["NLD"] = 10000, ["NLM_content"] = 2800, ["NOINDEX"] = 368000, ["NOR"] = 8100, ["NRDB_species"] = 4600, ["NRHP-PA"] = 2600, ["NRHPGoogleMapFootnote"] = 2500, ["NRHP_Focus"] = 73000, ["NRHP_color"] = 3600, ["NRHP_date_for_lists"] = 3000, ["NRHP_date_for_lists/dates"] = 3000, ["NRHP_header"] = 3200, ["NRHP_navigation_box"] = 5000, ["NRHP_row"] = 3300, ["NRHP_style"] = 68000, ["NRHP_url"] = 27000, ["NRHP_url/core"] = 30000, ["NRISref"] = 71000, ["NSWcity"] = 2400, ["NSWcity/core"] = 2400, ["NUMBEROFSECTIONS"] = 3700, ["NYCS_br"] = 2600, ["NYCS_time_2"] = 3100, ["NZL"] = 6500, ["NZ_electorate_link"] = 2200, ["Namespace_detect"] = 310000, ["Namespace_detect_showall"] = 4200, ["Narrow_no-break_space"] = 3700, ["Nastaliq"] = 8500, ["Nat_fs_end"] = 2000, ["National_Heritage_List_for_England"] = 18000, ["National_Rail_style"] = 4600, ["National_Register_of_Historic_Places"] = 30000, ["National_Register_of_Historic_Places_in_Massachusetts"] = 4300, ["National_Register_of_Historic_Places_in_New_York"] = 5500, ["National_Register_of_Historic_Places_in_North_Carolina"] = 2900, ["National_Register_of_Historic_Places_in_Pennsylvania"] = 3200, ["National_Register_of_Historic_Places_in_Virginia"] = 3100, ["National_basketball_squad"] = 3200, ["National_field_hockey_squad"] = 2800, ["National_football_squad_end"] = 2600, ["National_football_squad_start/styles.css"] = 2200, ["National_squad"] = 27000, ["National_squad_no_numbers"] = 11000, ["Native_name"] = 10000, ["Navbar"] = 9160000, ["Navbar-collapsible"] = 10000, ["Navbar-header"] = 58000, ["Navbox"] = 2790000, ["Navbox_Canada"] = 11000, ["Navbox_Canada/styles.css"] = 11000, ["Navbox_GR_munic"] = 3400, ["Navbox_Musical_artist"] = 10000, ["Navbox_decade_list"] = 9800, ["Navbox_musical_artist"] = 205000, ["Navbox_musical_artist/color"] = 205000, ["Navbox_rugby_league_squad"] = 4900, ["Navbox_season_by_team"] = 2900, ["Navbox_with_collapsible_groups"] = 118000, ["Navbox_with_collapsible_sections"] = 2400, ["Navbox_with_columns"] = 23000, ["Navboxes"] = 44000, ["Navboxes_colour"] = 9300, ["Navseasoncats"] = 381000, ["Navseasoncats_with_centuries_below_decade"] = 32000, ["Navseasoncats_with_decades_below_year"] = 223000, ["Navsource"] = 2500, ["Navy"] = 16000, ["Navy/core"] = 16000, ["Nay"] = 8600, ["Nbay"] = 5000, ["Nbsp"] = 416000, ["Nbsp_to_space"] = 14000, ["Ndash"] = 14000, ["Nee"] = 2600, ["NeilBrownPlayers"] = 3100, ["New_York_Stock_Exchange"] = 2000, ["New_user_bar"] = 57000, ["Newbot"] = 3900, ["Next_period"] = 17000, ["Nihongo"] = 94000, ["Nihongo2"] = 12000, ["Nnbsp"] = 3600, ["No"] = 6000, ["No."] = 14000, ["No2"] = 7400, ["NoSpam"] = 4000, ["NoSpamEmail"] = 17000, ["No_footnotes"] = 54000, ["No_ping"] = 366000, ["No_plot"] = 3800, ["No_redirect"] = 453000, ["No_spam"] = 226000, ["No_wrap"] = 2100, ["Nobold"] = 149000, ["Nobold/styles.css"] = 149000, ["Nobr"] = 3100, ["Nobreak"] = 13000, ["Nochange"] = 2100, ["Nofootnotes"] = 2200, ["Noindex"] = 4600, ["Noitalic"] = 4400, ["Noitalic/styles.css"] = 4400, ["Nom"] = 28000, ["Nominated"] = 4700, ["Non-diffusing_subcategory"] = 10000, ["Non-free_2D_art"] = 5900, ["Non-free_album_cover"] = 186000, ["Non-free_audio_sample"] = 8900, ["Non-free_biog-pic"] = 17000, ["Non-free_book_cover"] = 46000, ["Non-free_comic"] = 11000, ["Non-free_fair_use"] = 17000, ["Non-free_fair_use_in"] = 14000, ["Non-free_film_screenshot"] = 5200, ["Non-free_game_cover"] = 4200, ["Non-free_game_screenshot"] = 3500, ["Non-free_historic_image"] = 14000, ["Non-free_image_data"] = 8400, ["Non-free_image_rationale"] = 9500, ["Non-free_in_US"] = 2200, ["Non-free_logo"] = 153000, ["Non-free_magazine_cover"] = 7100, ["Non-free_media"] = 662000, ["Non-free_media_data"] = 9600, ["Non-free_media_rationale"] = 11000, ["Non-free_movie_poster"] = 16000, ["Non-free_poster"] = 90000, ["Non-free_promotional"] = 9400, ["Non-free_school_logo"] = 2100, ["Non-free_seal"] = 3200, ["Non-free_symbol"] = 6300, ["Non-free_television_screenshot"] = 16000, ["Non-free_title-card"] = 4000, ["Non-free_use_rationale"] = 436000, ["Non-free_use_rationale_2"] = 164000, ["Non-free_use_rationale_album_cover"] = 124000, ["Non-free_use_rationale_book_cover"] = 16000, ["Non-free_use_rationale_logo"] = 96000, ["Non-free_use_rationale_poster"] = 43000, ["Non-free_use_rationale_video_cover"] = 5700, ["Non-free_use_rationale_video_game_cover"] = 7400, ["Non-free_video_cover"] = 15000, ["Non-free_video_game_cover"] = 17000, ["Non-free_video_game_cover/platform"] = 17000, ["Non-free_video_game_screenshot"] = 9100, ["Non-free_video_game_screenshot/platform"] = 8400, ["Non-free_with_permission"] = 2300, ["Noping"] = 299000, ["Noprint"] = 3700, ["Noredirect"] = 7500, ["Normalwraplink"] = 3100, ["NorthAmNative"] = 2600, ["North_America_topic"] = 3600, ["Northern_Ireland_tasks"] = 18000, ["Nospam"] = 10000, ["Not-PD-US-expired-min-year"] = 27000, ["Not_a_ballot"] = 7000, ["Not_a_forum"] = 6400, ["Not_a_typo"] = 6200, ["Not_around"] = 2400, ["Not_done"] = 16000, ["Notability"] = 63000, ["Notdone"] = 4800, ["Note"] = 30000, ["Note_label"] = 9000, ["Notelist"] = 99000, ["Notelist-lr"] = 2600, ["Notelist-ua"] = 4200, ["Notes"] = 5900, ["Notice"] = 105000, ["NovelsWikiProject"] = 20000, ["Nowiki_="] = 3800, ["Nowrap"] = 1130000, ["Nq"] = 2100, ["Nrut"] = 3200, ["Ns0"] = 259000, ["Ns_has_subpages"] = 1670000, ["Nts"] = 13000, ["Ntsh"] = 2800, ["Number_of_defined_parameters"] = 3900, ["Number_table_sorting"] = 24000, ["Number_table_sorting_hidden"] = 2800, ["Numismaticnotice"] = 2100, ["Nutshell"] = 3500, ["Nw="] = 3800, ["Module:NUMBEROFSECTIONS"] = 3700, ["Module:Namespace_detect"] = 11800000, ["Module:Namespace_detect/config"] = 13700000, ["Module:Namespace_detect/data"] = 13700000, ["Module:National_squad"] = 36000, ["Module:Navbar"] = 14900000, ["Module:Navbox"] = 4160000, ["Module:Navbox_Canada"] = 11000, ["Module:Navbox_with_collapsible_groups"] = 121000, ["Module:Navboxes"] = 44000, ["Module:Navseasoncats"] = 388000, ["Module:Navseasoncats/navyear"] = 17000, ["Module:Navseasoncats_with_centuries_below_decade"] = 32000, ["Module:Navseasoncats_with_year_navigation"] = 223000, ["Module:Nihongo"] = 95000, ["Module:No_globals"] = 15400000, ["Module:No_ping"] = 366000, ["Module:Noinclude"] = 77000, ["Module:Ns_has_subpages"] = 1670000, ["Module:Number_table_sorting"] = 26000, } m9ubqopp630gahpyrgxuw10djn97kbw Module:Transclusion count/data/S 828 1486 3278 3277 2020-10-11T01:41:35Z Chrisb 1 1 revision imported 3277 Scribunto text/plain return { ["S-aca"] = 5900, ["S-ach"] = 15000, ["S-aft"] = 202000, ["S-aft/filter"] = 202000, ["S-bef"] = 206000, ["S-bef/filter"] = 206000, ["S-break"] = 3500, ["S-civ"] = 2300, ["S-dip"] = 4800, ["S-end"] = 243000, ["S-gov"] = 6500, ["S-hon"] = 3400, ["S-hou"] = 9100, ["S-inc"] = 11000, ["S-legal"] = 8500, ["S-line"] = 20000, ["S-line/side_cell"] = 20000, ["S-mil"] = 10000, ["S-new"] = 12000, ["S-non"] = 7500, ["S-note"] = 2300, ["S-npo"] = 3100, ["S-off"] = 37000, ["S-par"] = 45000, ["S-par/en"] = 3100, ["S-par/gb"] = 3200, ["S-par/uk"] = 11000, ["S-par/us-hs"] = 11000, ["S-par/us-sen"] = 2000, ["S-ppo"] = 11000, ["S-rail"] = 25000, ["S-rail-start"] = 23000, ["S-rail/lines"] = 25000, ["S-reg"] = 17000, ["S-rel"] = 16000, ["S-roy"] = 2500, ["S-s"] = 3600, ["S-sports"] = 8700, ["S-start"] = 222000, ["S-title"] = 2100, ["S-ttl"] = 212000, ["S-vac"] = 4900, ["SCO"] = 4000, ["SDcat"] = 2310000, ["SECOND"] = 2300, ["SG"] = 2700, ["SGP"] = 2300, ["SIA"] = 2700, ["SLO"] = 3400, ["SMS"] = 7000, ["SPI_archive_notice"] = 55000, ["SPIarchive_notice"] = 55000, ["SPIcat"] = 3800, ["SPIclose"] = 3300, ["SPIpriorcases"] = 50000, ["SR/Olympics_profile"] = 4900, ["SRB"] = 3000, ["SS"] = 19000, ["SSPa"] = 2600, ["STN"] = 12000, ["SUBJECTSPACE_formatted"] = 35000, ["SUI"] = 7600, ["SVG"] = 7500, ["SVG-Logo"] = 18000, ["SVG-Res"] = 14000, ["SVG-logo"] = 4000, ["SVK"] = 4500, ["SVN"] = 4300, ["SWE"] = 12000, ["Sandbox_other"] = 108000, ["Saturday"] = 2500, ["Saved_book"] = 58000, ["Sc"] = 3000, ["Schlüsselconverter"] = 13000, ["School_block"] = 27000, ["School_disambiguation"] = 3100, ["Schoolblock"] = 20000, ["Schooldis"] = 2500, ["Schoolip"] = 14000, ["Scientist_icon"] = 15000, ["Scientist_icon2"] = 15000, ["Sclass-"] = 26000, ["Sclass/core"] = 28000, ["Sclass2-"] = 7800, ["Script/Hebrew"] = 7200, ["Script/Nastaliq"] = 11000, ["Script/styles_hebrew.css"] = 7200, ["Search_box"] = 34000, ["Search_link"] = 5700, ["Section_link"] = 38000, ["See"] = 9300, ["See_also"] = 152000, ["Seealso"] = 6400, ["Select_skin"] = 3400, ["Self"] = 70000, ["Self-published_inline"] = 3800, ["Self-published_source"] = 5800, ["Self/migration"] = 49000, ["Self2"] = 2900, ["Selfref"] = 2500, ["Sent_off"] = 9900, ["Sentoff"] = 2800, ["Separated_entries"] = 110000, ["Serial_killer_opentask"] = 2200, ["Series_overview"] = 5000, ["Serif"] = 2000, ["Set_category"] = 33000, ["Set_index_article"] = 4700, ["Sets_taxobox_colour"] = 182000, ["Sfn"] = 105000, ["SfnRef"] = 117000, ["Sfnp"] = 12000, ["Sfnref"] = 15000, ["Sfrac"] = 3300, ["SharedIP"] = 7500, ["SharedIPEDU"] = 27000, ["Shared_IP"] = 33000, ["Shared_IP_advice"] = 12000, ["Shared_IP_corp"] = 7000, ["Shared_IP_edu"] = 148000, ["Shared_IP_gov"] = 4000, ["Sharedip"] = 10000, ["Sharedipedu"] = 15000, ["Sherdog"] = 2400, ["Ship"] = 75000, ["Ship/maintenancecategory"] = 75000, ["Ship_index"] = 6500, ["Shipboxflag"] = 16000, ["Shipboxflag/core"] = 16000, ["Shipindex"] = 6200, ["Shipwrecks_navbox_footer"] = 4700, ["Short_description"] = 2600000, ["Short_pages_monitor"] = 11000, ["Short_pages_monitor/maximum_length"] = 11000, ["Shortcut"] = 20000, ["Shortcut/styles.css"] = 20000, ["Should_be_SVG"] = 12000, ["Show_button"] = 2030000, ["Sic"] = 23000, ["Sica"] = 2500, ["Side_box"] = 970000, ["Sidebar"] = 169000, ["Sidebar_games_events"] = 31000, ["Sidebar_with_collapsible_lists"] = 76000, ["Sigfig"] = 3200, ["Significant_figures"] = 3900, ["Significant_figures/rnd"] = 3500, ["Silver02"] = 13000, ["Silver2"] = 39000, ["Silver_medal"] = 4200, ["Single+double"] = 3800, ["Single-innings_cricket_match"] = 2400, ["Single_chart"] = 28000, ["Single_chart/chartnote"] = 28000, ["Single_namespace"] = 137000, ["Singlechart"] = 23000, ["Singles"] = 35000, ["Sister-inline"] = 142000, ["Sister_project"] = 962000, ["Sister_project_links"] = 8800, ["Sisterlinks"] = 3300, ["Skip_to_talk"] = 10000, ["Sky"] = 2400, ["Slink"] = 2900, ["Small"] = 928000, ["Small_Solar_System_bodies"] = 3500, ["Smallcaps"] = 15000, ["Smallcaps/styles.css"] = 17000, ["Smallcaps_all"] = 3600, ["Smalldiv"] = 12000, ["Smaller"] = 87000, ["Smallsup"] = 18000, ["Smiley"] = 34000, ["Snd"] = 18000, ["Snds"] = 5600, ["Soccer_icon"] = 118000, ["Soccer_icon2"] = 118000, ["Soccer_icon4"] = 4900, ["Soccerbase"] = 13000, ["Soccerbase_season"] = 5500, ["Soccerway"] = 57000, ["Sock"] = 42000, ["Sockcat"] = 2200, ["Sockmaster"] = 8500, ["Sockpuppet"] = 200000, ["Sockpuppet/categorise"] = 199000, ["SockpuppetCheckuser"] = 5500, ["Sockpuppet_category"] = 41000, ["Sockpuppet_category/confirmed"] = 19000, ["Sockpuppet_category/suspected"] = 23000, ["Sockpuppetcheckuser"] = 3600, ["Sockpuppeteer"] = 19000, ["Soft_redirect"] = 5700, ["Soft_redirect_protection"] = 7400, ["Softredirect"] = 3000, ["Solar_luminosity"] = 3500, ["Solar_mass"] = 4100, ["Solar_radius"] = 3300, ["Soldier_icon"] = 4000, ["Soldier_icon2"] = 4000, ["Song"] = 7700, ["Songs"] = 19000, ["Songs_category"] = 6900, ["Songs_category/core"] = 6900, ["Sort"] = 101000, ["Sortname"] = 42000, ["Source_check"] = 985000, ["Sourcecheck"] = 985000, ["South_America_topic"] = 2400, ["Sp"] = 203000, ["Space"] = 55000, ["Space+double"] = 3300, ["Spaced_en_dash"] = 45000, ["Spaced_en_dash_space"] = 5700, ["Spaced_ndash"] = 22000, ["Spaces"] = 2520000, ["Spain_metadata_Wikidata"] = 7100, ["Spamlink"] = 11000, ["Spanish_name"] = 22000, ["Spanish_name/text"] = 22000, ["Spanish_name_2"] = 4600, ["Species_Latin_name_abbreviation_disambiguation"] = 2100, ["Species_list"] = 10000, ["Speciesbox"] = 210000, ["Speciesbox/getGenus"] = 210000, ["Speciesbox/getSpecies"] = 210000, ["Speciesbox/hybrid_name"] = 38000, ["Speciesbox/name"] = 210000, ["Speciesbox/parameterCheck"] = 210000, ["Speciesbox/trim"] = 210000, ["Specieslist"] = 3600, ["Spilomelinae-stub"] = 2300, ["Split_article"] = 2900, ["Sport_icon"] = 14000, ["Sport_icon2"] = 14000, ["SportsYearCatUSstate"] = 5300, ["SportsYearCatUSstate/core"] = 5300, ["Sports_links"] = 6800, ["Sports_reference"] = 9400, ["Squad_maintenance"] = 2400, ["Square_bracket_close"] = 82000, ["Square_bracket_open"] = 85000, ["Stack"] = 22000, ["Stack/styles.css"] = 23000, ["StaleIP"] = 2700, ["Standings_Table_End"] = 40000, ["Standings_Table_Entry"] = 40000, ["Standings_Table_Entry/record"] = 40000, ["Standings_Table_Start"] = 40000, ["Standings_Table_Start/colheader"] = 40000, ["Standings_Table_Start/colspan"] = 40000, ["Starbox_astrometry"] = 4400, ["Starbox_begin"] = 4700, ["Starbox_catalog"] = 4500, ["Starbox_character"] = 4400, ["Starbox_detail"] = 4200, ["Starbox_end"] = 4600, ["Starbox_observe"] = 4500, ["Starbox_reference"] = 4500, ["Start-Class"] = 99000, ["Start-date"] = 4600, ["Start_box"] = 7600, ["Start_date"] = 358000, ["Start_date_and_age"] = 86000, ["Start_date_and_years_ago"] = 5600, ["Start_of_course_timeline"] = 4000, ["Start_of_course_week"] = 4100, ["Start_tab"] = 3900, ["Startflatlist"] = 93000, ["Static_IP"] = 11000, ["Station"] = 4900, ["Station_link"] = 5500, ["Stdinchicite"] = 10000, ["Steady"] = 11000, ["Stl"] = 3300, ["Stn"] = 4500, ["Stnlnk"] = 25000, ["Storm_colour"] = 4400, ["StoryTeleplay"] = 2300, ["Str_crop"] = 2300, ["Str_endswith"] = 147000, ["Str_find"] = 680000, ["Str_find0"] = 191000, ["Str_find_long"] = 5600, ["Str_index"] = 14000, ["Str_left"] = 1680000, ["Str_len"] = 771000, ["Str_letter"] = 170000, ["Str_letter/trim"] = 9500, ["Str_mid"] = 4000, ["Str_mid/core"] = 4500, ["Str_number"] = 9900, ["Str_number/trim"] = 25000, ["Str_rep"] = 560000, ["Str_right"] = 62000, ["Str_rightc"] = 377000, ["Str_rightmost"] = 79000, ["Str_sub"] = 17000, ["Str_sub_long"] = 418000, ["Str_sub_new"] = 28000, ["Str_sub_old"] = 445000, ["Str_trim"] = 6000, ["Str_≠_len"] = 23000, ["Str_≤_len"] = 8200, ["Str_≥_len"] = 43000, ["Strfind_short"] = 6400, ["Strikethrough"] = 8700, ["Strlen_quick"] = 4800, ["Strong"] = 19000, ["Structurae"] = 2000, ["Stub-Class"] = 75000, ["Stub_Category"] = 12000, ["Stub_category"] = 16000, ["Stub_documentation"] = 33000, ["Student_editor"] = 27000, ["Student_sandbox"] = 4500, ["Student_table_row"] = 3500, ["Students_table"] = 3500, ["Su"] = 11000, ["Su-census1989"] = 4100, ["Sub"] = 2800, ["Subinfobox_bodystyle"] = 29000, ["Subject_bar"] = 16000, ["Subject_bar/styles.css"] = 16000, ["Suboff"] = 5200, ["Subon"] = 5300, ["Subpage_other"] = 139000, ["Subscription"] = 4400, ["Subscription_required"] = 28000, ["Subsidebar_bodystyle"] = 9600, ["Subst_only"] = 5000, ["Substituted_comment"] = 19000, ["Substr_any"] = 5500, ["Succession_box"] = 116000, ["Succession_links"] = 118000, ["Summer_Olympics_by_year_category_navigation"] = 2400, ["Summer_Olympics_by_year_category_navigation/core"] = 2400, ["Sunday"] = 2500, ["Sup"] = 63000, ["Superimpose2/base"] = 2600, ["Superimpose5"] = 2400, ["Surname"] = 57000, ["Swiss_populations"] = 2400, ["Swiss_populations_NC"] = 3000, ["Swiss_populations_ref"] = 2400, ["Module:SDcat"] = 2310000, ["Module:Science_redirect"] = 218000, ["Module:Science_redirect/conf"] = 218000, ["Module:Section_link"] = 38000, ["Module:See_also_if_exists"] = 44000, ["Module:Separated_entries"] = 1860000, ["Module:Series_overview"] = 5000, ["Module:Settlement_short_description"] = 617000, ["Module:Shortcut"] = 20000, ["Module:Shortcut/config"] = 20000, ["Module:Side_box"] = 978000, ["Module:Sidebar"] = 235000, ["Module:Sidebar_games_events"] = 31000, ["Module:Singles"] = 35000, ["Module:Sort_title"] = 14000, ["Module:Sortkey"] = 159000, ["Module:Sports_career"] = 16000, ["Module:Sports_color"] = 56000, ["Module:Sports_color/baseball"] = 29000, ["Module:Sports_color/basketball"] = 20000, ["Module:Sports_rbr_table"] = 7700, ["Module:Sports_rbr_table/styles.css"] = 7700, ["Module:Sports_reference"] = 9400, ["Module:Sports_results"] = 9000, ["Module:Sports_table"] = 42000, ["Module:Sports_table/WDL"] = 39000, ["Module:Sports_table/WL"] = 2400, ["Module:Sports_table/argcheck"] = 42000, ["Module:Sports_table/sub"] = 42000, ["Module:Sports_table/totalscheck"] = 31000, ["Module:Stock_tickers/NYSE"] = 2200, ["Module:String"] = 8310000, ["Module:String2"] = 249000, ["Module:Su"] = 11000, ["Module:Subject_bar"] = 16000, } f03ivyeb8o388xo8sziz72t855rd9fm Module:Transclusion count/data/T 828 1311 2854 2853 2020-09-29T19:18:20Z Chrisb 1 1 revision imported 2853 Scribunto text/plain return { ["T"] = 270000, ["T1"] = 7900, ["T:TDYK"] = 2800, ["TAFI/Picture_box"] = 2700, ["TAFI/Picture_box/show_picture"] = 2600, ["TBA"] = 3100, ["TCH"] = 2200, ["TCMDb_name"] = 2100, ["TCMDb_title"] = 10000, ["TDMCA"] = 18000, ["TFAFULL"] = 6800, ["TFAIMAGE"] = 3100, ["TFAfooter"] = 7500, ["TFArecentlist"] = 3100, ["THA"] = 3800, ["TOC_bottom"] = 68000, ["TOC_left"] = 3100, ["TOC_left/styles.css"] = 3100, ["TOC_limit"] = 19000, ["TOC_limit/styles.css"] = 20000, ["TOC_right"] = 41000, ["TOC_right/styles.css"] = 41000, ["TOC_top"] = 68000, ["TOClimit"] = 3400, ["TOCright"] = 4900, ["TUR"] = 7500, ["TV.com_episode"] = 6300, ["TV.com_show"] = 6500, ["TVDebutsEndingsAntonym"] = 6200, ["TVQ"] = 2600, ["TWA/Logo/3"] = 54000, ["TWA/Navigation2"] = 5200, ["TWA_nav_inner_black"] = 27000, ["TWP"] = 4600, ["Tab"] = 3800, ["Tag"] = 4700, ["Talk"] = 4200, ["Talk_archive"] = 28000, ["Talk_archive_navigation"] = 16000, ["Talk_header"] = 530000, ["Talk_other"] = 155000, ["Talk_page"] = 4900, ["Talk_page_header"] = 2000, ["Talk_page_of_redirect"] = 12000, ["Talk_page_stalker"] = 10000, ["Talk_page_watcher"] = 2100, ["Talk_quote_block"] = 8400, ["Talk_quote_block/styles.css"] = 8400, ["Talk_quote_inline"] = 62000, ["Talk_quote_inline/styles.css"] = 62000, ["Talkarchive"] = 97000, ["Talkarchivenav"] = 26000, ["Talkback"] = 69000, ["Talkheader"] = 132000, ["Talkpage"] = 5700, ["Talkquote"] = 5900, ["Talkspace_detect"] = 366000, ["Tan"] = 3100, ["Tasks"] = 662000, ["Taxobox"] = 182000, ["Taxobox/Error_colour"] = 441000, ["Taxobox/core"] = 441000, ["Taxobox/species"] = 61000, ["Taxobox_colour"] = 512000, ["Taxobox_name"] = 122000, ["Taxon_info"] = 282000, ["Taxon_italics"] = 210000, ["Taxonbar"] = 434000, ["Taxonbar/candidate"] = 409000, ["Taxonomy"] = 395000, ["Taxonomy/Acanthomorpha"] = 11000, ["Taxonomy/Acanthopterygii"] = 11000, ["Taxonomy/Acari"] = 2300, ["Taxonomy/Actinopteri"] = 20000, ["Taxonomy/Actinopterygii"] = 20000, ["Taxonomy/Aculeata"] = 2100, ["Taxonomy/Adephaga"] = 7400, ["Taxonomy/Afrophidia"] = 2500, ["Taxonomy/Alethinophidia"] = 2900, ["Taxonomy/Amniota"] = 34000, ["Taxonomy/Amphibia"] = 7900, ["Taxonomy/Amphiesmenoptera"] = 40000, ["Taxonomy/Anartioptera"] = 3000, ["Taxonomy/Angiosperms"] = 89000, ["Taxonomy/Animalia"] = 222000, ["Taxonomy/Anthophila"] = 3100, ["Taxonomy/Antliophora"] = 9200, ["Taxonomy/Anura"] = 6800, ["Taxonomy/Apocrita"] = 7400, ["Taxonomy/Apoditrysia"] = 36000, ["Taxonomy/Apoidea"] = 3600, ["Taxonomy/Arachnida"] = 15000, ["Taxonomy/Arachnomorpha"] = 15000, ["Taxonomy/Araneae"] = 12000, ["Taxonomy/Araneoidea"] = 2400, ["Taxonomy/Araneomorphae"] = 11000, ["Taxonomy/Archaeplastida"] = 95000, ["Taxonomy/Archosauria"] = 5200, ["Taxonomy/Archosauria/skip"] = 4100, ["Taxonomy/Arctiinae"] = 5800, ["Taxonomy/Arctiini"] = 3600, ["Taxonomy/Arthropoda"] = 112000, ["Taxonomy/Artiodactyla"] = 2100, ["Taxonomy/Ascomycota"] = 2600, ["Taxonomy/Asilomorpha"] = 2600, ["Taxonomy/Asparagales"] = 12000, ["Taxonomy/Asteraceae"] = 4100, ["Taxonomy/Asterales"] = 4900, ["Taxonomy/Asterids"] = 24000, ["Taxonomy/Asteroideae"] = 3000, ["Taxonomy/Australaves"] = 10000, ["Taxonomy/Avemetatarsalia"] = 4100, ["Taxonomy/Aves"] = 17000, ["Taxonomy/Aves/skip"] = 17000, ["Taxonomy/Batrachia"] = 7600, ["Taxonomy/Batrachomorpha"] = 8500, ["Taxonomy/Bilateria"] = 218000, ["Taxonomy/Bivalvia"] = 2000, ["Taxonomy/Bombycoidea"] = 2200, ["Taxonomy/Boreoeutheria"] = 12000, ["Taxonomy/Brachycera"] = 7800, ["Taxonomy/Bulbophyllinae"] = 2000, ["Taxonomy/Bulbophyllum"] = 2000, ["Taxonomy/Caenogastropoda"] = 9800, ["Taxonomy/Caenophidia"] = 2500, ["Taxonomy/Calyptratae"] = 2600, ["Taxonomy/Campanulids"] = 6800, ["Taxonomy/Carabidae"] = 6800, ["Taxonomy/Caraboidea"] = 6800, ["Taxonomy/Caryophyllales"] = 3100, ["Taxonomy/Cephalopoda"] = 2400, ["Taxonomy/Cerambycidae"] = 2400, ["Taxonomy/Chelicerata"] = 15000, ["Taxonomy/Chordata"] = 82000, ["Taxonomy/Chrysomelidae"] = 2300, ["Taxonomy/Chrysomeloidea"] = 4800, ["Taxonomy/Cladotheria"] = 14000, ["Taxonomy/Cnidaria"] = 2600, ["Taxonomy/Coelolepida"] = 40000, ["Taxonomy/Coleoptera"] = 22000, ["Taxonomy/Colubroides"] = 2500, ["Taxonomy/Commelinids"] = 10000, ["Taxonomy/Condylognatha"] = 4800, ["Taxonomy/Conoidea"] = 6100, ["Taxonomy/Core_eudicots"] = 56000, ["Taxonomy/Crambidae"] = 2400, ["Taxonomy/Cucujiformia"] = 9800, ["Taxonomy/Curculionoidea"] = 2300, ["Taxonomy/Cyclorrhapha"] = 4000, ["Taxonomy/Cyperaceae"] = 3000, ["Taxonomy/Cyprinidae"] = 3700, ["Taxonomy/Cypriniformes"] = 4700, ["Taxonomy/Cypriniphysae"] = 4700, ["Taxonomy/Cyprinoidea"] = 3700, ["Taxonomy/Dendrobieae"] = 3600, ["Taxonomy/Deuterostomia"] = 82000, ["Taxonomy/Diaphoretickes"] = 97000, ["Taxonomy/Diapsida"] = 14000, ["Taxonomy/Dicondylia"] = 92000, ["Taxonomy/Dikarya"] = 3600, ["Taxonomy/Dinosauria"] = 3500, ["Taxonomy/Dinosauriformes"] = 3500, ["Taxonomy/Dinosauromorpha"] = 3500, ["Taxonomy/Diptera"] = 9000, ["Taxonomy/Ditrysia"] = 39000, ["Taxonomy/Dracohors"] = 3500, ["Taxonomy/Ecdysozoa"] = 112000, ["Taxonomy/Elpistostegalia"] = 43000, ["Taxonomy/Embryophytes"] = 93000, ["Taxonomy/Embryophytes/Plantae"] = 93000, ["Taxonomy/Endopterygota"] = 80000, ["Taxonomy/Entelegynae"] = 2800, ["Taxonomy/Eotetrapodiformes"] = 43000, ["Taxonomy/Epidendroideae"] = 5700, ["Taxonomy/Erebidae"] = 8800, ["Taxonomy/Eremoneura"] = 4000, ["Taxonomy/Ericales"] = 3100, ["Taxonomy/Euarchontoglires"] = 5400, ["Taxonomy/Eudicots"] = 58000, ["Taxonomy/Eufalconimorphae"] = 10000, ["Taxonomy/Eugnathostomata"] = 64000, ["Taxonomy/Eukaryota"] = 323000, ["Taxonomy/Eulepidoptera"] = 39000, ["Taxonomy/Eumetabola"] = 85000, ["Taxonomy/Eumetazoa"] = 221000, ["Taxonomy/Euphorbia"] = 2400, ["Taxonomy/Euphorbiaceae"] = 3900, ["Taxonomy/Euphorbieae"] = 2400, ["Taxonomy/Euphorbiinae"] = 2400, ["Taxonomy/Euphorbioideae"] = 2700, ["Taxonomy/Eureptilia"] = 14000, ["Taxonomy/Euteleostomi"] = 43000, ["Taxonomy/Eutheria"] = 13000, ["Taxonomy/Euthyneura"] = 2500, ["Taxonomy/Exafroplacentalia"] = 4500, ["Taxonomy/Fabaceae"] = 3900, ["Taxonomy/Fabales"] = 4300, ["Taxonomy/Fabids"] = 10000, ["Taxonomy/Ferungulata"] = 3900, ["Taxonomy/Filozoa"] = 222000, ["Taxonomy/Fungi"] = 3900, ["Taxonomy/Gastropoda"] = 16000, ["Taxonomy/Geadephaga"] = 6900, ["Taxonomy/Gekkota"] = 2300, ["Taxonomy/Gelechioidea"] = 3400, ["Taxonomy/Gentianales"] = 5800, ["Taxonomy/Geometridae"] = 4900, ["Taxonomy/Geometroidea"] = 5000, ["Taxonomy/Glires"] = 3900, ["Taxonomy/Glossata"] = 40000, ["Taxonomy/Gnathostomata"] = 64000, ["Taxonomy/Graminid_clade"] = 3500, ["Taxonomy/Hemiptera"] = 4800, ["Taxonomy/Heterobranchia"] = 2600, ["Taxonomy/Heteroneura"] = 39000, ["Taxonomy/Heteroptera"] = 3000, ["Taxonomy/Hexapoda"] = 93000, ["Taxonomy/Holomycota"] = 3900, ["Taxonomy/Holotheria"] = 14000, ["Taxonomy/Holozoa"] = 222000, ["Taxonomy/Hyloidea"] = 3300, ["Taxonomy/Hymenoptera"] = 7700, ["Taxonomy/Hymenopterida"] = 7700, ["Taxonomy/Inopinaves"] = 12000, ["Taxonomy/Insecta"] = 92000, ["Taxonomy/Lamiaceae"] = 2100, ["Taxonomy/Lamiales"] = 6200, ["Taxonomy/Lamiids"] = 13000, ["Taxonomy/Larentiinae"] = 2400, ["Taxonomy/Laurasiatheria"] = 6500, ["Taxonomy/Leotiomyceta"] = 2400, ["Taxonomy/Lepidoptera"] = 40000, ["Taxonomy/Lepidosauria"] = 10000, ["Taxonomy/Lepidosauromorpha"] = 11000, ["Taxonomy/Life"] = 327000, ["Taxonomy/Lissamphibia"] = 7900, ["Taxonomy/Lophotrochozoa"] = 22000, ["Taxonomy/Macroheterocera"] = 19000, ["Taxonomy/Magnoliids"] = 4700, ["Taxonomy/Malpighiales"] = 7000, ["Taxonomy/Malvids"] = 18000, ["Taxonomy/Mammalia"] = 14000, ["Taxonomy/Mammaliaformes"] = 14000, ["Taxonomy/Mammaliaformes/skip"] = 14000, ["Taxonomy/Metapterygota"] = 90000, ["Taxonomy/Mollusca"] = 21000, ["Taxonomy/Monocots"] = 25000, ["Taxonomy/Muroidea"] = 2300, ["Taxonomy/Muscomorpha"] = 4700, ["Taxonomy/Myoglossata"] = 40000, ["Taxonomy/Myomorpha"] = 2400, ["Taxonomy/Myrtaceae"] = 3800, ["Taxonomy/Myrtales"] = 5900, ["Taxonomy/Myrtoideae"] = 3800, ["Taxonomy/Neoaves"] = 16000, ["Taxonomy/Neobatrachia"] = 6100, ["Taxonomy/Neodiapsida"] = 14000, ["Taxonomy/Neogastropoda"] = 8500, ["Taxonomy/Neognathae"] = 17000, ["Taxonomy/Neolepidoptera"] = 39000, ["Taxonomy/Neoptera"] = 90000, ["Taxonomy/Neopterygii"] = 20000, ["Taxonomy/Nephrozoa"] = 218000, ["Taxonomy/Noctuidae"] = 2400, ["Taxonomy/Noctuoidea"] = 12000, ["Taxonomy/Obazoa"] = 226000, ["Taxonomy/Obtectomera"] = 28000, ["Taxonomy/Oestroidea"] = 2400, ["Taxonomy/Olfactores"] = 65000, ["Taxonomy/Ophidia"] = 3300, ["Taxonomy/Opisthokonta"] = 226000, ["Taxonomy/Opisthothelae"] = 12000, ["Taxonomy/Orchidaceae"] = 8400, ["Taxonomy/Orchidoideae"] = 2600, ["Taxonomy/Ornithodira"] = 4100, ["Taxonomy/Orthoptera"] = 2700, ["Taxonomy/Orthopterida"] = 3000, ["Taxonomy/Ostariophysi"] = 7400, ["Taxonomy/Osteichthyes"] = 20000, ["Taxonomy/Otophysi"] = 7300, ["Taxonomy/Ovalentaria"] = 4400, ["Taxonomy/Palaeoptera"] = 2100, ["Taxonomy/Panarthropoda"] = 112000, ["Taxonomy/Pancrustacea"] = 95000, ["Taxonomy/Panorpida"] = 49000, ["Taxonomy/Panorthoptera"] = 2700, ["Taxonomy/Papilionoidea"] = 4400, ["Taxonomy/ParaHoxozoa"] = 221000, ["Taxonomy/Paraneoptera"] = 5300, ["Taxonomy/Passeri"] = 7300, ["Taxonomy/Passerida"] = 4900, ["Taxonomy/Passeriformes"] = 9300, ["Taxonomy/Passeroidea"] = 2400, ["Taxonomy/Percomorpha"] = 8400, ["Taxonomy/Pezizomycotina"] = 2500, ["Taxonomy/Phytophaga"] = 7100, ["Taxonomy/Piperaceae"] = 2900, ["Taxonomy/Piperales"] = 3000, ["Taxonomy/Piperoideae"] = 2900, ["Taxonomy/Placentalia"] = 13000, ["Taxonomy/Plantae"] = 93000, ["Taxonomy/Poaceae"] = 3500, ["Taxonomy/Poales"] = 8500, ["Taxonomy/Polyneoptera"] = 3800, ["Taxonomy/Polyorthoptera"] = 3000, ["Taxonomy/Polyphaga"] = 15000, ["Taxonomy/Polysporangiophytes"] = 92000, ["Taxonomy/Polysporangiophytes/Plantae"] = 92000, ["Taxonomy/Protostomia"] = 136000, ["Taxonomy/Psittacopasserae"] = 10000, ["Taxonomy/Pterygota"] = 92000, ["Taxonomy/Pyraloidea"] = 4200, ["Taxonomy/Ranoidea"] = 2100, ["Taxonomy/Reptilia"] = 14000, ["Taxonomy/Reptiliomorpha"] = 34000, ["Taxonomy/Rhipidistia"] = 43000, ["Taxonomy/Rodentia"] = 3800, ["Taxonomy/Romeriida"] = 14000, ["Taxonomy/Rosales"] = 2200, ["Taxonomy/Rosids"] = 28000, ["Taxonomy/Rubiaceae"] = 4200, ["Taxonomy/Rubioideae"] = 3000, ["Taxonomy/Saccharomyceta"] = 2500, ["Taxonomy/Salientia"] = 6800, ["Taxonomy/Salticidae"] = 2200, ["Taxonomy/Salticinae"] = 2000, ["Taxonomy/Sapindales"] = 2100, ["Taxonomy/Sarcopterygii"] = 43000, ["Taxonomy/Sauria"] = 13000, ["Taxonomy/Saurischia"] = 2400, ["Taxonomy/Sauropsida"] = 18000, ["Taxonomy/Schizophora"] = 4000, ["Taxonomy/Scrotifera"] = 5800, ["Taxonomy/Serpentes"] = 3300, ["Taxonomy/Siluriformes"] = 2300, ["Taxonomy/Spermatophyta"] = 90000, ["Taxonomy/Spermatophytes/Plantae"] = 90000, ["Taxonomy/Spiralia"] = 23000, ["Taxonomy/Squamata"] = 10000, ["Taxonomy/Stegocephalia"] = 43000, ["Taxonomy/Superasterids"] = 27000, ["Taxonomy/Superrosids"] = 29000, ["Taxonomy/Synapsida"] = 15000, ["Taxonomy/Tachinidae"] = 2200, ["Taxonomy/Tactopoda"] = 112000, ["Taxonomy/Teleostei"] = 20000, ["Taxonomy/Teleostomi"] = 63000, ["Taxonomy/Telluraves"] = 12000, ["Taxonomy/Tetrapoda"] = 42000, ["Taxonomy/Tetrapodomorpha"] = 43000, ["Taxonomy/Theria"] = 14000, ["Taxonomy/Tortricidae"] = 2400, ["Taxonomy/Tortricoidea"] = 2400, ["Taxonomy/Toxicofera"] = 4800, ["Taxonomy/Tracheophyta"] = 92000, ["Taxonomy/Tracheophytes/Plantae"] = 92000, ["Taxonomy/Trechnotheria"] = 14000, ["Taxonomy/Tribosphenida"] = 14000, ["Taxonomy/Trochida"] = 2300, ["Taxonomy/Trochoidea"] = 2300, ["Taxonomy/Ungulata"] = 2300, ["Taxonomy/Unicalcarida"] = 7500, ["Taxonomy/Unikonta"] = 226000, ["Taxonomy/Vertebrata"] = 65000, ["Taxonomy/Vetigastropoda"] = 3600, ["Taxonomy/Virus"] = 2600, ["Taxonomy/Zatheria"] = 14000, ["Taxonomy/Zoosporia"] = 3900, ["Taxonomy/nobreak"] = 395000, ["Taxonomy_key"] = 71000, ["Taxonomy_preload"] = 74000, ["Tb"] = 14000, ["Tcmdb_title"] = 8700, ["Team_appearances_list"] = 12000, ["Team_roster_navbox"] = 30000, ["Technical"] = 3700, ["TelevisionWikiProject"] = 5300, ["Television_episode_redirect_handler"] = 2400, ["Television_episode_short_description"] = 11000, ["Template"] = 3200, ["Template-Class"] = 13000, ["TemplateData_header"] = 12000, ["Template_category"] = 26000, ["Template_for_discussion/dated"] = 44000, ["Template_link_with_link_off"] = 9300, ["Template_link_with_linked_braces"] = 9700, ["Template_link_with_parameters"] = 71000, ["Template_link_with_subst"] = 24000, ["Template_link_with_subst_and_parameters"] = 6900, ["Template_other"] = 4510000, ["Template_parameter_usage"] = 12000, ["Template_parameter_value"] = 4400, ["Template_reference_list"] = 6000, ["Template_shortcut"] = 2600, ["TennisEventInfo"] = 5700, ["Tennis_events"] = 10000, ["Tennis_icon"] = 2500, ["Tennis_icon2"] = 2500, ["Testcases_notice"] = 3100, ["Tfd_links"] = 4700, ["Tfm/dated"] = 33000, ["Thank_you"] = 3900, ["The_Africa_Destubathon_banner"] = 2000, ["The_edit-summary_field"] = 9900, ["Their"] = 9500, ["They_have"] = 13000, ["Thin_space"] = 3300, ["Thinsp"] = 2200, ["Third-party"] = 7900, ["This_is_a_new_user"] = 4500, ["Thoroughbred_racing"] = 5000, ["Thursday"] = 2500, ["Tick"] = 69000, ["Time/JST_offset"] = 95000, ["Time_ago"] = 143000, ["Title_case"] = 5000, ["Title_decade"] = 20000, ["Title_disambig_text"] = 207000, ["Title_without_disambig"] = 3300, ["Title_year"] = 162000, ["Tl"] = 4940000, ["Tl2"] = 2000, ["Tlc"] = 765000, ["Tld"] = 123000, ["Tlf"] = 9300, ["Tlg"] = 48000, ["Tlp"] = 71000, ["Tls"] = 29000, ["Tlsp"] = 6900, ["Tlu"] = 11000, ["Tlx"] = 2640000, ["Tlxs"] = 3700, ["Tmbox"] = 2740000, ["Tn"] = 12000, ["Tnull"] = 7000, ["To_do"] = 8000, ["Tocright"] = 6500, ["Todo"] = 3500, ["Tomorrow"] = 3700, ["Tone"] = 9000, ["Tone-cmn"] = 2300, ["Toolbar"] = 298000, ["Tooltip"] = 34000, ["Top-Class"] = 15000, ["Top-importance"] = 15000, ["Top_icon"] = 61000, ["Totd"] = 3800, ["Totd_nav"] = 4900, ["Tp"] = 2300, ["Tps"] = 9500, ["Tpw"] = 2000, ["Tq"] = 60000, ["Track_gauge"] = 21000, ["Track_listing"] = 92000, ["Tracking_category"] = 2500, ["Tracklist"] = 37000, ["Trademark"] = 8600, ["Trademarked"] = 5700, ["TrainsWikiProject"] = 40000, ["Trans"] = 3500, ["Transclude"] = 26000, ["Transclude_lead_excerpt"] = 2700, ["Transl"] = 37000, ["Translated"] = 16000, ["Translated_page"] = 66000, ["Translation"] = 7200, ["Translation/Base"] = 2400, ["Translation/Information"] = 2100, ["Translation/Summary"] = 2100, ["Tree_chart"] = 7500, ["Tree_chart/end"] = 7500, ["Tree_chart/start"] = 7500, ["Trim"] = 1520000, ["Trim_brackets"] = 4100, ["Trim_quotes"] = 23000, ["Trunc"] = 6600, ["Tuesday"] = 2500, ["Tv.com_episode"] = 5800, ["Tv.com_show"] = 6300, ["Twitter"] = 17000, ["TwoLegResult"] = 4200, ["TwoLegStart"] = 3100, ["TwoLeg_start"] = 4200, ["Two_digit_year"] = 4800, ["Module:TableTools"] = 4490000, ["Module:Table_empty_cell"] = 21000, ["Module:TaxonItalics"] = 513000, ["Module:TaxonList"] = 11000, ["Module:Taxonbar"] = 434000, ["Module:Taxonbar/candidate"] = 409000, ["Module:Taxonbar/conf"] = 434000, ["Module:Taxonbar/exists"] = 409000, ["Module:TeamBracket"] = 9200, ["Module:TeamBracket-Tennis"] = 19000, ["Module:Team_appearances_list"] = 12000, ["Module:Team_appearances_list/data"] = 12000, ["Module:Team_bracket_tracking"] = 14000, ["Module:Team_roster_navbox"] = 31000, ["Module:Television_episode_redirect_handler"] = 2400, ["Module:Television_episode_short_description"] = 13000, ["Module:Television_infoboxes_disambiguation_check"] = 56000, ["Module:TemplatePar"] = 48000, ["Module:Template_parameter_value"] = 4400, ["Module:Template_wrapper"] = 158000, ["Module:Tennis_events_nav"] = 15000, ["Module:Tfd_links"] = 4700, ["Module:Time_ago"] = 143000, ["Module:Tlg"] = 48000, ["Module:Toolbar"] = 1120000, ["Module:Track_gauge"] = 21000, ["Module:Track_gauge/data"] = 21000, ["Module:Track_listing"] = 92000, ["Module:Transclusion_count"] = 3000, ["Module:Tree_chart"] = 7500, ["Module:Tree_chart/data"] = 7500, ["Module:Trim_quotes"] = 34000, ["Module:Type_in_location"] = 89000, } 5vae0hwr79tvxv3sx89a0l81favuudm Module:Transclusion count/data/Y 828 911 2054 2053 2020-09-29T19:15:46Z Chrisb 1 1 revision imported 2053 Scribunto text/plain return { ["Y"] = 9500, ["YEAR"] = 4400, ["YYYY_beginnings_or_endings_category_header"] = 3900, ["YYYY_beginnings_or_endings_category_header/core"] = 3900, ["YYYY_in_nationality_sport_category_header"] = 9400, ["YYYY_in_nationality_sport_category_header/inner_core"] = 9400, ["YYYY_in_nationality_sport_category_header/outer_core"] = 9400, ["Year"] = 4000, ["YearInCountryPortalBox"] = 85000, ["YearInCountryPortalBox/make"] = 85000, ["YearInCountryPortalBox/parse"] = 85000, ["YearParamUsageCheck"] = 16000, ["YearParamUsageCheck/core"] = 16000, ["Year_article"] = 6500, ["Year_box"] = 2100, ["Year_box/core"] = 2100, ["Year_box/outer_core"] = 2100, ["Year_by_category"] = 16000, ["Year_by_category/core"] = 16000, ["Year_category"] = 2900, ["Year_category_name"] = 2400, ["Year_category_name/AD_year"] = 2400, ["Year_in_Europe"] = 5200, ["Year_in_Europe/expr"] = 5200, ["Year_in_US_state_category"] = 9300, ["Year_in_US_state_category/core"] = 9300, ["Year_in_continent/expr"] = 6900, ["Year_in_continent/link"] = 6900, ["Year_in_continent_category"] = 3800, ["Year_in_continent_category/core"] = 3800, ["Year_in_country_category"] = 37000, ["Year_in_country_category/inner_core"] = 37000, ["Year_in_country_category/outer_core"] = 37000, ["Year_in_football"] = 2100, ["Year_in_nationality_television_category"] = 2900, ["Year_in_nationality_television_category/core"] = 2900, ["Year_in_region"] = 10000, ["Year_in_region/link"] = 10000, ["Year_in_various_calendars"] = 2800, ["Year_nationality_television_series_debuts_or_endings_category"] = 4400, ["Year_nationality_television_series_debuts_or_endings_category/core"] = 4400, ["Year_nav"] = 2800, ["Year_nav_topic5"] = 6900, ["YearsProject"] = 3700, ["Years_or_months_ago"] = 47000, ["Yel"] = 12000, ["Yes"] = 7600, ["Yes2"] = 7600, ["YesNo-Yes"] = 57000, ["Yesno"] = 11900000, ["Yesno-no"] = 1340000, ["Yesno-yes"] = 514000, ["Yo"] = 9900, ["You've_got_mail"] = 9300, ["YouTube"] = 46000, ["Youtube"] = 7500, ["Yy"] = 10000, ["Yycat"] = 2700, ["Yyend"] = 10000, ["Yytop"] = 10000, ["Module:Year_in_various_calendars"] = 2800, ["Module:Yesno"] = 22600000, } 7qffxbpm5d5rr8igikxpbdarm9es08t Module:Trim quotes 828 1628 4904 4903 2020-10-11T05:39:05Z Chrisb 1 1 revision imported 4903 Scribunto text/plain local p = {} function p._trim(s) if s then if s:match([[^(['"]).*%1$]]) then return p._trim(string.sub(s,2,-2)) else return s end else return "" end end function p.trim(frame) local s = (frame.args['s'] or frame.args[1]) or (frame:getParent().args['s'] or frame:getParent().args[1]) return p._trim(s) end return p s3q0pg1nqmwo84ax2ivegivqa64dwfk Module:Unsubst 828 1321 2874 2873 2020-09-29T19:18:22Z Chrisb 1 1 revision imported 2873 Scribunto text/plain local checkType = require('libraryUtil').checkType local p = {} local BODY_PARAM = '$B' local specialParams = { ['$params'] = 'parameter list', ['$aliases'] = 'parameter aliases', ['$flags'] = 'flags', ['$B'] = 'template content' } function p.main(frame, body) -- If we are substing, this function returns a template invocation, and if -- not, it returns the template body. The template body can be specified in -- the body parameter, or in the template parameter defined in the -- BODY_PARAM variable. This function can be called from Lua or from -- #invoke. -- Return the template body if we aren't substing. if not mw.isSubsting() then if body ~= nil then return body elseif frame.args[BODY_PARAM] ~= nil then return frame.args[BODY_PARAM] else error(string.format( "no template content specified (use parameter '%s' from #invoke)", BODY_PARAM ), 2) end end -- Sanity check for the frame object. if type(frame) ~= 'table' or type(frame.getParent) ~= 'function' or not frame:getParent() then error( "argument #1 to 'main' must be a frame object with a parent " .. "frame available", 2 ) end -- Find the invocation name. local mTemplateInvocation = require('Module:Template invocation') local name = mTemplateInvocation.name(frame:getParent():getTitle()) -- Combine passed args with passed defaults local args = {} if string.find( ','..(frame.args['$flags'] or '')..',', ',%s*override%s*,' ) then for k, v in pairs( frame:getParent().args ) do args[k] = v end for k, v in pairs( frame.args ) do if not specialParams[k] then if v == '__DATE__' then v = mw.getContentLanguage():formatDate( 'F Y' ) end args[k] = v end end else for k, v in pairs( frame.args ) do if not specialParams[k] then if v == '__DATE__' then v = mw.getContentLanguage():formatDate( 'F Y' ) end args[k] = v end end for k, v in pairs( frame:getParent().args ) do args[k] = v end end -- Trim parameters, if not specified otherwise if not string.find( ','..(frame.args['$flags'] or '')..',', ',%s*keep%-whitespace%s*,' ) then for k, v in pairs( args ) do args[k] = mw.ustring.match(v, '^%s*(.*)%s*$') or '' end end -- Pull information from parameter aliases local aliases = {} if frame.args['$aliases'] then local list = mw.text.split( frame.args['$aliases'], '%s*,%s*' ) for k, v in ipairs( list ) do local tmp = mw.text.split( v, '%s*>%s*' ) aliases[tonumber(mw.ustring.match(tmp[1], '^[1-9][0-9]*$')) or tmp[1]] = ((tonumber(mw.ustring.match(tmp[2], '^[1-9][0-9]*$'))) or tmp[2]) end end for k, v in pairs( aliases ) do if args[k] and ( not args[v] or args[v] == '' ) then args[v] = args[k] end args[k] = nil end -- Remove empty parameters, if specified if string.find( ','..(frame.args['$flags'] or '')..',', ',%s*remove%-empty%s*,' ) then local tmp = 0 for k, v in ipairs( args ) do if v ~= '' or ( args[k+1] and args[k+1] ~= '' ) or ( args[k+2] and args[k+2] ~= '' ) then tmp = k else break end end for k, v in pairs( args ) do if v == '' then if not (type(k) == 'number' and k < tmp) then args[k] = nil end end end end -- Order parameters if frame.args['$params'] then local params, tmp = mw.text.split( frame.args['$params'], '%s*,%s*' ), {} for k, v in ipairs(params) do v = tonumber(mw.ustring.match(v, '^[1-9][0-9]*$')) or v if args[v] then tmp[v], args[v] = args[v], nil end end for k, v in pairs(args) do tmp[k], args[k] = args[k], nil end args = tmp end return mTemplateInvocation.invocation(name, args) end p[''] = p.main -- For backwards compatibility return p dnfbu3ol9y1rn4f58ap519pwafevpgq Module:Yesno 828 872 1976 1975 2020-09-29T19:15:36Z Chrisb 1 1 revision imported 1975 Scribunto text/plain -- Function allowing for consistent treatment of boolean-like wikitext input. -- It works similarly to the template {{yesno}}. return function (val, default) -- If your wiki uses non-ascii characters for any of "yes", "no", etc., you -- should replace "val:lower()" with "mw.ustring.lower(val)" in the -- following line. val = type(val) == 'string' and val:lower() or val if val == nil then return nil elseif val == true or val == 'yes' or val == 'y' or val == 'true' or val == 't' or val == 'on' or tonumber(val) == 1 then return true elseif val == false or val == 'no' or val == 'n' or val == 'false' or val == 'f' or val == 'off' or tonumber(val) == 0 then return false else return default end end swdskn7svew8i9wuydn9uj5l3r2ghcs Module:Yesno/doc 828 912 2056 2055 2020-09-29T19:15:47Z Chrisb 1 1 revision imported 2055 wikitext text/x-wiki {{High-use|all-pages = yes}} {{used in system}} {{Module rating|protected}} This module provides a consistent interface for processing boolean or boolean-style string input. While Lua allows the <code>true</code> and <code>false</code> boolean values, wikicode templates can only express boolean values through strings such as "yes", "no", etc. This module processes these kinds of strings and turns them into boolean input for Lua to process. It also returns <code>nil</code> values as <code>nil</code>, to allow for distinctions between <code>nil</code> and <code>false</code>. The module also accepts other Lua structures as input, i.e. booleans, numbers, tables, and functions. If it is passed input that it does not recognise as boolean or <code>nil</code>, it is possible to specify a default value to return. == Syntax == <syntaxhighlight lang="lua">yesno(value, default)</syntaxhighlight> <code>value</code> is the value to be tested. Boolean input or boolean-style input (see below) always evaluates to either <code>true</code> or <code>false</code>, and <code>nil</code> always evaluates to <code>nil</code>. Other values evaluate to <code>default</code>. == Usage == First, load the module. Note that it can only be loaded from other Lua modules, not from normal wiki pages. For normal wiki pages you can use {{tl|yesno}} instead. <syntaxhighlight lang="lua"> local yesno = require('Module:Yesno') </syntaxhighlight> Some input values always return <code>true</code>, and some always return <code>false</code>. <code>nil</code> values always return <code>nil</code>. <syntaxhighlight lang="lua"> -- These always return true: yesno('yes') yesno('y') yesno('true') yesno('t') yesno('1') yesno(1) yesno(true) -- These always return false: yesno('no') yesno('n') yesno('false') yesno('f') yesno('0') yesno(0) yesno(false) -- A nil value always returns nil: yesno(nil) </syntaxhighlight> String values are converted to lower case before they are matched: <syntaxhighlight lang="lua"> -- These always return true: yesno('Yes') yesno('YES') yesno('yEs') yesno('Y') yesno('tRuE') -- These always return false: yesno('No') yesno('NO') yesno('nO') yesno('N') yesno('fALsE') </syntaxhighlight> You can specify a default value if yesno receives input other than that listed above. If you don't supply a default, the module will return <code>nil</code> for these inputs. <syntaxhighlight lang="lua"> -- These return nil: yesno('foo') yesno({}) yesno(5) yesno(function() return 'This is a function.' end) -- These return true: yesno('foo', true) yesno({}, true) yesno(5, true) yesno(function() return 'This is a function.' end, true) -- These return "bar": yesno('foo', 'bar') yesno({}, 'bar') yesno(5, 'bar') yesno(function() return 'This is a function.' end, 'bar') </syntaxhighlight> Note that the blank string also functions this way: <syntaxhighlight lang="lua"> yesno('') -- Returns nil. yesno('', true) -- Returns true. yesno('', 'bar') -- Returns "bar". </syntaxhighlight> Although the blank string usually evaluates to false in wikitext, it evaluates to true in Lua. This module prefers the Lua behaviour over the wikitext behaviour. If treating the blank string as false is important for your module, you will need to remove blank arguments at an earlier stage of processing.<includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox|| [[Category:Lua metamodules]] }}</includeonly> dhytvcquvmn6g5oi98dlhqfl75cqf8v